PureBytes Links
Trading Reference Links
|
Rocou,
The "PREV" has been covered many times in the
past.
It is easy to find in the mailing list
archive
<FONT face=Arial
size=2>http://www.amibroker.com/listarchive.html
Take a look at:
<FONT
face=Arial
size=2>http://groups.yahoo.com/group/amibroker/message/45225
<FONT
face=Arial
size=2>http://groups.yahoo.com/group/amibroker/message/4507
<FONT
face=Arial
size=2>http://groups.yahoo.com/group/amibroker/message/11896
<FONT
face=Arial
size=2>http://groups.yahoo.com/group/amibroker/message/31088
Some of formulas using PREV may be rewritten using
AMA/AMA2
but ALL (I mean *ALL*) of them can be rewritten
using looping
(see <A
href=""><FONT face=Arial
size=2>http://groups.yahoo.com/group/amibroker/message/45225<FONT
face=Arial size=2> )
Specifically your "problem" code:
TrStopLevel:=If(C=PREV, PREV,
If(((Ref(C,-1)<PREV)AND (C<PREV)),
Min(PREV,C*(1+nPips)),If((Ref(C,-1)>PREV)AND (C>PREV),
Max(PREV,C*(1-nPips)),
If(C>PREV,C*(1-nPips),C*(1+nPips)))));
can be rewritten using loop too.
First step is to "UNFOLD" ugly written code to the
form that is easier to read and understand:
TrStopLevel =
If( C = PREV, PREV,
<FONT face="Courier New"
size=2> If( ( (Ref(C,-1) <
PREV) AND (C < PREV) ),
<FONT face="Courier New"
size=2> Min( PREV, C* (1+nPips)
),
<FONT face="Courier New"
size=2> If( (Ref(C,-1) >
PREV) AND ( C > PREV ),
<FONT face="Courier New"
size=2>
Max( PREV, C * (1 - nPips ) ),
<FONT face="Courier New"
size=2>
If( C > PREV, C * (1-nPips), C * (1+nPips) ) ) ) );
Now this can be rewritten using for
loop:
SetBarsRequired<FONT
color=#000000>( 10000,
0 ); nPips =
0.004; <FONT
color=#008000>// define your own value here<FONT
color=#000000> PREV = TrStopLevel = <FONT
color=#000000>C[ <FONT
color=#ff00ff>0 ]; // init
first element <FONT
color=#000000>for( i = <FONT
color=#ff00ff>1; i < <FONT
color=#000000>BarCount; i++ ) {
CurC = C<FONT
color=#000000>[ i ]; // current value of
close PrevC = <FONT
color=#000000>C[ i - <FONT
color=#ff00ff>1 ]; //
previous bar value of close
CurTrStopLevel = <FONT
color=#0000ff>IIf( CurC ==
PREV, PREV,
<FONT
color=#0000ff>IIf( ( (PrevC < PREV) <FONT
color=#000000>AND (CurC < PREV) ),
<FONT
color=#0000ff>Min( PREV, CurC * ( <FONT
color=#ff00ff>1 + nPips) ),
<FONT
color=#0000ff>IIf( ( PrevC > PREV) <FONT
color=#000000>AND ( CurC > PREV
),
<FONT
color=#0000ff>Max( PREV, CurC * (<FONT
color=#ff00ff>1 - nPips ) ),
<FONT
color=#0000ff>IIf( CurC > PREV, CurC * (
1 - nPips), CurC * (
1 + nPips) ) ) ) );
TrStopLevel[ i ] = CurTrStopLevel; <FONT
color=#008000>// store result PREV =
CurTrStopLevel; // save previous value for next
iteration } <FONT
color=#000000>Graph0 = TrStopLevel;
// just for plotting
What I did ?
It is fairly simple:
I have just wrapped the MS code into the for loop,
replaced arrays with scalars
( C replaced with CurC = C[ i ] , Ref( C, -1 )
replaced with PrevC = C[ i - 1 ].
PREV in my code is a temporary variable that holds
previous value of calculation in the loop .
This way I can keep almost entire code as it
was.
Advantage? It runs 100x faster than in Metastock.
Try it - run backtest in MS and in AB and compare times.
Best
regards,Tomasz Janeczkoamibroker.com
----- Original Message -----
From: "rocou" <<A
href=""><FONT face=Arial
size=2>rocou@xxxxxxxxx>
To: <<A
href=""><FONT face=Arial
size=2>amibroker@xxxxxxxxxxxxxxx<FONT face=Arial
size=2>>
Sent: Monday, April 26, 2004 9:51 PM
Subject: [amibroker] Dear Traders, this seems to be
an absolutely amazing ...
<FONT face=Arial
size=2>Dear Traders, this seems to be an absolutely amazing
formulafrom my broker CMS. Sorry if I am getting on your nerves again,
but I really need your help how to EXACTLY translate the formulainto
Amibroker´s AFL for backtesting.The trailing stop is based on a certain
amount of pips ("nPip")that you define , NOT on any kind of ATR/volatility
!!Buy/Sell and Short/Cover signals are generated, if close
valuecrosses the TrailingStoppLevel Line. That is the whole story.You
only have to define the amount of "nPip"´s.The image shows the 15min
chart EURUSD and 15 as the valuefor the nPips parameter.The image is
in folder "Photos" of this group: <A
href=""><FONT
face=Arial
size=2>http://photos.groups.yahoo.com/group/amibroker/vwp?.dir=/&.src=""><FONT
face=Arial
size=2>=Trailing+Stop+System.jpg&.view=t&.done=http%3a//photos.groups.yahoo.com/group/amibroker/lst%3f%26.dir=/%26.src="">26.view=t[/img]I
politely ask all of you to help me EXACTLY translating this formula into AFL
for backtesting/optimizing "nPip" possibilities. I guess it would be a great
chance for all of us to trade witha simple but very effective trading
system.Kindest regardsRobert Here again the formula
from
CMS:___________________________________________________________{Trailing
Stop Loss}TrStopLevel:=If(C=PREV, PREV, If(((Ref(C,-1)<PREV)AND
(C<PREV)), Min(PREV,C*(1+nPips)),If((Ref(C,-1)>PREV)AND (C>PREV),
Max(PREV,C*(1-nPips)),
If(C>PREV,C*(1-nPips),C*(1+nPips)))));{Signal Up and
Down}Up:= Cross(Close,TrStopLevel);Down:=
Cross(TrStopLevel,C);{OpenBuy and CloseBuy}OpenBuy:= Up and
(eventCount('OpenBuy')= eventCount('CloseBuy'));CloseBuy:= Down and
(eventCount('OpenBuy')>eventCount('CloseBuy'));{OpenSell and
CloseSell}OpenSell:= Down and (eventCount('OpenSell')=
eventCount('CloseSell'));CloseSell:= Up and
(eventCount('OpenSell')>eventCount('CloseSell'));___________________________________________________________Send
BUG REPORTS to <FONT face=Arial
size=2>bugs@xxxxxxxxxxxxxSend SUGGESTIONS
to <FONT face=Arial
size=2>suggest@xxxxxxxxxxxxx<FONT face=Arial
size=2>-----------------------------------------Post AmiQuote-related
messages ONLY to: <FONT
face=Arial size=2>amiquote@xxxxxxxxxxxxxxx
(Web page: <A
href=""><FONT face=Arial
size=2>http://groups.yahoo.com/group/amiquote/messages/<FONT
face=Arial size=2>)--------------------------------------------Check
group FAQ at: <A
href=""><FONT
face=Arial
size=2>http://groups.yahoo.com/group/amibroker/files/groupfaq.html<FONT
face=Arial size=2> Yahoo! Groups Links<*> To visit your group
on the web, go to: <A
href=""><FONT face=Arial
size=2>http://groups.yahoo.com/group/amibroker/<FONT
face=Arial size=2><*> To unsubscribe from this group, send an email
to: <A
href=""><FONT face=Arial
size=2>amibroker-unsubscribe@xxxxxxxxxxxxxxx<FONT face=Arial
size=2><*> Your use of Yahoo! Groups is subject
to: <A
href=""><FONT face=Arial
size=2>http://docs.yahoo.com/info/terms/<FONT face=Arial
size=2>
Send BUG REPORTS to bugs@xxxxxxxxxxxxx
Send SUGGESTIONS to suggest@xxxxxxxxxxxxx
-----------------------------------------
Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx
(Web page: http://groups.yahoo.com/group/amiquote/messages/)
--------------------------------------------
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 the Yahoo! Terms of Service.
|