inputs:
RetraceType( 1 ) , { Choose: 1 Pnts, 2 Pct, 3 = ATR }
RetracePnts( 5 ) ,
RetracePct( 5 ) ,
ATRPeriod(10), //Number of ATR Periods
ATRMulti(3), // ATR Multiplier
StrengthSensitivity(2),
ShowNegFibs(TRUE),
ShowZigZagLines( True ) ,
ShowSwingPointLines( True ) ,
ShowFibText(True),
ZigZagLineColor( Magenta ) ,
ZigZagLineWidth( 1 ),
SwingHighColor( Black ) ,
SwingLowColor (Red ) ,
SwingLineStyle( Tool_Dotted ),
HorzOffset(10), // In Minutes
VertOffset( 0.25 ),
DecimalPlaces( 2 ),
{HamFon Fib inputs}
ShowOpenLine (False), ExtRight(True),
TextColor(LightGray),
HiLoColor (Magenta), OuterFibColor (DarkGreen),
MidColor(Magenta), InnerFibColor(Red), FibPlusColor(DarkGray), OpenColor (Darkbrown);
variables:
NewSwingPrice( 0 ) ,
LastSwingPrice(0 ) ,
SwingPrice( High ) , { used as a convenient 2-element array }
SwingDate( Date ) , { used as a convenient 2-element array }
SwingTime( Time ) , { used as a convenient 2-element array }
RetraceFctrUp(0),
RetraceFctrDn(0),
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 ) ,
PeakStr("") ,
{HamFon variables inputs}
TLCreated (false), Redraw (false), Loop (0), Diff(0),
ArrayMax (17),
ATRPoints(0);
vars: showDebug(FALSE), NegFibNums(6);
arrays: TrendLine[17] (0), DayValue[17] (0), FibText[17](0), FibValue[17](0);
//Create initial fib lines
if CurrentBar = 1 then begin
if (ShowNegFibs=FALSE) then ArrayMax = ArrayMax-NegFibNums;
for loop=0 to ArrayMax
begin {added Color for visual differentiation}
if loop <= ArrayMax then
begin
TrendLine[loop] = TL_New (Date[1], Time[1], Low, Date, Time, Low);
If (loop = 4) then
TL_SetColor (TrendLine[loop], MidColor)
else if (loop = 0) or (Loop = 1) then
TL_SetColor (TrendLine[loop], HiLoColor)
else if (loop = 3 ) or (loop = 5 ) then
TL_SetColor (TrendLine[loop], InnerFibColor)
else if (Loop = 2) or (loop = 6) then
TL_SetColor (Trendline[loop], OuterFibColor)
{else if (Loop > 7) then
TL_setcolor(Trendline[loop], red)}
else TL_SetColor (TrendLine[loop], FibPlusColor);
TL_SetExtLeft (TrendLine[loop], false);
TL_SetExtRight (TrendLine[loop], True);
if loop = 4 then
TL_SetStyle(TrendLine[loop],Tool_dotted);
FibText[loop] = Text_New(Date, Time, Low, " " ) ;
Text_SetColor(FibText[loop], TextColor) ;
end; // if loop
end; // for loop
FibValue[0] = 1 ; {Max Swing }
FibValue[1] = 0 ; { Min Swing }
FibValue[2] = .236 ;
FibValue[3] = .382 ;
FibValue[4] = .5 ;
FibValue[5] = .618 ;
FibValue[6] = .764 ;
FibValue[7] = .886 ;
FibValue = 1.23 ;
FibValue[9] = 1.5 ;
FibValue[10] = 1.62 ;
FibValue[11] = 2.00 ;
{Negative Numbers }
FibValue[12] = -.236 ;
FibValue[13] = -.382 ;
FibValue[14] = -.5 ;
FibValue[15] = -.618 ;
FibValue[16] = -.764 ;
FibValue[17] = -1.00 ;
end; //if currentbar
{ Candidate swings are just-confirmed, 3-bar (Str=1), SwingHi's and SwingLo's }
NewSwingPrice = SwingHigh( 1, High, StrengthSensitivity, StrengthSensitivity+1) ;
if ( RetraceType = 3) then ATRPoints = ATRMulti*AvgTrueRange(ATRPeriod) else ATRPoints = 0;
RetraceFctrUp = 1 + RetracePct * .01;
RetraceFctrDn = 1 - RetracePct * .01;
// print("ATRPoints = ", ATRPoints);
if NewSwingPrice -1 then
begin
if ( RetraceType = 1 and TLDir = SwingPrice + RetracePnts ) or
( RetraceType = 2 and TLDir = SwingPrice * RetraceFctrUp ) or
( RetraceType = 3 and TLDir = 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
if ( RetraceType = 1 and TLDir >= 0 and NewSwingPrice <= SwingPrice - RetracePnts ) or
( RetraceType = 2 and TLDir >= 0 and NewSwingPrice <= SwingPrice * RetraceFctrDn ) or
( RetraceType = 3 and TLDir >= 0 and NewSwingPrice <= SwingPrice - ATRPoints )
then
{ prepare to add new dn TL }
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);
if AddTL then
{ add new TL and reset AddTL }
begin
PeakTextRef = Text_New(Date, Time, Close, " ") ;
Text_SetColor(PeakTextRef, TextColor ) ;
if ShowZigZagLines then
begin
TLRef = TL_New( SwingDate, SwingTime, SwingPrice, SwingDate[1], SwingTime[1],
SwingPrice[1] ) ;
Text_SetStyle(PeakTextRef, 2, 2 );
TL_SetExtLeft( TLRef, false ) ;
TL_SetExtRight( TLRef, false ) ;
TL_SetSize( TLRef, ZigZagLineWidth ) ;
TL_SetColor( TLRef, ZigZagLineColor ) ;
LastSwingPrice = SwingPrice[1];
end ;
if ShowSwingPointLines then
begin
TLSwing = TL_New( Date[1], Time[1], SwingPrice, Date, Time, SwingPrice ) ;
if TLDir = -1 then
TL_SetColor( TLSwing, SwingLowColor )
else
TL_SetColor( TLSwing, SwingHighColor ) ;
TL_SetStyle( TLSwing, SwingLineStyle ) ;
TL_SetExtLeft( TLSwing, False ) ;
TL_SetExtRight( TLSwing, False ) ;
end ;
if TLDir = -1 then
PeakStr = "" + NumToStr(SwingPrice,DecimalPlaces) + " / " + NumToStr(LastSwingPrice - SwingPrice, DecimalPlaces )
else
PeakStr = "" + NumToStr(SwingPrice,DecimalPlaces) + " / " + NumToStr(SwingPrice - LastSwingPrice, DecimalPlaces ) ;
Text_SetString(PeakTextRef, PeakStr );
if TLDir = -1 then
Text_SetLocation(PeakTextRef, SwingDate, SwingTime, SwingPrice - VertOffset )
else
Text_SetLocation(PeakTextRef, SwingDate, SwingTime, SwingPrice + VertOffset );
AddTL = false ;
end
else if UpdateTL then
{ update prev TL and reset UpdateTL }
begin
if ShowZigZagLines then
TL_SetEnd( TLRef, SwingDate, SwingTime, SwingPrice ) ;
if ShowSwingPointLines then
begin
TL_SetEnd( TLSwing, SwingDate, SwingTime, SwingPrice ) ;
TL_SetBegin( TLSwing, SwingDate, SwingTime, SwingPrice ) ;
end ;
if TLDir = -1 then
PeakStr = "" + NumToStr(SwingPrice,DecimalPlaces) + " / " + NumToStr(LastSwingPrice - SwingPrice, DecimalPlaces )
else PeakStr = "" + NumToStr(SwingPrice,DecimalPlaces) + " / " + NumToStr(SwingPrice - LastSwingPrice, DecimalPlaces ) ;
Text_SetString( PeakTextRef, PeakStr );
if TLDir = -1 then
Text_SetLocation(PeakTextRef, SwingDate, SwingTime, SwingPrice - VertOffset)
else
Text_SetLocation(PeakTextRef, SwingDate, SwingTime, SwingPrice + VertOffset);
UpdateTL = false ;
end ;
{************* HamFons' FIB POINTS Code:
goal is to call the LAST SWING HI AND LAST SWING LO from ABOVE CODE
and draw Fib points between them *****************}
if (showDebug) then
print("SaveSwing == ", SaveSwing, " TL Dir = ", TLDir);
//Update Fib lines
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 loop=2 to ArrayMax
begin
DayValue[loop] = DayValue[1] + Diff * FibValue[loop];
end;
for loop=0 to ArrayMax begin
{ SetEnd before SetBegin }
if TrendLine[loop] > 0 then begin
TL_SetEnd (TrendLine[loop], Date, Time, DayValue[loop]);
TL_SetBegin (TrendLine[loop], Date, Time, DayValue[loop]);
end; // if TrendLine
end; // for loop
SaveSwing = False ;
end ; // if SaveSwing
if (ShowFibText) then
begin
for loop=0 to ArrayMax
begin
if FibText[loop] > 0 then
begin
// Text_SetLocation(FibText[loop],Date,Time +30, Dayvalue[loop]);
Text_SetLocation(FibText[loop],Date,Time +HorzOffset, Dayvalue[loop]);
Text_SetString(FibText[loop],NumToStr(DayValue[loo p],DecimalPlaces) + " / " + NumToStr(FibValue[loop],2)) ;
end;
end;
end;
I do not know about exact name ZigZagFibs V2.0 but take a look at this thread https://www.mql5.com/en/forum and this indicator ICWR. Ar least two indicators looks the same with your image.
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
Does anyone have ZigZagFibs V2.0 for MT4?
info here
https://www.tradestation.com/Discussions/Topic.aspx?Topic_ID=44952&SearchTerm=ABC%20Waves&txtExactMatch=