_SECTION_BEGIN("New formula 75");
SetChartOptions(0,chartShowArrows|chartShowDates);
bk=ParamColor( "Bk col",ColorRGB(85,90,60));
SetChartBkColor(bk);
amount = Param("Sensitivity", 0.5, 0.1, 2, 0.1 );
array = C ;
zz0 = Zig( array, amount );
zz1 = Ref( zz0, -1 );
zz2 = Ref( zz0, -2 );
tr = ValueWhen(zz0 > zz1 AND zz1 < zz2, zz1);
pk = ValueWhen(zz0 < zz1 AND zz1 > zz2, zz1);
PU = tr + 0.01 * abs(tr)*amount;
PD = pk - 0.01 * abs(pk)*amount;
ZZT = IIf( array >= PU AND zz0 > zz1, 1,
IIf( array <= PD AND zz0 < zz1, -1, 0 ) );
ZZT = ValueWhen( ZZT != 0, ZZT );
Buy_Valid_=zzt>0;
Sell_Valid_=zzt<0;
Buy_Valid = ExRem(Buy_Valid_,Sell_Valid_);
Sell_Valid = ExRem(Sell_Valid_,Buy_Valid_);
Plot(Ref(Buy_valid,0),"",ColorRGB(0,0,100),styleHistogram|styleDashed|styleOwnScale|styleNoLabel,0,0 ,0,-1);
Plot(Ref(Sell_valid,0),"",ColorRGB(100,0,0),styleHistogram|styleDashed|styleOwnScale|styleNoLabel,0, 0,0,-1);
Candlecol=IIf(BarsSince(Buy_Valid)<BarsSince(Sell_Valid) AND BarsSince(Buy_Valid)!=0,5,
IIf(BarsSince(Buy_Valid)>BarsSince(Sell_Valid) AND BarsSince(Sell_Valid)!=0,4,1));
cc1=IIf(Buy_valid,colorYellow,IIf(Sell_valid,colorBlack,Candlecol));
SetBarFillColor(Cc1);
Plot(C,"Cas-S_D-Zone",Cc1,64,0,0,0,0);
pk=BarsSince(Buy_Valid)<BarsSince(Sell_Valid) ;//AND BarsSince(Buy_Valid)!=0;//Zz>Ref(zz,-1);
tr=BarsSince(Buy_Valid)>BarsSince(Sell_Valid) ;//AND BarsSince(Sell_Valid)!=0;//Zz<Ref(zz,-1);
Ll=LowestSince(sell_valid,L,1);
hH=HighestSince(Buy_Valid,H,1);
Llm=LowestSince(sell_valid,Min(O,C),1);
hHm=HighestSince(Buy_Valid,Max(O,C),1);
xx=Cum(1);
NoLines = Param("No of Lines",5,1,10,1);
Col2=ParamColor( "Res Color", colorRed );
Col1=ParamColor( "Sup Color", colorGreen );
for( i = 1; i < NoLines+1 ; i++ )
{
scol=ColorBlend(Col1,2,0.1*i);
rcol=ColorBlend(Col2,2,0.1*i);
px1 = LastValue(ValueWhen(Buy_valid,Cum(1),i)) ;
py1 = LastValue(ValueWhen(Buy_valid,Ll,i)) ;
pz1 = LineArray(px1, py1, (BarCount-1), py1);
Plot(pz1,"",scol,32);
tx1 = LastValue(ValueWhen(sell_valid,Cum(1),i)) ;
ty1 = LastValue(ValueWhen(sell_valid,Hh,i)) ;
tz1 = LineArray(tx1, ty1, (BarCount-1), ty1);
Plot(tz1,"",rcol,32);
px1m = LastValue(ValueWhen(Buy_valid,Cum(1),i)) ;
py1m = LastValue(ValueWhen(Buy_valid,Llm,i)) ;
pz1m = LineArray(px1m, py1m, (BarCount-1), py1m);
PlotOHLC(pz1,pz1,pz1m,pz1m,"",scol,styleCloud|styleNoLabel,0,0,0,-i-nolines);
tx1m = LastValue(ValueWhen(sell_valid,Cum(1),i)) ;
ty1m = LastValue(ValueWhen(sell_valid,Hhm,i)) ;
tz1m = LineArray(tx1m, ty1m, (BarCount-1), ty1m);
PlotOHLC(tz1,tz1,tz1m,tz1m,"",rcol,styleCloud|styleNoLabel,0,0,0,-i-nolines);
}
for( j = 0; j < BarCount; j++ )
{
if( Buy_valid [j]) PlotText( "Tr\n"+Ll[ j ], j, Ll[j], colorPaleGreen );
if( Sell_valid[j] ) PlotText( "Pk\n"+Hh[ j ], j, Hh[j], colorRose);
}
_SECTION_END();
_SECTION_BEGIN("Modded Negative Volume Index");
function xNVI()
{
xROC = ROC(Avg,1);
xNVI = IIf(V < Ref(V,-1), Nz(Ref(xNVI,-1),0) + xROC, Nz(Ref(xNVI,-1),0));
return xNVI ;
}
Plot( xNVI(), _DEFAULT_NAME(), ParamColor("Color", colorCycle ), ParamStyle("Style") );
_SECTION_END();
_SECTION_BEGIN("Modded Negative Volume Index");
function xNVI()
{
xROC = ROC(Avg,1);
xNVI = IIf(V < Ref(V,-1), Nz(Ref(xNVI,-1),0) + xROC, Nz(Ref(xNVI,-1),0));
return xNVI ;
}
Plot( xNVI(), _DEFAULT_NAME(), ParamColor("Color", colorCycle ), ParamStyle("Style") );
_SECTION_END();
_SECTION_BEGIN( "Modded Negative Volume Index" );
// fixed self referencing by trash
function xNVI(array)
{
xROC = ROC( array, 1 );
Vcond = ROC( V, 1 ) < 0;
_NVI = 0; // initialize _NVI
for ( i = 1; i < BarCount; i++ )
{
prevNVI = _NVI[ i - 1 ]; // previous value of _NVI
if ( Vcond[i] )
_NVI[ i ] = prevNVI + xROC[ i ];
else
_NVI[ i ] = prevNVI;
}
return _NVI + 100;
}
Plot( xNVI(Avg), _DEFAULT_NAME(), ParamColor( "Color", colorCycle ), ParamStyle( "Style" ) );
_SECTION_END();
_SECTION_BEGIN("Modded Negative Volume Index");
function xNVI()
{
xROC = ROC(Avg,1);
xNVI = IIf(V < Ref(V,-1), Nz(Ref(xNVI,-1),0) + xROC, Nz(Ref(xNVI,-1),0));
return xNVI ;
}
Plot( xNVI(), _DEFAULT_NAME(), ParamColor("Color", colorCycle ), ParamStyle("Style") );
_SECTION_END();
_SECTION_BEGIN( "Modded Negative Volume Index" );
//http://www.amibroker.com/kb/2014/11/04/indicators-based-on-user-values/
procedure SaveRestorePrices( DoSave )
{
global SaveO, SaveH, SaveL, SaveC, SaveV;
if( DoSave )
{
SaveO = Open;
SaveH = High;
SaveL = Low;
SaveC = Close;
SaveV = Volume;
}
else
{
Open = SaveO;
High = SaveH;
Low = SaveL;
Close = SaveC;
Volume = SaveV;
}
}
// save OHLCV arrays
SaveRestorePrices( True );
// calculate our array
customArray = Avg;
// override built-in array(s)
Close = customArray;
// calculate our function, MACD and Signal in this case
Plot( NVI(), "NVI", colorRed );
// restore OHLCV arrays
SaveRestorePrices( False );
_SECTION_END();
_SECTION_BEGIN( "Modded Negative Volume Index" );
// fixed self referencing by trash
function xNVI(array)
{
xROC = ROC( array, 1 );
Vcond = ROC( V, 1 ) < 0;
_NVI = 0; // initialize _NVI
for ( i = 1; i < BarCount; i++ )
{
prevNVI = _NVI[ i - 1 ]; // previous value of _NVI
if ( Vcond[i] )
_NVI[ i ] = prevNVI + xROC[ i ];
else
_NVI[ i ] = prevNVI;
}
return _NVI + 100;
}
Plot( xNVI(Avg), _DEFAULT_NAME(), ParamColor( "Color", colorCycle ), ParamStyle( "Style" ) );
_SECTION_END();