Hello,

Clearly you did not read the manual of Wealth-Lab carefully enough.
check page 240 of their manual and you will read the following:

"The Peak function never "looks ahead" in time, but always returns the Peak value as it would have been determined as of the specified bar. *For this reason, the return value of the Peak function will lag, and report peaks a few bars later than they actually occurred
in hindsight.*"

What they are trying to say is that the peak function DOES look into the future but they internally DELAY the output of their Peak so the last leg of minimum percentage is formed.

Such delay makes it unprofitable but well... that is not mentioned in their manual.

AmiBroker does NOT delay the Peak output as the primary purpose of Peak/Trough and all
Zig-zag family is PATTERN detection and not trading systems.

It makes sense to have delay-free Peak because DELAYED Peak function can not be "undelayed" back.

It is possible and quite easy in fact to create "WL-style" delayed peak by simply delaying AFL's Peak/Trough/Zig zag
and it is presented in detail here:

http://www.amibroker.com/members/traders/11-2003.html

(for more details about that see ZigZag Trend Indicator in Nov 2003 issue of Stocks&Commodities)

Best regards,
Tomasz Janeczko
amibroker.com

On 2010-04-26 01:43, jhnlmn wrote:




Thank you for your response.
In essence, you are saying that I cannot use Tsokakis example
(and many others from the Amibroker and Metastock libraries)
without a significant rewriting.

I am new to Amibroker. I was looking for a good trendline recognition script 
and stumbled on Amibroker. So, I downloaded a trial version to quickly test 
these scripts.

So, I need to decide whether it is worse the effort to rewrite these scripts 
for Amibroker or go back to Wealth-Lab, which I was using before.

I am surprised that PeakBars and TroughBars are looking into the future in 
Amibroker.
It is not the case in WL. These are pretty simple functions - they just need to 
find min or max before a reversal.
Why would Amibroker look into the future in this case?

Now about replacing SelectedValue/LastValue.

I tried to fix "Historical Trendlines and Breakouts" script
by wrapping part of the script in for(i = 0; i<  BarCount; i++) loop and then 
replacing:

...
pS = TroughBars( s1, per, 1 ) == 0;
endt=SelectedValue(ValueWhen( pS, x ,1));
startt=SelectedValue(ValueWhen( pS, x ,2));
dtS =endt-startt;
endS = SelectedValue((ValueWhen( pS, s1,1) ));
startS = SelectedValue(( ValueWhen( pS, s1 ,2)));
aS = (endS-startS)/dtS;bS = endS;
trendlineS = aS * ( x -endt ) + bS;//SUPPORT LINE
...
Plot(IIf(x>=first -d AND x<=Last+d,trendlineS,-
1e10),"Support",colorBrightGreen,1);

by

pS = TroughBars( s1, per, 1 ) == 0;
troughBarIdxLast         = ValueWhen( pS, x ,1);
troughBarIdxBeforeLast   = ValueWhen( pS, x ,2);
troughBarValueLast       = ValueWhen( pS, s1, 1);
troughBarValueBeforeLast = ValueWhen( pS, s1, 2);
...
for(i = startBar; i<  lastBar; i++)
{
     endt= troughBarIdxLast[i];
     startt = troughBarIdxBeforeLast[i];
     if(prevEndTrendlineS != endt)
     {
         prevEndTrendlineS = endt;

         dtS = endt - startt;

         endS = troughBarValueLast[i];
         startS = troughBarValueBeforeLast[i];
         aS = (endS - startS) / dtS;
         bS = endS;

         trendlineS = aS * ( x - endt ) + bS;//SUPPORT LINE
         Plot(IIf(x>= startt - d AND x<= endt + d, trendlineS, -1e10), 
"Support", colorBrightGreen, 1);
     }
...
}

Is it the right approach to rewriting SelectedValue or LastValue scripts for a 
continuous drawing or backtesting?
(Below is the entire rewritten script).

Thank you
John

x = Cum(1);
per = 3;// CALIBRATE THE ZIG() SENSITIVITY
s1=L;
s11=H;

pS = TroughBars( s1, per, 1 ) == 0;
troughBarIdxLast         = ValueWhen( pS, x ,1);
troughBarIdxBeforeLast   = ValueWhen( pS, x ,2);
troughBarValueLast       = ValueWhen( pS, s1, 1);
troughBarValueBeforeLast = ValueWhen( pS, s1, 2);

pR = PeakBars( s11, per, 1 ) == 0;
peakBarIdxLast           = ValueWhen( pR, x, 1);
peakBarIdxBeforeLast     = ValueWhen( pR, x, 2);
peakBarValueLast         = ValueWhen( pR, s11, 1);
peakBarValueBeforeLast   = ValueWhen( pR, s11, 2);

startBar = Status("FirstVisibleBar");
lastBar = Status("LastVisibleBar");

_TRACE("Startbar:"+startBar);
_TRACE("Lastbar:"+lastBar);

prevEndTrendlineS = -1;
prevEndTrendlineR = -1;

d=10;// INCREASE d TO EXTEND THE LINES

Years=Year();
Months=Month();
Days=Day();

//color =
for(i = startBar; i<  lastBar; i++)
{
     color[i] = colorBlack;
}

for(i = startBar; i<  lastBar; i++)
{
     endt= troughBarIdxLast[i];
     startt = troughBarIdxBeforeLast[i];
     if(prevEndTrendlineS != endt)
     {
         prevEndTrendlineS = endt;
         dtS = endt - startt;
         endS = troughBarValueLast[i];
         startS = troughBarValueBeforeLast[i];
         aS = (endS - startS) / dtS;
         bS = endS;

         trendlineS = aS * ( x - endt ) + bS;//SUPPORT LINE
         bearishbreakout = x>  endt AND x<  endt + d AND Cross(trendlineS, C);
         color = IIf (bearishbreakout,colorRed,color);
         Plot(IIf(x>= startt - d AND x<= endt + d, trendlineS, -1e10), 
"Support", colorBrightGreen, 1);
     }

     endt1 = peakBarIdxLast[i];
     startt1 = peakBarIdxBeforeLast[i];
     if(prevEndTrendlineR != endt1)
     {
         prevEndTrendlineR = endt1;
         dtR =endt1-startt1;
         endR = peakBarValueLast[i];
         startR = peakBarValueBeforeLast[i];
         aR = (endR-startR)/dtR;
         bR = endR;

         trendlineR = aR * ( x -endt1 ) + bR;//RESISTANCE LINE
         bullishbreakout = x>  endt1 AND x<  endt1 + d AND Cross(C,trendlineR);
         color = IIf (bullishbreakout,colorGreen,color);
         Plot(IIf(x>= startt1 - d AND x<= endt1 + d, trendlineR, -1e10), 
"Resistance", colorRed, 1);
     }
}// for(i = startBar; i<  lastBar; i++)
Plot(C,"Close",color,64);




------------------------------------

**** 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




Reply via email to