Hi Rasheed,
OK, well I've studied all 8 of the attached charts and
still can not discern exactly what you wish for your buy and sell conditions
other than an apparent crossing of the L1 or H1 levels. It appears that
for a buy you want the open to be above L1 and the close below, and for a sell
the open should be below and the close above the H1 level. Unfortunately, I do
not have the same stock data that you have so I am unable to create the same
charts as you to develop code that replicates your pictures.
As an aside, I would share the following observation: as
a trading system, I think this will have serious drawdowns -- your AFRIBANK
would have a drawdown of ~ 35% between entry early Nov and mid Nov and still not
back to a sell level which would only be for a ~20% gain; not a very good risk
reward ratio. And of course during that time your monies are tied up and
you have lost other opportunities to trade profitably. Your other examples are
not quite so extreme in reality, but all share that potential drawdown issue.
Perhaps the buy should be crossing from under the L1
and the sell crossing from above the H1 levels, i.e. crosses from outside the
range defined by L1 and H1 -- just a suggestion.
This is a good opportunity for you to start to learn how
to code a simple system. I've given you most of the code you need, now you
only have to redefine the buy and sell conditions. Study the following
which you may substitute in the existing code:
// ======================= Exploration and Signal Code
=================
TRIGGER = ParamToggle("Trigger " ,"Inside|Outside") ;
XH1 = ( ( H > H1)
AND Cross(C, H1) ) OR (H== H1 AND C < H1) ; // inside sell
XL1 = ( ( L < L1 )
AND Cross(L1, C) ) OR (L == L1 AND C> L1); // inside buy
XH2 = ((H > H1)
AND Cross( H1, C)) OR (H== H1 AND C < H1) ; // outside sell
XL2 = ((L < L1)
AND Cross( C, L1)) OR (L == L1 AND C> L1) ; // outside buy
XL3 = Ref(C,-1) > L1 AND Cross(L1,C) ; // STOP
LOSS ON BUY
if ( TRIGGER == 0)
{
Sell = XH1 ;
Buy = XL1 ;
}
else
{
Sell = XH2 OR XL3;
Buy = XL2 ;
}
TradeDisplay = ParamToggle("Remove Extra Trades?", "No|Yes", 1);
if (TradeDisplay == 0)
{ }
else
{
Buy = ExRem(Buy,Sell); Sell = ExRem(Sell,Buy); //
THIS WILL REMOVE EXCESS SIGNALS ON A CHART OR IN AN EXPLORATION
}
Filter = Buy OR Sell;
What this replacement code will do
when set to Inside is attempt to replicate the Buy & Sell conditions which I
think your charts depict. When set to Outside, it will use the suggested
change I made above plus apply a stop loss when the price falls back under
L1 after a buy. It also sets the display to remove excess signals as the
default. If you can further define the price
action for your buy or sell conditions, improvements may be possible. Good
luck and let us know how you do with this version.
Peace and Justice ---
Patrick
----- Original Message -----
Sent: Sunday, January 31, 2010 12:30
PM
Subject: Re: [amibroker] REALLY NEED HELP
ON BREAKOUT FORMULA [8 Attachments]
wow patrick. thanks for everything. my major problem is I
don't know how to write an AFL Formula. But if I see a good one I go for
it. I have attached more charts & hope this might help.
Our market moves 5% max up or down daily, I made the LOOKBACK &
SHIFT narrow because I wanted to catch those fast rallies, buying when
prices hit support L1 & selling when it hits H1. --- On
Sat, 1/30/10, NW Trader <ta4charts@xxxxxxxxxxx>
wrote:
From:
NW Trader <ta4charts@xxxxxxxxxxx> Subject: Re: [amibroker]
REALLY NEED HELP ON BREAKOUT FORMULA To:
amibroker@xxxxxxxxxxxxxxx Date: Saturday, January 30, 2010, 6:27
PM
Hi Rasheed,
Sorry that I didn't understand you. Yes,
for me breakout has a definite connotation -- meaning that a stock
hits a resistance (or support) level and proceeds through it to
establish a new trading range or the breakout is said to fail
(although a wider trading range may be now established) . I
think what you are describing is a reversal at resistance (or
support). In order to code this correctly, please examine the
behavior of a number of stocks at resistance or support and then write
a concise description of their common price action at those
levels. The attachment you sent is not sufficient for me to
develop this as it appears that in some cases price penetrates the H1
or L1 level before falling back the following day, other times it
touches but doesn't close beyond the level.
As a first hack to solve your request, I
simply reversed the buy and sell conditions, however that led to some
disastrous trades when a stock would actually breakout (i.e., continue
well beyond the H1 or L1 level) not reverse. So that isn't the
solution. Perhaps having a violation of the level followed
the next day (or within X days) a reversal back across the level would
be a workable solution. Ponder on that or other variants and be
sensitive not to curve fit a piece of code to one stock your chart of
NEM makes for a nice idea, but how many other stocks have been in a
consolidation range of about 5% +/- for 6 months?
Heading out for a movie now, but will be back
later.
Peace and Justice --- Patrick
----- Original Message -----
Sent: Saturday, January 30,
2010 5:31 PM
Subject: Re: [amibroker] REALLY
NEED HELP ON BREAKOUT FORMULA [1 Attachment]
Hi Patrick
I really really appreciate the time spent on this
formula. I tested it & feel its not what i was looking
for. please view my attachment for ideas. I think the problem
is the word "BREAKOUT", i wanted a buy signal when prices hit
the down(L) & SELL Signal when price hits (H)lines and
also a column identifying their various support &
resistant levels.
Below are columns needed.
=ticker=date/ time=industry sector=last= action=""
resistant H1=support L1.
I will appreciate if these
criteria's are met.
thanks patrick
Rasheed.
--- On Sat, 1/30/10, NW Trader
<ta4charts@xxxxxxxx net> wrote:
From: NW
Trader <ta4charts@xxxxxxxx net> Subject: Re:
[amibroker] REALLY NEED HELP ON BREAKOUT FORMULA [1
Attachment] To: amibroker@xxxxxxxxx ps.com Date:
Saturday, January 30, 2010, 3:14 PM
Hi Rasheed,
My apologies for taking so long to
finish this up for you. Some other commitments
got in the way of what really was not too hard a
project. Anyway, I've tweaked the output a little so
you can select between either the close crossing either the
H1 or L1 line or the high or low crossing those lines to
generate a buy or sell signal. Otherwise the signals
are as you requested. Code is both attached (probably safer
as won't introduce line breaks in copying) and written
below.
I didn't code for short and cover as
you didn't give me rules you wanted to
implement. Personally I would not use a stop and
reverse system with the defined buy and sell signals.
I think you would get better results if a sell was initiated
when the close crosses under H1 after a buy when going above
H1, and a cover when the close crosses above the L1
after a short when the close went under L1. But I've
not tested this, and it's just a feeling from looking some
charts.
I've added trade signal arrows on
the chart (again based on the parameter selected) as well as
a param to remove excess trade signals. I also added the VAP
indicator as I think it helpful to see possible support or
resistance at a breakout.
Hope this is what you were looking
for.
Peace and Justice ---
Patrick
//
RASHEED'S BREAKOUTS
//
help requested for adding an exploration for End of
Day breakouts
/*
coded by NW Trader 1-29-10
with exploration, chart signals and chart options
toggle parameter to select between C or H & L for
the breakout crossings
toggle parameter added to remove extra trade
signals
Volume at price added
*/
_SECTION_BEGIN("BREAK
OUTS");
//
============ == Standard Chart Code ============
========= =======
CodeName
= "Rasheed's
Breakouts"
;
SetFormulaName("Rasheed's
Breakouts"
);
//
------------ --- Controls for
Chart Display ------------ ---------
--------- ----
SetChartOptions(0,chartShowDates|chartWrapTitle);
if(
ParamToggle("Tooltip
shows",
"All
Values|Only Prices"
) )
{
ToolTip=StrFormat("Open:
%g\nHigh: %g\nLow:
%g\nClose: %g (%.1f%%) \nVolume:
"+NumToStr(
V,
1
), O,
H,
L,
C,
SelectedValue(
ROC(
C,
1
)));
}
space = Param("Space
on Chart",
20,
-15,
50,
1);
GraphXSpace
=
space;
SetChartBkColor(
ParamColor("Background
Color"
, colorLightGrey)
);
//
============ ===== Rasheed's original code (with Lookback
and Shift default set to his specs) ============
=====
H0=H;
L0=L;
C0=C;
O0=O;
Lookback=Param("LookBack",10,10,50,1);
//
Default for interday commodity currency trading
shift=Param("Shift",
5,1,50,1);
//
?
x0=LastValue(Cum(1));
x1=x0-shift;
H=Ref(H,-shift+1);
L=Ref(L,-shift+1);
H1=LastValue(Ref(HHV(H,Lookback),-1));
L1=LastValue(Ref(LLV(L,Lookback),-1));
Plot(H1,"H1",colorYellow);
Plot(L1,"L1",colorYellow);
H=H0;L=L0;C=C0;O=O0;
up=Cross(H,H1)
AND
Cum(1)>x1;
dn=Cross(L1,L)
AND
Cum(1)>x1;
Plot(C,"Close",IIf(Cum(1)>x1-Lookback
AND
Cum(1)<=x1,colorBlue,IIf
(Up,colorBrightGreen,IIf(
Dn,colorRed,colorBlack))),64);
PlotShapes(shapeDownArrow*(Cum(1)==x1+1),colorBlue);
//
============ ========= == Exploration and Signal Code
============ =====
TRIGGER
= ParamToggle("Trigger
"
,"CLOSE|HIGH
OR LOW")
;
XH1
= Cross(C,H1)
;
XL1
= Cross(L1,C);
XH2
= Cross(H,H1);
XL2
= Cross(L1,L);
if(
TRIGGER ==0)
{
Buy
= XH1 ;
Sell
= XL1 ;
}
else
{
Buy
= XH2 ;
Sell
= XL2 ;
}
TradeDisplay
= ParamToggle("Remove
Extra Trades?",
"No|Yes");
if(TradeDisplay
== 0)
{
}
else
{
Buy
= ExRem(Buy,Sell);
Sell
= ExRem(Sell,Buy);
//
THIS WILL REMOVE EXESS SIGNALS ON A CHART OR IN AN
EXPLORATION
}
Filter
= Buy
OR
Sell;
Action
= "">WriteIf(Buy,
"BUY",
WriteIf(
Sell,
"SELL",
"
"
) );
AddTextColumn(IndustryID(1)
,"Industry
Sector ",
30.0,
colorBlue,
colorYellow);
AddColumn(C,
"Last
",2.2,
colorWhite,colorBlue);
AddTextColumn(Action,
"Action",
8.0,
IIf(XH1,
colorDarkGreen,
colorDarkRed),
colorWhite);
AddColumn(
IIf(
XH1, H1 , L1 ) ,
"BREAKOUT
LEVEL",
3.2
,colorYellow,
IIf(XH1,
colorDarkGreen,
colorDarkRed)
);
//
------------ --------- --------- --------- ---------
--------- --------- --------- --------
Arrow signals --- FOR TRADES
------------ --------- --------- --------- ---------
--------- -
PlotShapes(Buy*shapeUpArrow,colorBrightGreen
,0,
L
/*
ENTRY_TRAILARRAY */
, -30);
PlotShapes(Sell*shapeDownArrow,colorLightYellow,0,
H
, -30);
_SECTION_END();
_SECTION_BEGIN("Volume
At Price");
PlotVAPOverlay(
Param("Lines",
1000,
100,
1000,
10
),
Param("Width",
15,
1,
100,
1
),
ParamColor("Color",
colorBlueGrey
),
ParamToggle("Side",
"Left|Right",
1
) | 4*ParamToggle("Z-order",
"On
top|Behind",
1
) );
_SECTION_END();
----- Original Message -----
Sent: Friday, January
29, 2010 1:40 AM
Subject: Re:
[amibroker] REALLY NEED HELP ON BREAKOUT FORMULA [1
Attachment]
Hi Patrick, i use E.O.D I want
the L1 H1 to act as a support & resistant
line. pls find attached tx rasheed
--- On Thu, 1/28/10, NW Trader <ta4charts@xxxxxxxx net>
wrote:
From:
NW Trader <ta4charts@xxxxxxxx
net> Subject: Re: [amibroker] REALLY
NEED HELP ON BREAKOUT FORMULA To: amibroker@xxxxxxxxx
ps.com Date: Thursday, January 28, 2010,
4:09 PM
Hi Rasheed,
What time length do you expect this to run
on? 1 Minute, 15 Min, Hourly, end of day???
Do you want the H1 and L1 levels set by the time
frame selected or some other time frame (like end
of day if you are charting intraday).
How do you define a buy or sell? Is it
to be a cross of the H1 or L1 line?
An exploration that produces the H1 and L1
values for each stock or instrument is easy enough
to code, I just don't know what the answer to the
above questions are and those will determine the
code and solution to your question. I'll be glad
to help in a bit once we know this
information.
Peace and Justice ---
Patrick
-----
Original Message -----
Sent:
Thursday, January 28, 2010 2:33 PM
Subject:
[amibroker] REALLY NEED HELP ON BREAKOUT
FORMULA
hi guys. I need help. I will
like to run a scan/exploration on an AFL titled
"BREAKOUTS". I reduced the parameters to
(lookback= 10) & (Shift=5). I need it to
give me "H1'' & "L1" points prices of each
stocks and perhaps a BUY/SELL within these
regions. Thanks I will really
appreciate.
_SECTION_BEGIN( "BREAK
OUTS"); H0=H;
L0=L;
C0=C;
O0=O;
Lookback=Param(
"LookBack" ,22,10,50, 1); // Default for
interday commodity currency
trading
shift=Param( "Shift",
11,1,50,1);
// ?
x0=LastValue(
Cum(1));
x1=x0-shift;
H=Ref(H,-shift+
1);
L=Ref(L,-shift+
1);
H1=LastValue( Ref(HHV(H, Lookback)
,-1));
L1=LastValue( Ref(LLV(L, Lookback)
,-1));
Plot(H1,"H1" ,colorYellow)
;
Plot(L1,"L1" ,colorYellow)
;
H=H0;L=L0;C=
C0;O=O0;
up=Cross(H,H1) AND
Cum(1)>x1;
dn=Cross(L1, L) AND
Cum(1)>x1;
Plot(C,"Close" ,IIf(Cum(
1)>x1-Lookback AND Cum(1)<=x1,colorBlue,
IIf
(Up,colorBrightGree n,IIf(
Dn,colorRed, colorBlack)
)),64);
PlotShapes(shapeDow nArrow*(Cum(
1)==x1+1) ,colorBlue) ;
_SECTION_END(
);
------------ ---------
--------- ------
**** IMPORTANT PLEASE
READ **** This group is for the discussion
between users only. This is *NOT* technical
support channel.
TO GET TECHNICAL SUPPORT
send an e-mail directly to SUPPORT {at}
amibroker.com
TO SUBMIT SUGGESTIONS
please use FEEDBACK CENTER at http://www.amibroke
r.com/feedback/ (submissions sent via
other channels won't be considered)
For
NEW RELEASE ANNOUNCEMENTS and other news always
check DEVLOG: http://www.amibroke
r.com/devlog/
Yahoo! Groups
Links
<*> To visit your group on
the web, go to: http://groups.
yahoo.com/ group/amibroker/
<*>
Your email settings:
Individual Email | Traditional
<*>
To change settings online go
to: http://groups.
yahoo.com/ group/amibroker/
join (Yahoo! ID
required)
<*> To change settings
via email: amibroker-digest@ yahoogroups.
com amibroker-fullfeatu
red@xxxxxxxxxxxx com
<*> To
unsubscribe from this group, send an email
to: amibroker-unsubscri be@xxxxxxxxxxxx
com
<*> Your use of Yahoo!
Groups is subject to: http://docs.
yahoo.com/
info/terms/
|
|
|
__._,_.___
**** IMPORTANT PLEASE READ ****
This group is for the discussion between users only.
This is *NOT* technical support channel.
TO GET TECHNICAL SUPPORT send an e-mail directly to
SUPPORT {at} amibroker.com
TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
http://www.amibroker.com/feedback/
(submissions sent via other channels won't be considered)
For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/
__,_._,___
|