Quote from bahdabing:
Just use this code and you will OWN the S & P:
var BAR, F, X, DAYS, CYCLELENGTH, LASTLOWBAR, COUNT, DAYS1,DAYS2,DAYS3,DAYS4,DAYS5, DIVIDEBY, mo1,mo2,mo3,mo4,mo5,thePrice,theVolume,AD: integer;
var AVG, VOL, N, DU, PV, BASE1,BASE2,BASE3,BASE4,BASE5,PEAK1,PEAK2,PEAK3,PEAK4,PEAK5,GAIN1,GAIN2,GAIN3,GAIN4,GAIN5,AVERAGEGAIN,DU1,DU2,DU3,DU4,DU5,AVERAGEDU : float;
var RETRACE, theMACD: integer;
PlotSeries( SMASeries( #VOLUME, 65) , 1, #Red, #Thin );
mo1:=BARCOUNT() -1 ;
mo2:=BARCOUNT() -21 ;
mo3:=BARCOUNT() -41 ;
mo4:=BARCOUNT() -61 ;
mo5:=BARCOUNT() -81 ;
DrawText( +' VOLUME AVG(65)= '+FormatFloat( '0,0' , SMA(mo1, #VOLUME, 65) ) , 1, 5, 15, #Black, 8 );
RETRACE := 1;
F:=40;COUNT:=0;LASTLOWBAR :=1000000;
FOR BAR:= BARCOUNT() -1 DOWNTO BARCOUNT()-127 do
BEGIN
IF LASTLOWBAR < BAR THEN BAR:= LASTLOWBAR ;
//CHECK CYCLE AT SIX DAYS
X:= PEAKBAR(BAR, #HIGH, RETRACE) ;
N:= PEAK(BAR, #HIGH, RETRACE) - LOWEST(X-1, #LOW, 5) ;
IF N/LOWEST(X-1, #LOW, 5) >= 0.20 THEN CYCLELENGTH:= 5 ELSE
BEGIN
//RAISE CYCLE TO SEVEN
X:= PEAKBAR(BAR, #HIGH, RETRACE) ;
N:= PEAK(BAR, #HIGH, RETRACE) - LOWEST(X-1, #LOW, 6) ;
IF N/LOWEST(X-1, #LOW, 6) >= 0.20 THEN
CYCLELENGTH:= 6 ELSE
BEGIN
//RAISE CYCLE TO EIGHT
X:= PEAKBAR(BAR, #HIGH, RETRACE) ;
N:= PEAK(BAR, #HIGH, RETRACE) - LOWEST(X-1, #LOW, 7) ;
IF N/LOWEST(X-1, #LOW, 7) >= 0.20 THEN
CYCLELENGTH:= 7;
END;
END;
IF N/LOWEST(X-1, #LOW, CYCLELENGTH) >= 0.20 THEN
BEGIN
DAYS:= PEAKBAR(BAR, #HIGH, RETRACE) - LOWESTBAR(X-1, #LOW, CYCLELENGTH)+1 ;
IF PRICECLOSE(PEAKBAR(BAR, #HIGH, RETRACE) ) < PRICECLOSE(PEAKBAR(BAR, #HIGH, RETRACE)-1 ) THEN
PV:= VOLUME(PEAKBAR(BAR, #HIGH, RETRACE)-1 ) ELSE PV:= VOLUME(PEAKBAR(BAR, #HIGH, RETRACE) ) ;
DrawText(
'LOW: '+FormatFloat( '0.00', LOWEST(X-1, #LOW, CYCLELENGTH) )+' HIGH: '+FormatFloat( '0.00', PEAK(BAR, #HIGH, RETRACE) )+' = '+FormatFloat( '0.00', (N/LOWEST(X-1, #LOW, CYCLELENGTH) )*100)+'% DAYS: '+FormatFloat( '0', DAYS)+ ' '+DateToStr( GetDate( LOWESTBAR(X-1, #LOW, CYCLELENGTH) ) )+' to '+DateToStr( GetDate( PEAKBAR(BAR, #HIGH, RETRACE) ) ) + ' PV= '+FormatFloat( '0,00', PV ) , 0, 5, F, #Black, 8 );
DrawCircle( 6, 0, PEAKBAR(BAR, #HIGH, RETRACE), PEAK(BAR, #HIGH, RETRACE) , #green, #thin );
DrawCircle( 6, 0, LOWESTBAR(X-1, #LOW, CYCLELENGTH), LOWEST(X-1, #LOW, CYCLELENGTH) , #red, #thin );
F:=F+10;
LASTLOWBAR:=LOWESTBAR(X-1, #LOW, CYCLELENGTH)-1 ;
COUNT:= COUNT+1;
IF COUNT=1 THEN BEGIN
GAIN1:=N/LOWEST(X-1, #LOW, CYCLELENGTH) ;DAYS1:=DAYS;DU1:=LOWEST(mo1, #VOLUME, 20);
END;
IF COUNT=2 THEN BEGIN
GAIN2:=N/LOWEST(X-1, #LOW, CYCLELENGTH) ;DAYS2:=DAYS;DU2:=LOWEST(mo2, #VOLUME, 20);
END;
IF COUNT=3 THEN BEGIN
GAIN3:=N/LOWEST(X-1, #LOW, CYCLELENGTH) ;DAYS3:=DAYS;DU3:=LOWEST(mo3, #VOLUME, 20);
END;IF COUNT=4 THEN BEGIN
GAIN4:=N/LOWEST(X-1, #LOW, CYCLELENGTH) ;DAYS4:=DAYS;DU4:=LOWEST(mo4, #VOLUME, 20);
END;
IF COUNT=5 THEN BEGIN
GAIN5:=N/LOWEST(X-1, #LOW, CYCLELENGTH) ;DAYS5:=DAYS;DU5:=LOWEST(mo5, #VOLUME, 20);
AVERAGEGAIN:= (GAIN1+GAIN2+GAIN3+GAIN4+GAIN5)/5 ;
IF DU1>0 THEN DIVIDEBY:=1;
IF DU2>0 THEN DIVIDEBY:=2;
IF DU3>0 THEN DIVIDEBY:=3;
IF DU4>0 THEN DIVIDEBY:=4;
IF DU5>0 THEN DIVIDEBY:=5;
AVERAGEDU:= (DU1+DU2+DU3+DU4+DU5)/DIVIDEBY;
DrawText( ' RETURN% '+FormatFloat( '0.00' , AVERAGEGAIN*100 )
+'% RANK: '+FormatFloat( '0.00',
100*((AVERAGEGAIN)/((DAYS1+DAYS2+DAYS3+DAYS4+DAYS5)/5)) ) +' Avg DU = '+FormatFloat('0,0' , AVERAGEDU ) +' FRV = '+FormatFloat('0,0' , 3*AVERAGEDU ) +' Peak = '+FormatFloat('0,0' , 2*(3*AVERAGEDU) ) , 0, 5, F, #Black, 8 );
END;
IF COUNT = 5 THEN BREAK;
END;
END;
theMACD:= CreatePane( 100, false, true);
PlotSeries( MACDSeries( #Close) , theMACD, #Blue, #Histogram );
IF PRICECLOSE(BARCOUNT-1) >PRICECLOSE(BARCOUNT-2)THEN thePrice:=4;
IF VOLUME(BARCOUNT-1) >VOLUME(BARCOUNT-2)THEN theVolume:=2;
IF MACD( BARCOUNT-1, #CLOSE) > MACD(BARCOUNT-2, #CLOSE )THEN AD:=1;
DrawText( 'TODAYS SCORE is '+FormatFloat('0', thePrice+theVolume+AD ) , theMACD, 5, 15, #Black, 8 );