PDA

View Full Version : trailing atr exit


richterm
20th March 2004, 10:30 AM
Whee can I find information about ExtFml("TradeSim.TrailingStop", as it does not appear on my user manual
martin richter

David Samborsky
22nd March 2004, 02:22 AM
Goto http://www.compuvision.com.au/DownloadTradeSim.htm and download Document AN-2.

Jose
2nd April 2004, 11:25 PM
Martin, here is a couple of TradeSim trailing stop chart indicators.
Experiment with the user inputs.

jose '-)


MetaStock -> Tools -> Indicator Builder -> New
Copy and paste two indicators below.

========================
Trailing Stop - TradeSim
========================
---8<---------------------------

{Triggers: Long (+1) & Short (-1) signals at
crossover of user-defined trailing stops}
{Plot on price chart}
{x23 faster than MetaStock's 4-PREV version}
{TradeSim.dll must be in
...\MetaStock\External Function DLLs\ folder}
{©Copyright 2003-2004 Jose Silva}

buffer:=Input("buffer % trailing stop",0,100,8);
plot:=Input("plot: trailing stop=1, Long+Short=2, signals=3",1,3,1);
adv:=Input("plot: today's trailing stop=0, tomorrow's stop=1",0,1,0);
delay:=Input("Entry and Exit signal delay",
0,5,0);

Volatility:=C*buffer/100;
stopLong:=ExtFml("TradeSim.TrailingStop",
BAND, {mode: band or trigger}
LONG, {long or short}
Volatility, {user defined see variable above}
CLOSE, {RefPoint for stop calc}
CLOSE); {threshold - stop breached}
stopShort:=ExtFml("TradeSim.TrailingStop",
BAND,SHORT,Volatility,C,C);

In:=Cross(C,Ref(stopShort,-1));
Out:=Cross(Ref(stopLong,-1),C);
Init:=Cum(In+Out>-1)=1;
InInit:=Cum(In)=1;
flag:=BarsSince(Init OR In)
< BarsSince(Init OR Out)+InInit;
signals:=Ref((InInit AND Alert(InInit=0,2)
OR flag AND Alert(flag=0,2))
+(flag=0 AND Alert(flag,2))*-1,-delay);
stop:=Ref(If(flag=1,stopLong,stopShort),-1+adv);

If(plot=1,stop,
If(plot=2,Ref(stopLong,-1+adv),0));
If(plot=1,stop,
If(plot=2,Ref(stopShort,-1+adv),signals))

---8<---------------------------


==============================
Trailing Stop - ATR - TradeSim
==============================
---8<---------------------------

{Triggers: Long (+1) & Short (-1) signals at
crossover of user-defined trailing stops}
{Plot on price chart}
{x23 faster than MetaStock's 4-PREV version}
{TradeSim.dll must be in
...\MetaStock\External Function DLLs\ folder}
{©Copyright 2003 Jose Silva}

pds:=Input("ATR periods",1,252,10);
multi:=Input("ATR multiplier",0,10,2.5);
plot:=Input("plot: trailing stop=1, Long+Short=2, signals=3",1,3,1);
adv:=Input("plot: today's trailing stop=0, tomorrow's stop=1",0,1,0);
delay:=Input("Entry and Exit signal delay",
0,5,0);

stopLong:=ExtFml("TradeSim.TrailingStop",
BAND,LONG,multi*ATR(pds),C,C);

stopShort:=ExtFml("TradeSim.TrailingStop",
BAND,SHORT,multi*ATR(pds),C,C);

In:=Cross(C,Ref(stopShort,-1));
Out:=Cross(Ref(stopLong,-1),C);
Init:=Cum(In+Out>-1)=1;
InInit:=Cum(In)=1;
flag:=BarsSince(Init OR In)
< BarsSince(Init OR Out)+InInit;
signals:=Ref((InInit AND Alert(InInit=0,2)
OR flag AND Alert(flag=0,2))
+(flag=0 AND Alert(flag,2))*-1,-delay);
stop:=Ref(If(flag=1,stopLong,stopShort),-1+adv);

If(plot=1,stop,
If(plot=2,Ref(stopLong,-1+adv),0));
If(plot=1,stop,
If(plot=2,Ref(stopShort,-1+adv),signals))

---8<---------------------------

Jose
2nd April 2004, 11:28 PM
Oops, code got munched by the smilies. :roll:
Try again:

MetaStock -> Tools -> Indicator Builder -> New
Copy and paste two indicators below.


========================
Trailing Stop - TradeSim
========================
---8<---------------------------

&#123;Triggers&#58; Long &#40;+1&#41; & Short &#40;-1&#41; signals at
crossover of user-defined trailing stops&#125;
&#123;Plot on price chart&#125;
&#123;x23 faster than MetaStock's 4-PREV version&#125;
&#123;TradeSim.dll must be in
...\MetaStock\External Function DLLs\ folder&#125;
&#123;©Copyright 2003-2004 Jose Silva&#125;

buffer&#58;=Input&#40;"buffer % trailing stop",0,100,8&#41;;
plot&#58;=Input&#40;"plot&#58; trailing stop=1, Long+Short=2, signals=3",1,3,1&#41;;
adv&#58;=Input&#40;"plot&#58; today's trailing stop=0, tomorrow's stop=1",0,1,0&#41;;
delay&#58;=Input&#40;"Entry and Exit signal delay",
0,5,0&#41;;

Volatility&#58;=C*buffer/100;
stopLong&#58;=ExtFml&#40;"TradeSim.TrailingStop",
BAND, &#123;mode&#58; band or trigger&#125;
LONG, &#123;long or short&#125;
Volatility, &#123;user defined see variable above&#125;
CLOSE, &#123;RefPoint for stop calc&#125;
CLOSE&#41;; &#123;threshold - stop breached&#125;
stopShort&#58;=ExtFml&#40;"TradeSim.TrailingStop",
BAND,SHORT,Volatility,C,C&#41;;

In&#58;=Cross&#40;C,Ref&#40;stopShort,-1&#41;&#41;;
Out&#58;=Cross&#40;Ref&#40;stopLong,-1&#41;,C&#41;;
Init&#58;=Cum&#40;In+Out>-1&#41;=1;
InInit&#58;=Cum&#40;In&#41;=1;
flag&#58;=BarsSince&#40;Init OR In&#41;
< BarsSince&#40;Init OR Out&#41;+InInit;
signals&#58;=Ref&#40;&#40;InInit AND Alert&#40;InInit=0,2&#41;
OR flag AND Alert&#40;flag=0,2&#41;&#41;
+&#40;flag=0 AND Alert&#40;flag,2&#41;&#41;*-1,-delay&#41;;
stop&#58;=Ref&#40;If&#40;flag=1,stopLong,stopShort&#41;,-1+adv&#41;;

If&#40;plot=1,stop,
If&#40;plot=2,Ref&#40;stopLong,-1+adv&#41;,0&#41;&#41;;
If&#40;plot=1,stop,
If&#40;plot=2,Ref&#40;stopShort,-1+adv&#41;,signals&#41;&#41;

---8<---------------------------


==============================
Trailing Stop - ATR - TradeSim
==============================
---8<---------------------------

&#123;Triggers&#58; Long &#40;+1&#41; & Short &#40;-1&#41; signals at
crossover of user-defined trailing stops&#125;
&#123;Plot on price chart&#125;
&#123;x23 faster than MetaStock's 4-PREV version&#125;
&#123;TradeSim.dll must be in
...\MetaStock\External Function DLLs\ folder&#125;
&#123;©Copyright 2003 Jose Silva&#125;

pds&#58;=Input&#40;"ATR periods",1,252,10&#41;;
multi&#58;=Input&#40;"ATR multiplier",0,10,2.5&#41;;
plot&#58;=Input&#40;"plot&#58; trailing stop=1, Long+Short=2, signals=3",1,3,1&#41;;
adv&#58;=Input&#40;"plot&#58; today's trailing stop=0, tomorrow's stop=1",0,1,0&#41;;
delay&#58;=Input&#40;"Entry and Exit signal delay",
0,5,0&#41;;

stopLong&#58;=ExtFml&#40;"TradeSim.TrailingStop",
BAND,LONG,multi*ATR&#40;pds&#41;,C,C&#41;;

stopShort&#58;=ExtFml&#40;"TradeSim.TrailingStop",
BAND,SHORT,multi*ATR&#40;pds&#41;,C,C&#41;;

In&#58;=Cross&#40;C,Ref&#40;stopShort,-1&#41;&#41;;
Out&#58;=Cross&#40;Ref&#40;stopLong,-1&#41;,C&#41;;
Init&#58;=Cum&#40;In+Out>-1&#41;=1;
InInit&#58;=Cum&#40;In&#41;=1;
flag&#58;=BarsSince&#40;Init OR In&#41;
< BarsSince&#40;Init OR Out&#41;+InInit;
signals&#58;=Ref&#40;&#40;InInit AND Alert&#40;InInit=0,2&#41;
OR flag AND Alert&#40;flag=0,2&#41;&#41;
+&#40;flag=0 AND Alert&#40;flag,2&#41;&#41;*-1,-delay&#41;;
stop&#58;=Ref&#40;If&#40;flag=1,stopLong,stopShort&#41;,-1+adv&#41;;

If&#40;plot=1,stop,
If&#40;plot=2,Ref&#40;stopLong,-1+adv&#41;,0&#41;&#41;;
If&#40;plot=1,stop,
If&#40;plot=2,Ref&#40;stopShort,-1+adv&#41;,signals&#41;&#41;

---8<---------------------------
:roll: :roll: