Hi,

I'm trying to compute and display retracement levels after a peak has formed.  
The code I have developed works fine only once after I apply the indicator. 
Clicking anywhere on the graph causes the computed levels to disappear!  
Obviously, I am doing something wrong, only can't figure 
out what.  Would be grateful for any helpful hints.

Attached is a screenshot showing how the graph looks immediately after the 
first application of the indicator.

Cheers,
Lal
 


_SECTION_BEGIN("Retracements");

Level = Param("Pivot Level", 9, 2, 100, 1);

Plot(C, "Retracements", colorBlack, styleBar);

My_Peak[0] = 0;
My_Trough[0] = 0;

for( i = Level+1; i < BarCount-Level; i++ ) 
  { 
        // There shouldn't be a higher high for the next few bars
        R_Higher_high[0] = 0;           // Higher High found on the right of 
current bar
        L_Higher_high[0] = 0;           // Higher High found on the left of 
current bar

        R_Lower_Low[0] = 0;             // Lower Low found on the right of 
current bar
        L_Lower_Low[0] = 0;             // Lower Low found on the left of 
current bar

        //    | | | | C | | | |
        //                     ---->    
        for (j = i; j <= i+Level; j++)  
                {
                if(High[j] > High[i])   
                        {
                        R_Higher_high[0] = R_Higher_high[0] + 1;
                }

                if(Low[j] < Low[i])     
                        {
                        R_Lower_Low[0] = R_Lower_Low[0] + 1;
                }
        }

        // There should be no  higher high for previous few bars
        //    | | | | C | | | |
        //               <----  
        for(k = i;  k >= (i-Level);  k--)       
        {
                if(High[k] > High[i])
                {
                        L_Higher_high[0] = L_higher_high[0] + 1;
                }

                if(Low[k] < Low[i])
                {
                        L_Lower_Low[0] = L_Lower_Low[0] + 1;
                }
        }

        // If we've detected a higher high on either 
        // side of current bar,
        // we do NOT have a valid peak
        if(NOT L_Higher_High[0] AND NOT r_Higher_High[0])
        {
                My_peak[i] = 1; // Mark current bar as a valid pivot/peak
                PlotText("P", i, H[i] + 20, colorRed);
        }

        // If we've detected a lower low on either 
        // side of current bar,
        // we do NOT have a valid trough
        if(NOT L_Lower_Low[0] AND NOT R_Lower_Low[0])
        {
                My_Trough[i] = 1;       // Mark current bar as a valid 
pivot/peak
                PlotText("T", i, L[i] - 30, colorBlue);
        }

        L_higher_high[0] = 0; R_Higher_High[0] = 0;
        L_Lower_Low[0] = 0;  R_Lower_Low[0] = 0;
} 


// Find Co-ordinates to draw lines 
// Peak to Peak AND Trough to Trough
Y0 = ValueWhen(My_Peak, H, 2);
X0 = ValueWhen(My_Peak, BarIndex(), 2);

Y1 =  ValueWhen(My_Peak, H, 1);
X1 = ValueWhen(My_Peak, BarIndex(), 1);

NullY0 = IsNull(y0);
NullY1 = IsNull(y1);

TY0 = ValueWhen(My_Trough, L, 2);
TX0 = ValueWhen(My_Trough, BarIndex(), 2);

TY1 =  ValueWhen(My_Trough, L, 1);
TX1 = ValueWhen(My_Trough, BarIndex(), 1);

NullTY0 = IsNull(Ty0);
NullTY1 = IsNull(Ty1);



// Work out retracement levels after a peak
P1              =  ValueWhen(My_Peak, H, 1);
P1_B    = ValueWhen(My_Peak, BarIndex(), 1);

T1              = ValueWhen(My_Trough, L, 2);
T1_B    = ValueWhen(My_Trough, BarIndex(), 2);

T2              =  ValueWhen(My_Trough, L, 1);
T2_B    = ValueWhen(My_Trough, BarIndex(), 1);

Cond1 = P1_B > T1_B AND P1_B < T2_B;
T1P1_Swing = P1 - T1;
P1T2_Swing = P1 - T2;
Swing_Extent = P1T2_Swing / T1P1_Swing;
PlotNow         = ValueWhen(Cond1, BarIndex());
Ext                     = ValueWhen(Cond1, Swing_Extent, 1);

// Test End

