Skip to main content

Tiger ZIG-ZAG (swing cum positional trade) for Amibroker (AFL)

tigernifty over 15 years ago Amibroker (AFL)

  • Rating:
    5 / 5 (Votes 3)
  • Tags:
    amibroker, zigzag

Dear Friends, am catch the formula from website, am test the same, am sure very nice one. THE MAIN FORMULA NAME IS ZIG-ZAG REVERSAL INDICATOR, friends try to use and enjoy, very enjoyful.

Screenshots

Indicator / Formula

Copy & Paste Friendly
_SECTION_BEGIN("Reversal");
Reversal = Param( _DEFAULT_NAME(), 01.0,0.01,20,0.01);
_SECTION_END();

ZigZArray = Avg;
ZigZArray = Null;

ValFromPro=0;
ValToPro=0;
ValRead=0;

BarFromPro=0;
BarToPro=0;
BarRead=0;

ProcessUndef = 10;
ProcessIncrease = 11;
ProcessDecrease = 12;

Process = ProcessUndef;
ValFromPro=Avg[0];
ValToPro=Avg[0];
BarFromPro=0;
BarToPro=0;
BarRead=0;

function FillLine( startbar, startval, endbar, endval )
{
	for( j = startbar; j <= endbar; j++ )
	{
		ZigZArray[ j ] = startval + (( j - startbar) * (endval-startval)/( endbar - startbar ));
	}
}

function TrtUndef( )
{
	if ( ValRead > ( ((100 + Reversal)/100 ) * ValFromPro ) )///If rupture Increase
	{
		Process = ProcessIncrease;
		ValToPro=ValRead;
		BarToPro=BarRead;
	}
	else
	{
		if ( ValRead < ( ((100- Reversal)/100 ) * ValFromPro ) )  // If rupture Decrease
		{
			Process = ProcessDecrease;
			ValToPro=ValRead;
			BarToPro=BarRead;
		}
		else
		{
			Process = ProcessUndef;
		}
	}
}

function TrtIncrease( )
{
	if ( ValRead > ValToPro )  // Still Increase
	{
		Process = ProcessIncrease;
		ValToPro=ValRead;
		BarToPro=BarRead;
	}
	else   // Break Increase Process
	{
		if ( ValRead <  ( ((100- Reversal)/100 ) * ValToPro ) )   // If break Decrease
		{
			Process = ProcessDecrease;
			ValFromPro=ValToPro;
			BarFromPro=BarToPro;
			ValToPro=ValRead;
			BarToPro=BarRead;
		}
	}
}

function TrtDecrease( )
{
	if ( ValRead < ValToPro )  // Still Decrease
	{
		Process = ProcessDecrease;
		ValToPro=ValRead;
		BarToPro=BarRead;
	}
	else  // Break Decrease Process
	{
		if ( ValRead >  ( ( (100+ Reversal)/100 ) * ValToPro ) ) // If break Decrease
		{
   		   Process = ProcessIncrease;
			ValFromPro=ValToPro;
			BarFromPro=BarToPro;
			ValToPro=ValRead;
			BarToPro=BarRead;
		}
	}
}


for( i = 1; i < BarCount; i++ )
{
	ValRead = Avg[i];
	BarRead = i;

	if ( Process == ProcessUndef )
	{
		TrtUndef();
	}
	else
	{
		if ( Process == ProcessIncrease )
		{
			TrtIncrease();
		}
		else
		{
			TrtDecrease();
		}
	}

	if ( BarToPro == BarRead )
		FillLine( BarFromPro, ValFromPro, BarToPro, ValToPro );
	else
		FillLine( BarToPro, ValToPro, BarRead, ValRead );
}


_SECTION_BEGIN("avg");
SetChartOptions(0,chartShowArrows);
Plot( Avg, _DEFAULT_NAME(), ParamColor("Color", colorBlack ), ParamStyle("Style", styleLine + styleDots, maskPrice ) ); 
_SECTION_END();

 _SECTION_BEGIN("ZigZArray");
Plot( ZigZArray, _DEFAULT_NAME(), ParamColor("Color", colorRed ), ParamStyle("Style", styleLine + styleThick) ); 
_SECTION_END();

5 comments

over 15 years ago

Vaenu999, EACH AND EVERY “V” SHAPE AND INVERTED “V” SHAPE IS A TURNING POINT OF BUY-SELL, SO TRADE ACCORDINGLY. THANK YOU FOR UR INTEREST. ALL THE BEST.

3. dalmas
over 15 years ago

Sorry, but ….

it is NOT clear to me what is the dfference between this code and the built-in command:
Zig(Array, change) .
Have You tried it ??

Regards

4. puduags
over 15 years ago

Scanning the stock facility is not there in this AFL. Which are the stocks to trade today ? Please post.

about 9 years ago

sir,

please let me know, what are the parameters best suited for 1 minute or 2 minute time frame

Leave Comment

Please login here to leave a comment.