[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[amibroker] Re: "JOHN CLAYBURG Sup&Res - Chart Compression Problem Resolved



PureBytes Links

Trading Reference Links


Here is the code modified by Tomasz Janeczko himself. It eliminates
chart compression probelm. TJ wrote:

"First of all this formula is written quite poorly because it
generates "variable used without having been initialized" errors
depending on number of bars used (if number of bars drops below
certain amount it generates errors) which of course should never
happen when formula is written properly.

Second thing is that it uses Plot with LineArray without
"styleNoRescale" which should be used.

I suggest adding styleNoRescale in every plot that uses LineArray.
See the code below:"
----------------


/* JOHN CLAYBURG BASED SUPPORT/RESISTANCE LINES 
Coded by GBS May 2004
Modified by Tomasz Janeczko (AmiBroker.com) on 2005-Mar-07

/* CATEGORY 3 SUPPORT BREAKOUT TRIGGER FOR SHORTS: */ 

/* PARAMETERS */ 

ColLSC = ParamColor("SU Color",colorOrange); 
ColLRC = ParamColor("RE Color",colorBlue); 

LL_3_6 = Ref(L,-6) > Ref(L,-3); 
LL_3_5 = Ref(L,-5) > Ref(L,-3); 
LL_3_4 = Ref(L,-4) > Ref(L,-3); 
LL_3_2 = Ref(L,-2) > Ref(L,-3); 
LL_3_1 = Ref(L,-1) > Ref(L,-3); 
LL_3_0 = L > Ref(L,-3); 
Cat3Sup = LL_3_6 AND LL_3_5 AND LL_3_4 AND LL_3_2 AND LL_3_1 AND 
LL_3_0; 

/* SUPPORT LINE ("SC") */ 
y0=ValueWhen(Cat3Sup,Ref(L,-3),2); 
y1=ValueWhen(Cat3Sup,Ref(L,-3),1); 
x0=ValueWhen(Cat3Sup,BarIndex(),2)-3; 
x1=ValueWhen(Cat3Sup,BarIndex(),1)-3; 

// looking into the future here, but it is 
// only applied to historical plots to determine 
// the length of the extension. 
xsf=ValueWhen(Cat3Sup,BarIndex(),0)-3; 

/* CATEGORY 3 RESISTANCE BREAKOUT TRIGGER FOR LONGS: */ 
HH_3_6 = Ref(H,-6) < Ref(H,-3); 
HH_3_5 = Ref(H,-5) < Ref(H,-3); 
HH_3_4 = Ref(H,-4) < Ref(H,-3); 
HH_3_2 = Ref(H,-2) < Ref(H,-3); 
HH_3_1 = Ref(H,-1) < Ref(H,-3); 
HH_3_0 = H < Ref(H,-3); 
Cat3Res = HH_3_6 AND HH_3_5 AND HH_3_4 AND HH_3_2 AND HH_3_1 AND 
HH_3_0; 

y2=ValueWhen(Cat3Res,Ref(H,-3),2); 
y3=ValueWhen(Cat3Res,Ref(H,-3),1); 
x2=ValueWhen(Cat3Res,BarIndex(),2)-3; 
x3=ValueWhen(Cat3Res,BarIndex(),1)-3; 

// another look into the future. 
xrf=ValueWhen(Cat3Res,BarIndex(),0)-3; 

Plot(C,"C", colorBlack, styleCandle); 

extendedSup=0; 
extendedRes=0; 

NullY0=IsNull(y0); 
NullY2=IsNull(y2); 

Buy = Sell = Short = Cover = 0; // FIX: INITIALIZE !!!! 
GraphXSpace = 3;

for ( i = BarCount -1 ; i > 7 ; i-- ) 
{ 
   if ( !NullY0[i] ){ // only plot lines when enough datapoints
avail. 
      if ( x0[i] != x0[i-1] ) { 

         ms = (y1[i] - y0[i])/(x1[i] - x0[i]); // simple slope of
support 

         if ( NOT extendedSup ) { // Haven't extended one yet 

            extendedSup = 1; 
            Line1 = LineArray( x0[i], y0[i], x1[i] + 3, y1[i] + (3 * 
               ms),0,True); 
            Plot(Line1,"",ColLSC,styleLine|styleNoRescale); 

            Line2 = LineArray( x1[i] + 3, y1[i] + (3 * ms), x1[i] +
4,y1 
               [i] + (4 * ms), 1,True); 
            Plot(Line2,"Cat3Sup",colorWhite,styleL
ine+styleNoRescale); 

            Sell=Cross(Line2,C); 
            PlotShapes(IIf 
               (Sell,shapeHollowDownArrow,shapeNon
e),colorRed,0,H,-10); 

         } else { // old Cat3Sup lines, use 'look ahead' extensions 

            Line3 = LineArray( x0[i], y0[i], x1[i] + 3, y1[i] + (3 * 
               ms),0,True); 
            Plot(Line3,"",colorPink,styleLine|styleNoRescale); 

            Line4 = LineArray( x1[i] + 3, y1[i] + (3 * ms), 
               xsf[i] + 3, y1[i] + ms * (xsf[i] - 
               x1[i] + 3), 0,True); 
            Plot(Line4,"Cat3Sup",colorWhite,styleL
ine+styleNoRescale); 

            Sell=Cross(Line4,C); 
            PlotShapes(IIf 
               (Sell,shapeHollowDownArrow,shapeNon
e),colorRed,0,H,-10); 
         } 
      } 
   } 

   if ( !NullY2[i] ){ // only plot lines when enough datapoints
avail. 
      if ( x2[i] != x2[i-1] ) { 

         mr = (y3[i] - y2[i])/(x3[i] - x2[i]); // simple slope of
resistance 

         if ( NOT extendedRes ) { // Haven't extended one yet 

            extendedRes = 1; 
            Line5= LineArray( x2[i], y2[i], x3[i] + 3, y3[i] + (3 * 
               mr),0,True); 
            Plot(Line5,"",ColLRC,styleLine|styleNoRescale); 

            Line6 = LineArray( x3[i] + 3, y3[i] + (3 * mr), x3[i] +
4,y3 
               [i] + (4 * mr), 1,True); 
            Plot(Line6,"Cat3Sup",colorWhite,styleL
ine+styleNoRescale); 

            Buy=Cross(C,Line6); 
            PlotShapes(IIf 
               (Buy,shapeUpArrow,shapeNone),colorB
rightGreen,0,L,-10); 

         } else { // old Cat3Sup lines, use 'look ahead' extensions 

            Line7= LineArray( x2[i], y2[i], x3[i] + 3, y3[i] + (3 * 
               mr),0,True); 
            Plot(Line7,"",colorBlue,styleLine|styleNoRescale); 

            Line8 = LineArray( x3[i] + 3, y3[i] + (3 * mr), 
               xrf[i] + 3, y3[i] + mr * (xrf[i] - 
               x3[i] + 3), 0,True); 
            Plot(Line8,"Cat3Sup",colorWhite,styleL
ine+styleNoRescale); 

            Buy=Cross(C,Line8); 
            PlotShapes(IIf 
               (Buy,shapeUpArrow,shapeNone),colorB
rightGreen,0,L,-10); 
         } 
      } 
   } 
} 

NumColumns = 0; 

// EXPLORATION EXAMPLE: 
Filter = Buy OR Sell; 
AddTextColumn(FullName(),"Full name",77,colorPlum, IIf(Close < 
           1.00,colorYellow,colorDefault ) ); 
result = WriteIf(Buy,"Buy","Sell"); 
AddTextColumn(result,"Trade", formatChar, IIf 
           (Buy,colorDarkGreen,colorRed ), 
           IIf(Sell,colorPink,colorLime)); 
AddColumn(Ref(Close,-1),"Y-Close",1.4, IIf( ROC(Ref(C,-1),1)>= 
        0,colorDarkGreen, colorRed ),50 ); 
AddColumn(Open,"Open",1.4,IIf( ROC(Open, 1 ) >= 0, colorDarkGreen, 
        colorRed ) ); 
AddColumn(High,"High",1.4,IIf( ROC(High, 1 ) >= 0, colorDarkGreen, 
        colorRed ) ); 
AddColumn(Low,"Low",1.4,IIf( ROC(Low, 1 ) >= 0, colorDarkGreen, 
        colorRed ) ); 
AddColumn( Close, "Close", 1.4, IIf( ROC(C, 1 ) >= 0, colorDarkGreen, 
        colorRed ),50 ); 
AddColumn( ROC( Close, 1 ), "ROC(1)", 1.2, IIf( ROC(C, 1 ) >= 0, 
        colorDarkGreen, colorRed)); 
AddColumn( Volume, "Volume", 10.0, IIf( ROC(V, 1 ) >= 0, 
        colorDarkGreen, colorRed ) ); 
AddColumn( y3, "TL Break", 10.4, colorDarkBlue,37 ); 
AddColumn( ((Close-y3)/y3)*100, "TL Break %", 10.2, 
        colorDarkBlue,37 ); 
AddColumn( y1, "TL Break", 10.4, colorRed,40 ); 
AddColumn( ((Close-y1)/Close)*100, "TL Break %", 10.2, colorRed,40 );






------------------------ Yahoo! Groups Sponsor --------------------~--> 
Has someone you know been affected by illness or disease?
Network for Good is THE place to support health awareness efforts!
http://us.click.yahoo.com/Rcy2bD/UOnJAA/cosFAA/GHeqlB/TM
--------------------------------------------------------------------~-> 

Please note that this group is for discussion between users only.

To get support from AmiBroker please send an e-mail directly to 
SUPPORT {at} amibroker.com

For other support material please check also:
http://www.amibroker.com/support.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/