for( i = BarCount-1; i > 10; i--)
{
        if ( !Nully0[i])
        {
                // Line to conncect peaks
                Line1 = LineArray( x0[i], y0[i], x1[i], y1[i], 0, True);
                Plot(Line1, "", colorWhite, 
styleDashed+styleNoRescale+styleNoLabel);
        }       

        if ( !NullTy0[i])
        {
                // Line to connect troughs
                Line2 = LineArray( tx0[i], ty0[i], tx1[i], ty1[i], 0, True);
                Plot(Line2, "", colorWhite, 
styleLine+styleNoRescale+styleNoLabel);
        }       

        if (PlotNow[i])
        {
                // Show retracement extent after a peak
                PlotText("" + WriteVal(Ext[i], 1.2), T2_B[i], T2[i]-60, 
colorBlack);

        }
}
_SECTION_END();
<!--  #ygrp-mlmsg 
{font-size:13px;font-family:arial,helvetica,clean,sans-serif;} #ygrp-mlmsg 
table {font-size:inherit;font:100%;} #ygrp-mlmsg select, input, textarea 
{font:99% arial,helvetica,clean,sans-serif;} #ygrp-mlmsg pre, code {font:115% 
monospace;} #ygrp-mlmsg * {line-height:1.22em;} #ygrp-text{ 
font-family:Georgia; } #ygrp-text p{ margin:0 0 1em 0; } #ygrp-tpmsgs{ 
font-family:Arial; clear:both; } #ygrp-vitnav{ padding-top:10px; 
font-family:Verdana; font-size:77%; margin:0; } #ygrp-vitnav a{ padding:0 1px; 
} #ygrp-actbar{ clear:both; margin:25px 0; white-space:nowrap; color:#666; 
text-align:right; } #ygrp-actbar .left{ float:left; white-space:nowrap; } 
.bld{font-weight:bold;} #ygrp-grft{ font-family:Verdana; font-size:77%; 
padding:15px 0; } #ygrp-ft{ font-family:verdana; font-size:77%; border-top:1px 
solid #666; padding:5px 0; } #ygrp-mlmsg #logo{ padding-bottom:10px; }  
#ygrp-vital{ background-color:#e0ecee; margin-bottom:20px; padding:2px 0 8px 
8px; } #ygrp-vital
 #vithd{ font-size:77%; font-family:Verdana; font-weight:bold; color:#333; 
text-transform:uppercase; } #ygrp-vital ul{ padding:0; margin:2px 0; } 
#ygrp-vital ul li{ list-style-type:none; clear:both; border:1px solid #e0ecee; 
} #ygrp-vital ul li .ct{ font-weight:bold; color:#ff7900; float:right; 
width:2em; text-align:right; padding-right:.5em; } #ygrp-vital ul li .cat{ 
font-weight:bold; } #ygrp-vital a { text-decoration:none; }  #ygrp-vital 
a:hover{ text-decoration:underline; }  #ygrp-sponsor #hd{ color:#999; 
font-size:77%; } #ygrp-sponsor #ov{ padding:6px 13px; background-color:#e0ecee; 
margin-bottom:20px; } #ygrp-sponsor #ov ul{ padding:0 0 0 8px; margin:0; } 
#ygrp-sponsor #ov li{ list-style-type:square; padding:6px 0; font-size:77%; } 
#ygrp-sponsor #ov li a{ text-decoration:none; font-size:130%; } #ygrp-sponsor 
#nc { background-color:#eee; margin-bottom:20px; padding:0 8px; } #ygrp-sponsor 
.ad{ padding:8px 0; } #ygrp-sponsor .ad #hd1{ font-family:Arial; 
font-weight:bold;
 color:#628c2a; font-size:100%; line-height:122%; } #ygrp-sponsor .ad a{ 
text-decoration:none; } #ygrp-sponsor .ad a:hover{ text-decoration:underline; } 
#ygrp-sponsor .ad p{ margin:0; } o {font-size:0;} .MsoNormal { margin:0 0 0 0; 
} #ygrp-text tt{ font-size:120%; } blockquote{margin:0 0 0 4px;} .replbq 
{margin:4;} --> 



                
___________________________________________________________ 
The all-new Yahoo! Mail goes wherever you go - free your email address from 
your Internet provider. http://uk.docs.yahoo.com/nowyoucan.html

Attachment: Example1.png
Description: PNG image

Reply via email to