Welcome to the Traders Laboratory Forums.
Coding Forum Collaborate, receive help, or discuss coding related issues.

Reply
Old 10-09-2008, 06:10 AM   #1

Join Date: Jan 2008
Posts: 28
Ignore this user

Thanks: 5
Thanked 10 Times in 7 Posts

Zig zag pivot indicator

inputs:

ATRPeriod(9), //Number of ATR Periods

ATRMulti(2.0), // ATR Multiplier



StrengthSensitivity(2), //Pivot Strength



ShowZigZagLines(True),

ShowZigZagCount(True),

ShowZigZagTime(True),

ZigZagLineColorUp(BLUE),

ZigZagLineColorDN(CYAN),

ZigZagLineWidth(1),

ZigZagLineStyle(Tool_Soli d),

ZigZagTextColor(CYAN),

VertOffset1(1),

VertOffset2(2), // Second String on Swing Hi/Lows

DecimalPlaces(2);



vars:

NewSwingPrice(0),

LastSwingPrice(0),

SwingPrice(High),

SwingDate(Date),

SwingTime(Time),

TLDir(0), { TLDir = -1 implies prev TL dn, +1 implies prev TL up }

SaveSwing(false),

AddTL(false),

UpdateTL(false),

TLRef(0),

TLSwing(0),

PeakTextRef(0),PeakTextRe f2(0),

PeakStr(""), PeakStr2(""),

Diff(0),

ArrayMax (17),

ATRPoints(0),

BarDiff(0), TimeDiff(0),

ZigZagCount(0),

ZZCountStr(""),

x(0),

showDebug(FALSE);





Arrays:

TrendLine[17] (0), DayValue[17] (0), ZigZag[1000,3](0);



if CurrentBar = 1 then

begin

for x=0 to ArrayMax { Draw Fib Lines }

begin

if x <= ArrayMax then

begin

TrendLine[x] = TL_New (Date[1], Time[1], Low, Date, Time, Low);



TL_SetExtLeft (TrendLine[x], false);

TL_SetExtRight (TrendLine[x], True);

end; // if

end; // for

end; //if currentbar



{ Candidate swings are just-confirmed, 3-bar (Str=1), SwingHi's and SwingLo's }

NewSwingPrice = SwingHigh( 1, High, StrengthSensitivity, StrengthSensitivity+1);





ATRPoints = ATRMulti*AvgTrueRange(ATR Period) ;



if NewSwingPrice <> -1 then

begin

if (TLDir <= 0 and NewSwingPrice >= SwingPrice + ATRPoints) then

{ prepare to add new up TL }

begin

SaveSwing = true;

AddTL = true;

TLDir = 1;

end

else

if TLDir = 1 and NewSwingPrice >= SwingPrice then { prepare to update prev up TL }

begin

SaveSwing = true;

UpdateTL = true;

end;

end

else

begin

{ NewSwingPrice = SwingLow( 1, Low, 1, 2 ); }

NewSwingPrice = SwingLow( 1, Low, StrengthSensitivity, StrengthSensitivity+1);



if NewSwingPrice <> -1 then

begin { prepare to add new dn TL }

if TLDir >= 0 and NewSwingPrice <= SwingPrice - ATRPoints then

begin

SaveSwing = true;

AddTL = true;

TLDir = -1;

end

else

if TLDir = -1 and NewSwingPrice <= SwingPrice then { prepare to update prev dn TL }

begin

SaveSwing = true;

UpdateTL = true ;

end;

end;

end;



if SaveSwing then { save new swing and reset SaveSwing }

begin

SwingPrice = NewSwingPrice ;

SwingDate = Date[StrengthSensitivity];

SwingTime = Time[StrengthSensitivity];

// SaveSwing = false ;

end ;

if (showDebug) then

print(" AddTL === ", AddTL, " UpdateTL == ", UpdateTL, "SaveSwing == ", SaveSwing, " TL Dir = ", TLDir);



{ add new TL and reset AddTL }

if AddTL then

begin

PeakTextRef = Text_New(Date, Time, Close, " ");

Text_SetColor(PeakTextRef , ZigZagTextColor);



if (ShowZigZagTime) then

begin

PeakTextRef2 = Text_New(Date, Time, Close, " ");

Text_SetColor(PeakTextRef 2, ZigZagTextColor);

end;



if ShowZigZagLines then

begin

TLRef = TL_New(SwingDate, SwingTime, SwingPrice, SwingDate[1], SwingTime[1],SwingPrice[1]);

Text_SetStyle(PeakTextRef , 2, 2);

Text_SetStyle(PeakTextRef 2, 2, 3);

TL_SetExtLeft( TLRef, false);

TL_SetExtRight( TLRef, false);

TL_SetSize( TLRef, ZigZagLineWidth);

if TLDir = -1 then

TL_SetColor( TLRef, ZigZagLineColorDN)

else

TL_SetColor( TLRef, ZigZagLineColorUp);



LastSwingPrice = SwingPrice[1];

end;



if (TLDir[1] <> TLDir[2]) then BarDiff = 0

else BarDiff = BarDiff +1;



ZigZagCount = ZigZagCount + 1;



ZigZag[ZigZagCount,1] = SwingPrice; // Current Swing Price

ZigZag[ZigZagCount,2] = BarNumber; // BarNum

ZigZag[ZigZagCount,3] = TimetoMinutes(Time); // Time Var



BarDiff = ZigZag[ZigZagCount,2] - ZigZag[ZigZagCount-1,2];



if (showZigZagCount) then

ZZCountStr = "[" + NumToStr(ZigZagCount,0) +"] "

else

ZZCountStr = "";



if TLDir = -1 then

Diff = LastSwingPrice - SwingPrice

