| 
 PureBytes Links 
Trading Reference Links 
 | 
Aequalsz,
On July 27, I send this mail to the group and probably You didn't receive.
With the code you shared I realize a function.
Regards,
	Antonio.
-----Original Message-----
From: Antonio Marra [mailto:ant.marra65@xxxxxx]
Sent: Tuesday, July 27, 2004 10:40 PM
To: 'amibroker@xxxxxxxxxxxxxxx'
Subject: RE: [amibroker] Re: Reverse engineering eSignal ZigZag code
Aequalsz,
Thank You for sharing the code: it works perfectly.
I was trying to realize something similar (only considering Hi-Lo, without
% value).
Since I am not a programmer, I didn't know to do, but this code solved my
problems.
I converted the code to a function (...see below), with a unique parameter,
so it can be used in more efficient manner.
As you can see, this function draws the line until the last bar.
Best Regards,
	Antonio
//=========================================================================
function ZigZagHL(prcnt)
{
// ------------------------------------------------------------------------
global ZigArray_HL;
WavePcnt = (1+0.01*prcnt);
End_Val_HL   = Avg[0];
Start_Val_HL = End_Val_HL;
End_Bar_HL   = 0;
Start_Bar_HL = End_Bar_HL;
Switch_HL = 0;
Hs_cnd = (Ref(H,-1) <= Ref(H,0) AND Ref(H,0) = Ref(H,1));
Ls_cnd = (Ref(L,-1) = Ref(L,0) AND Ref(L,0) <= Ref(L,1));
Hs_Swing = IsTrue(Hs_cnd)  AND (Ls_cnd==False);
Ls_Swing = (Hs_cnd==False) AND IsTrue(Ls_cnd);
//-------------------------------------------------------------------------
     for (i=0; i < BarCount; i++)
     {
         ZigArray_HL[i] = -1.0E10;
         // Swing High ----------------------------------------------------
         if ( i  0 AND i < BarCount AND Hs_Swing[i] )
              SwingHigh_HL = H[i];
         else
              SwingHigh_HL = -1;
         // Swing Low -----------------------------------------------------
         if ( i  0 AND i < BarCount AND Ls_Swing[i] )
              SwingLow_HL = L[i];
         else
              SwingLow_HL = -1;
         // ZigZag --------------------------------------------------------
         if ( SwingHigh_HL != -1)
         {
              if (
                   Switch_HL[i-1] != 1
                        AND SwingHigh_HL = (End_Val_HL * WavePcnt) )
              {
                   Start_Bar_HL = End_Bar_HL;
                   Start_Val_HL = End_Val_HL;
                   End_Bar_HL = i;
                   End_Val_HL = SwingHigh_HL;
                   for( j = Start_Bar_HL; j <= End_Bar_HL; j++ )
                   {
                   ZigArray_HL[j] = Start_Val_HL
                                     + (j - Start_Bar_HL)
                                       * (End_Val_HL - Start_Val_HL)
                                        / (End_Bar_HL - Start_Bar_HL );
                   }
                   Switch_HL = 1;
              }
              else
              if (Switch_HL[i-1] == 1 AND SwingHigh_HL = End_Val_HL)
              {
                   End_Bar_HL = i;
                   End_Val_HL = SwingHigh_HL;
                   for( j = Start_Bar_HL; j <= End_Bar_HL; j++ )
                   {
                   ZigArray_HL[j] = Start_Val_HL
                                     + (j - Start_Bar_HL)
                                       * (End_Val_HL - Start_Val_HL)
                                        / (End_Bar_HL - Start_Bar_HL );
                   }
              }
         }
         if ( SwingLow_HL != -1)
         {
              if (
                   Switch_HL[i-1] != -1
                        AND SwingLow_HL <= (End_Val_HL * WavePcnt) )
              {
                   Start_Bar_HL = End_Bar_HL;
                   Start_Val_HL = End_Val_HL;
                   End_Bar_HL = i;
                   End_Val_HL = SwingLow_HL;
                   for( j = Start_Bar_HL; j <= End_Bar_HL; j++ )
                   {
                   ZigArray_HL[j] = Start_Val_HL
                                     + (j - Start_Bar_HL)
                                       * (End_Val_HL - Start_Val_HL)
                                        / (End_Bar_HL - Start_Bar_HL );
                   }
                   Switch_HL = -1;
              }
              else
              if (Switch_HL[i-1] == -1 AND SwingLow_HL <= End_Val_HL)
              {
                   End_Bar_HL = i;
                   End_Val_HL = SwingLow_HL;
                   for( j = Start_Bar_HL; j <= End_Bar_HL; j++ )
                   {
                   ZigArray_HL[j] = Start_Val_HL
                                     + (j - Start_Bar_HL)
                                       * (End_Val_HL - Start_Val_HL)
                                        / (End_Bar_HL - Start_Bar_HL );
                   }
              }
         }
    }
    return ZigArray_HL;
}
//=========================================================================
 -----Original Message-----
 From: aequalsz [mailto:aequalsz@xxxxxxxxx]
 Sent: Friday, July 23, 2004 8:45 PM
 To: amibroker@xxxxxxxxxxxxxxx
 Subject: [amibroker] Re: Reverse engineering eSignal ZigZag code
 Dave,
 O.K. but haven't really checked the code out thoroughly and will
 probably want to convert it to a .dll before too long.  And lastly, it
 bears a strong resemblance to several other codes floating around so
 hope I don't get too many people mad.
...snip...
------------------------ Yahoo! Groups Sponsor --------------------~--> 
$9.95 domain names from Yahoo!. Register anything.
http://us.click.yahoo.com/J8kdrA/y20IAA/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/
 
 |