PureBytes Links
Trading Reference Links
|
Hello everyone,
I hope that there is a few kind individuals out there that could have a
look at this code I am using as an replacement for the ApplyStop()
function, which I cannot use in my real time strategy. It is a Trailing
Stop and a Stop-Loss built into one loop. The source of the main code is
from the AmiBroker site, which I have then modified to suit my needs
(added ATR() etc). There is something wrong with it since the results
compared to ApplyStop() is very different (much worse that is). Also the
Sell signal doesn't plot for some reason. I have been staring myself
blind on this one, so any help is appreciated.
Cheers!
/************ Code starts here ***************/
trailstop = 0;
priceatbuy = 0;
priceatshort = 0;
Sum1 = Sum2 = 0;
for( i = 1; i < BarCount; i++ )
{
// Calculate ATR inline using EMA (instead of Wilder's MA)
tr[i] = Max(H[i] - L[i], Max(H[i] - C[i-1], C[i-1] - L[i]));
// 34 bar EMA of True Range
fac = 2.0 / (1.0 + 34);
sum1 += (fac * (tr[i] - sum1));
sum2 += (fac * (1.0 - sum2));
etr[i] = Nz(sum1 / sum2);
// Trailing Stop
if( trailstop == 0 AND Buy[ i ] )
{
trailstop = High[ i ] - longstop * etr[i];
}
else Buy[ i ] = 0; // remove excess buy signals
if( trailstop == 0 AND Short[ i ] )
{
trailstop = Low[ i ] + shortstop * etr[i];
}
else Short[ i ] = 0; // remove excess short signals
if( trailstop > 0 AND Low[ i ] < trailstop )
{
Sell[ i ] = 1;
SellPrice[ i ] = trailstop;
trailstop = 0;
}
if( trailstop > 0 AND High[ i ] > trailstop )
{
Cover[ i ] = 1;
CoverPrice[ i ] = trailstop;
trailstop = 0;
}
// Stoploss
if( priceatbuy == 0 AND Buy[ i ] ) priceatbuy = BuyPrice[ i ];
if( priceatshort == 0 AND Short[ i ] ) priceatshort = ShortPrice[ i
];
if( priceatbuy > 0 AND SellPrice[ i ] < (priceatbuy - stopLevel *
etr[i]))
{
Sell[ i ] = 1;
SellPrice[ i ] = priceatbuy - stopLevel * etr[i];
priceatbuy = 0;
}
else Sell[ i ] = 0;
if( priceatshort > 0 AND CoverPrice[ i ] > (priceatbuy + stopLevel *
etr[i]))
{
Cover[ i ] = 1;
CoverPrice[ i ] = priceatshort + stopLevel * etr[i];
priceatshort = 0;
}
else Cover[ i ] = 0;
}
// Plot Entries and Exits
Plot(C, "Price", 1, styleCandle);
PlotShapes(Buy*shapeUpArrow,colorGreen,0,Low);
PlotShapes(Sell*shapeHollowDownArrow,colorRed,0,High);
PlotShapes(Cover*shapeHollowUpArrow,colorGreen,0,Low);
PlotShapes(Short*shapeDownArrow,colorRed,0,High);
------------------------------------
**** 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/
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:
mailto:amibroker-digest@xxxxxxxxxxxxxxx
mailto:amibroker-fullfeatured@xxxxxxxxxxxxxxx
<*> To unsubscribe from this group, send an email to:
amibroker-unsubscribe@xxxxxxxxxxxxxxx
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
|