else

Diff = SwingPrice - LastSwingPrice;



TimeDiff = Zigzag[ZigZagcount,3] - Zigzag[ZigZagcount-1,3];

{jmh}

{ PeakStr = ZZCountStr + " " + NumToStr(SwingPrice,Decim alPlaces) + " / " + NumToStr(Diff, DecimalPlaces);

PeakStr2 = ELTimetoString(MinutestoT ime(ZigZag[ZigZagCount,3])) + " / " + NumtoStr(BarDiff,0)+ " / " + NumtoStr(TimeDiff,0);}

PeakStr = NumToStr(SwingPrice,Decim alPlaces) + " / " + NumToStr(Diff, DecimalPlaces) ;

PeakStr2 = " ";





Text_SetString(PeakTextRe f, PeakStr);

if TLDir = -1 then

Text_SetLocation(PeakText Ref, SwingDate, SwingTime, SwingPrice - VertOffset1)

else

Text_SetLocation(PeakText Ref, SwingDate, SwingTime, SwingPrice + VertOffset2);





if (ShowZigZagTime) then

begin

Text_SetString(PeakTextRe f2, PeakStr2);

if TLDir = -1 then

Text_SetLocation(PeakText Ref2, SwingDate, SwingTime, SwingPrice - VertOffset2)

else

Text_SetLocation(PeakText Ref2, SwingDate, SwingTime, SwingPrice + VertOffset1);

end;





AddTL = false;

end

else if UpdateTL then { update prev TL and reset UpdateTL }

begin

if ShowZigZagLines then

TL_SetEnd( TLRef, SwingDate, SwingTime, SwingPrice);



if (TLDir[1] <> TLDir[2]) then BarDiff = 0

else BarDiff = BarDiff +1;



ZigZag[ZigZagCount,1] = SwingPrice; // Current Swing Price

ZigZag[ZigZagCount,2] = BarNumber[1]; // BarNum

ZigZag[ZigZagCount,3] = TimetoMinutes(Time); // Time Var





BarDiff = ZigZag[ZigZagCount,2] - ZigZag[ZigZagCount-1,2];



if (showZigZagCount) then

ZZCountStr = "[" + NumToStr(ZigZagCount,0) +"] "

else

ZZCountStr = "";



if TLDir = -1 then

Diff = LastSwingPrice - SwingPrice

else

Diff = SwingPrice - LastSwingPrice;



TimeDiff = Zigzag[ZigZagcount,3] - Zigzag[ZigZagcount-1,3];



{ PeakStr = ZZCountStr + "" + NumToStr(SwingPrice,Decim alPlaces) + " / " + NumToStr(Diff, DecimalPlaces);}

PeakStr = NumToStr(SwingPrice,Decim alPlaces) + " / " + NumToStr(Diff, DecimalPlaces);

PeakStr2 = " ";

{ PeakStr2 = ELTimetoString(MinutestoT ime(ZigZag[ZigZagCount,3])) + " / " + NumtoStr(BarDiff,0)+ " / " + NumtoStr(TimeDiff,0);}



Text_SetString( PeakTextRef, PeakStr);



if TLDir = -1 then

Text_SetLocation(PeakText Ref, SwingDate, SwingTime, SwingPrice - VertOffset1)

else

Text_SetLocation(PeakText Ref, SwingDate, SwingTime, SwingPrice + VertOffset2);



if (ShowZigZagTime) then

begin

Text_SetString(PeakTextRe f2, PeakStr2);

if TLDir = -1 then

Text_SetLocation(PeakText Ref2, SwingDate, SwingTime, SwingPrice - VertOffset2)

else

Text_SetLocation(PeakText Ref2, SwingDate, SwingTime, SwingPrice + VertOffset1);

end;



UpdateTL = false;

end;



if SaveSwing then

begin

if TLDir = -1 then

begin

DayValue[0] = Swingprice;

DayValue[1] = LastSwingprice;

end

else

begin

DayValue[1] = Swingprice;

DayValue[0] = LastSwingprice;

end;

Diff = DayValue[0] - DayValue[1];



if (showDebug) then

print("Day0 = ", DayValue[0], " DayMax= ", DayValue[1], " Diff =", Diff, " TLDir = ", TLDir);







for x=0 to ArrayMax

begin

if TrendLine[x] > 0 then

begin

{ SetEnd before SetBegin }

TL_SetEnd (TrendLine[x], Date, Time, DayValue[x]);

TL_SetBegin (TrendLine[x], Date, Time, DayValue[x]);

end; // if TrendLine

end; // for loop

SaveSwing = False;

end; // if SaveSwing



ENJOY
spyro is offline  
Reply With Quote
The Following 4 Users Say Thank You to spyro For This Useful Post:
HBBHVN (12-04-2008), sneo (02-13-2009), Tams (10-02-2011), TwistedCharts (01-23-2009)

Reply

Thread Tools
Display Modes Help Others By Rating This Thread
Help Others By Rating This Thread:


Similar Threads
Thread Thread Starter Forum Replies Last Post
An Auto Pivot Level Indicator GCB Trading Indicators 16 12-26-2011 02:41 AM
Seeking Floor Trader Pivot Indicator Adrian Coding Forum 8 07-11-2009 09:38 PM
Auto Pivot Point Indicator with Labels Soultrader Trading Indicators 4 04-30-2009 08:50 AM
Indicator with Data of Another Indicator Tresor Coding Forum 13 08-06-2008 10:48 AM
Other Pivot Formulas tradem Technical Analysis 4 10-27-2007 11:51 AM

All times are GMT -4. The time now is 12:02 PM.
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
CS to VB integration by DeskLancer
©2006-2011 Traders Laboratory, All Rights Reserved.