PureBytes Links
Trading Reference Links
|
Hi Terry
I really want to say thanks for taking the time to compose this detailed
reply. I realize it must have taken you a while.
I now understand the basics of what is being attempted here. I too am
unsure if it is doing what it is meant to do since I am not getting
results which match the expectation given the content of your explanation.
I'll try to get some more insight into this but at the same time I am
going to try to take what you gave me and construct another bit of stop
code to see if I can get it to do what I want.
I just wonder how others deal with this problem since the inbuilt stops
in the Settings--stops window don't deal with it and the ApplyStop
function doesn't deal with it (I tried implementing the stops from the
code level as well); there must be a way of telling AB to act in the way
I want. I cannot believe that this can't be done in this software.
For those who don't want to scroll all the way through to figure out
what I am referring to, it's easy - my trailing 'percent of profit'
stops are kicking in when a position goes even $0.05 profitable and I am
subsequently taken out if the trade gives back eve a tiny amount (i.e.
if it retraces $0.02 I am stopped out). How do you let a trade 'breathe
a bit' in the beginning? How do you implement a trailing 'percent of
profit' stop that only kicks in after a trade gets past a certain
threshold of profitability?
Thanks, Nikku
Terry wrote:
> Here's what it says in plain English (English following each line of code
> with no > in front of the English part):
>
> > /* a sample low-level implementation of trailing stop in AFL: */
> > Short = your rule here
> >
> >
> > trailstop =0;
> First set the entire array called trailstop to 0.
> This means all bars for all of your data.
>
> > for( i = 1; i < BarCount; i++ )
> Loop through all bars of data one by one (instead of using array function
> which does all bars of data simultaneously).
> > {
> All statements between {} pairs go with the loop
>
> > if( trailstop == 0 && Short[ i ] ) trailstop = High[ i ];
> If trailstop is set to 0, which it is, AND IF we are Short set
> trailstop to
> the High of the day so it has room to move against you.
>
> > if( trailstop > 0 AND High[ i ] > trailstop )
> Now test to see if the trailstop is > zero, which it will be since we just
> set it to the High of the day AND the current High > trailstop, which it
> can't be because we just set it == the High
> > {
> If the test was True, which it can't be because we just forced the
> trailstop
> to be equal to the High, then
> > Cover[ i ] = True;
> set Cover to True so we exit.
> > CoverPrice[ i ] = trailstop;
> Set CoverPrice = trailstop (which was equal to the High)
> > trailstop= 0;
> Re-zero the trailstop value. This makes the trailstop variable appear
> to be
> numeric, but I think it must be an array??
> > }
> > else Cover[ i ] = 0;
> If the test above was False, then set Cover = False (same as = 0)
>
> > if( trailstop > 0 )
> Now, if tne trailstop is still set to the high, then set the trailstop
> equal
> to the lower of yesterday's high or today's high (since trailstop =
> today's
> high)
> > {
> > trailstop = Min( High[ i - 1 ], trailstop );
> > }
> Previous set of {} are unnecessary since there's only a single statement.
>
> > }
> Matching } to beginning of loop.
>
> So, now that I wrote the English version, I question (would need to test)
> the logic. It seems that the stop will never be hit since the stop is
> set to
> the high of the day and then it tests to see if the stop has been
> exceeded,
> but I don't see how that's ever possible. Second observation is, in my
> experience, when you set a variable as in the very first statement, this
> becomes an array variable. This may be an exception because there are many
> reserved variables in AB. I don't know where the "list" of these variables
> is, if there is a list. Thus, it could be a single numeric variable if it
> has been predefined by AB somewhere.
>
> I always hate to doubt the AB boys. They are nearly ALWAYS right! If
> Marcin
> is reading, maybe he can clarify these points.
> --
> Terry
>
> > From: nikku <nikku@xxxxxxxxxxxx>
> > Reply-To: amibroker@xxxxxxxxxxxxxxx
> > Date: Mon, 06 Dec 2004 23:50:49 -0500
> > To: amibroker@xxxxxxxxxxxxxxx
> > Subject: [amibroker] request for help with trailing stops
> >
> >
> > Hi all
> >
> > I hope someone can help me out with my trailing stops problem. Now that
> > I have purchased the s/w I can backtest multiple securities. However,
> > when I backtest trying to use the 'percent of profit' type stops, I have
> > a problem. Let's say I short MMM at the open at 50.00, with a trailing
> > 'percent of profit' stop of 20%. If MMM trades down to 49.80 by days
> > end, all is well. However, if it opens at 49.90 the next day, I am
> > stopped out because $0.10 is 50% of my total profit which is $0.20.
> >
> > I asked Marcin for some help with this and he sent me the following
> > code. I am not sure if he meant this as a fix for my specific problem or
> > not. The trouble is... and I am sorry about this... the following
> > doesn't mean much to me, being a total AFL newbie.
> >
> > Can anyone review the following and either give me a plain English idea
> > of what it says or simply re-read the above and suggest a way that I can
> > tell AB that I want to give my trades a bit of 'room to breathe' and
> > that even if a trade goes immediately positive, then backs up and maybe
> > even goes slightly negative, that I want to stay in? I can envision
> > using an n-bars stop, but how can I tell AB to not allow the 'percent of
> > profit' stop to kick in until xx actual profit has been made (a
> > threshold large enough that I am not taken out prematurely)?
> >
> > Yes, I have read all the helps re: trailing stops and if someone can
> > show me where this specific issue is addressed, I would welcome it.
> >
> > I wish I could offer more (or more accurately, anything at all) in
> > return for the help... maybe someday.
> >
> > Regards, Nikku
>
>
>
> Check AmiBroker web page at:
> http://www.amibroker.com/
>
> Check group FAQ at:
> http://groups.yahoo.com/group/amibroker/files/groupfaq.html
>
>
> *Yahoo! Groups Sponsor*
> ADVERTISEMENT
> <http://us.ard.yahoo.com/SIG=1297o32hl/M=294855.5468653.6549235.3001176/D=groups/S=1705632198:HM/EXP=1102483308/A=2455396/R=0/SIG=119u9qmi7/*http://smallbusiness.yahoo.com/domains/>
>
>
>
> *Yahoo! Groups Links*
>
> * To visit your group on the web, go to:
> http://groups.yahoo.com/group/amibroker/
>
> * To unsubscribe from this group, send an email to:
> amibroker-unsubscribe@xxxxxxxxxxxxxxx
> <mailto:amibroker-unsubscribe@xxxxxxxxxxxxxxx?subject=Unsubscribe>
>
> * Your use of Yahoo! Groups is subject to the Yahoo! Terms of
> Service <http://docs.yahoo.com/info/terms/>.
>
>
--
The majority meet with failure because of their lack of persistence in creating new plans to take the place of those which fail.
------------------------ Yahoo! Groups Sponsor --------------------~-->
Make a clean sweep of pop-up ads. Yahoo! Companion Toolbar.
Now with Pop-Up Blocker. Get it for free!
http://us.click.yahoo.com/L5YrjA/eSIIAA/yQLSAA/GHeqlB/TM
--------------------------------------------------------------------~->
Check AmiBroker web page at:
http://www.amibroker.com/
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/amibroker/
<*> 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/
|