AFL Library
This is read-only version of AFL library entry. Ability to add user formulas
and comment is only available from members-only area.
Details:
Formula name:
Pivots And Prices And Swing Volume
Author/Uploader:
reinsley - (email hidden)
Date/Time added:
2010-04-21 03:54:16
Origin:
Keywords:
volume swing pivot
Level:
basic
Flags:
indicator
DISCLAIMER: Most formulas present in AFL on-line library are submitted
by the users and are provided here on an "as is" and "as available" basis.
AmiBroker.com
makes no representations or warranties of any kind to the contents or the operation
of material presented here. We do not maintain nor provide technical support
for 3rd party formulas.
Description:
// Volume cum
// cumulate the volume for each swing
// by reinsley
// Following the S&C \"Price+Volume=Price movement by Tom ORD
// S&C\'s document is stored in Yahoo! Group files and
// posted in user\'s list
// Mod of Pivots And Prices formula
Formula:
// Volume cum
//----------------------------------------------------------
// cumulate the volume for each swing
// by reinsley
// Following the S&C "Price+Volume=Price movement by Tom ORD
// S&C's document is stored in Yahoo! files
// Mod of the Pivots And Prices formula
//----------------------------------------------------------
_SECTION_BEGIN( "Price" );
_N( Title = StrFormat( "{{NAME}} - {{INTERVAL}} {{DATE}} \nOpen %g \nHigh %g
\nLow %g \nClose %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 )
) ) );
Plot( C, "", colorBlack , styleCandle );
_SECTION_END();
_SECTION_BEGIN( "pivot" );
price = ParamToggle( "Plot Price", "Off|On", 1 );
num = Param( "trend", 4, 1, 10, 1 );
dist = 0.5 * ATR( 10 );
rightfig = Param( "rightfig ", 7, 1, 10, 1 );
xspace = Param( "GraphXSpace ", 10, 1, 20, 1 );
mHHV = HHV( H, num );
mLLV = LLV( L, num );
FirstVisibleBar = Status( "FirstVisibleBar" );
Lastvisiblebar = Status( "LastVisibleBar" );
for ( b = Firstvisiblebar + num; b <= Lastvisiblebar AND b < BarCount - num;
b++ )
{
i = num;
ml = 0;
mu = 0;
while ( i > 0 )
{
if ( L[b] < L[b+i] )
{
ml++;
}
if ( H[b] > H[b+i] )
{
mu++;
}
i--;
}
if ( ml == num AND L[B] == mLLV[B] )
{
PlotText( "\n *\n", b, L[b], colorGreen );
if ( price == 1 )
{
p = StrRight( NumToStr( L[b], 4.1 ), rightfig );
PlotText( "\n\n" + p, b - 2 , L[b] , colorGreen );
}
}
if ( mu == num AND H[B] == mHHV[B] )
{
PlotText( " *\n", b, H[b], colorRed );
if ( price == 1 )
{
p = StrRight( NumToStr( H[b], 4.1 ), rightfig );
PlotText( p , b - 2 , H[b] + dist[b] + 1, colorRed );
}
}
}
_SECTION_END();
// Vertical Daily Segment
segments = IIf( Interval() < inDaily, Day(), Month() );
segments = segments != Ref( segments , -1 );
Plot( segments, "", colorDarkBlue, styleHistogram | styleOwnScale | styleDashed
| styleNoLabel );
/*
Volbar = TimeFrameGetPrice( "V", in1Minute * 20, 0 );
_TRACE( "Volbar = " + Volbar );
*/
// Seconds Remaining
function GetSecondNum()
{
Time = Now( 4 );
Seconds = int( Time % 100 );
Minutes = int( Time / 100 % 100 );
Hours = int( Time / 10000 % 100 );
SecondNum = int( Hours * 60 * 60 + Minutes * 60 + Seconds );
return SecondNum;
}
RequestTimedRefresh( 1 );
TimeFrame = Interval();
SecNumber = GetSecondNum();
SecsLeft = SecNumber - int( SecNumber / TimeFrame ) * TimeFrame;
SecsToGo = TimeFrame - SecsLeft;
Secsleft = SecsToGo % 60 ;
Minleft = int( SecsToGo / 60 );
//Title = Title +"\n\\c07Min " + Minleft + "\n\\c05Secs " + Secsleft ;
Title = Title + "\n\\c07 " + Minleft + "\\c07 : " + "\\c07 " + Secsleft ;
// Zig-Hi-Zag-Lo formula
VolON = ParamToggle( "Plot Volume", "Off|On", 1 );
ZigON = ParamToggle( "Plot Zig", "Off|On", 1 );
pr = Param( "ZigZag change amount", 0.3, 0.05, 20, 0.05 );
pk = PeakBars( H, pr ) == 0;
tr = TroughBars( L, pr ) == 0;
zzHi = Zig( H, pr );
zzLo = Zig( L, pr );
Avg = ( zzHi + zzLo ) / 2;
x = IIf( pk, zzHi, IIf( tr, zzLo, IIf( Avg > Ref( Avg, -1 ), H, L ) ) );
zzHiLo = Zig( x, pr );
zzup = zzHiLo > Ref( zzHiLo, -1 ) ;
zzdn = zzHiLo < Ref( zzHiLo, -1 );
ribboncol = IIf( zzup , colorWhite, colorBlack );
// Plot the Zig ribbon
Plot ( 1, "", ribboncol, styleArea | styleOwnScale | styleNoLabel, 0, 100 );
if ( ZigON == 1 )
Plot( zzHiLo, "", ribboncol , styleNoLabel );
//Swing Volume
Volswing = Sum( V, BarsSince( zzup != Ref( zzup, -1 ) ) + 1 );
SwingBar = BarsSince( zzHiLo != Ref( zzHiLo, -1 ) );
// plot Volume at 5% from bottom's pane
percent = Param( "PositTextVol%", 5, 2, 90, 0.5 );
xshift = Param( "xshift %", 4, 1, 90, 0.5 );
yshift = Param( "yshift %", 3, 1, 90, 0.5 );
Miny = Status( "axisminy" );
Maxy = Status( "axismaxy" );
y = Miny + ( Maxy - Miny ) * percent / 100; // at 5 % above bottom of the
pane
FirstVisibleBar = Status( "FirstVisibleBar" );
Lastvisiblebar = Status( "LastVisibleBar" );
for ( i = Firstvisiblebar + 1; i <= Lastvisiblebar AND i < BarCount - 1; i++ )
{
if ( zzup [i] AND zzup [ i+1] == 0 )
{
if ( VolON == 1 )
{
PlotText( "" + Volswing [ i] , i - xshift , H[i] + yshift ,
colorWhite );
}
}
if ( zzup [i] == 0 AND zzup [ i+1] == 1 )
{
if ( VolON == 1 )
{
PlotText( "" + Volswing [ i] , i - xshift , L[i] - yshift ,
colorBlack );
}
}
}
if ( VolON == 1 )
{
PlotText( "" + Volswing , i + 2 , zzHiLo[BarCount-1], LastValue( ribboncol
) );
}
GraphXSpace = xspace;
Comments:
reinsley reisnley [at] yahoo.fr 2010-07-26 07:38:36Best results are with Zig on Close
Replace the // Zig-Hi-Zag-Lo formula
with the following
// Zig-Hi-Zag-Lo and Zig on Close formula
VolON = ParamToggle( \\\"Plot Volume\\\", \\\"Off|On\\\", 1 );
ZigON = ParamToggle( \\\"Plot ZigHiLo\\\", \\\"Off|On\\\", 1 );
pr = Param( \\\"ZigZag change\\\", 0.15, 0.01, 20, 0.01 );
CloseORhilo = ParamToggle( \\\"ZigOnClose\\\", \\\"ZigOnHiLo\\\", 1 );
if ( CloseORhilo == 1 )
{
pk = PeakBars( C, pr ) == 0;// PeakBars( H, pr ) == 0
tr = TroughBars( C, pr ) == 0;// TroughBars( L, pr ) == 0
zzHi = Zig( C, pr );// Zig( H, pr )
zzLo = Zig( C, pr );// Zig( L, pr )
Avg = ( zzHi + zzLo ) / 2;
x = IIf( pk, zzHi, IIf( tr, zzLo, IIf( Avg > Ref( Avg, -1 ), C, C ) ) );// Ref( Avg, -1 ), H, L ) ) )
}
else
{
pk = PeakBars( H, pr ) == 0;// PeakBars( H, pr ) == 0
tr = TroughBars( L, pr ) == 0;// TroughBars( L, pr ) == 0
zzHi = Zig( H, pr );// Zig( H, pr )
zzLo = Zig( L, pr );// Zig( L, pr )
Avg = ( zzHi + zzLo ) / 2;
x = IIf( pk, zzHi, IIf( tr, zzLo, IIf( Avg > Ref( Avg, -1 ), H, L ) ) );// Ref( Avg, -1 ), H, L ) ) )
}
zzHiLo = Zig( x, pr );
zzup = zzHiLo > Ref( zzHiLo, -1 ) ;
zzdn = zzHiLo < Ref( zzHiLo, -1 );
ribboncol = IIf( zzup , colorWhite, colorBlack );
Plot ( 3, \\\"\\\", ribboncol, styleArea | styleOwnScale | styleNoLabel, 0, 100 );// Plot the Zig ribbon
if ( ZigON == 1 )
Plot( zzHiLo, \\\"\\\", ribboncol , styleNoLabel );
//Swing Volume
Volswing = Sum( V, BarsSince( zzup != Ref( zzup, -1 ) ) + 1 );
SwingBar = BarsSince( zzHiLo != Ref( zzHiLo, -1 ) );
// plot Volume at X % from peak and trough
percent = Param( \\\"PositTextVol%\\\", 5, 2, 90, 0.5 );
xshift = Param( \\\"xshift %\\\", 1.5, 1, 90, 0.5 );
yshift = Param( \\\"yshift %\\\", 5, 1, 90, 0.5 );
Miny = Status( \\\"axisminy\\\" );
Maxy = Status( \\\"axismaxy\\\" );
y = Miny + ( Maxy - Miny ) * percent / 100;
FirstVisibleBar = Status( \\\"FirstVisibleBar\\\" );
Lastvisiblebar = Status( \\\"LastVisibleBar\\\" );
if ( VolON == 1 )
{
for ( i = Firstvisiblebar + 1; i <= Lastvisiblebar AND i < BarCount - 1; i++ )
{
if ( zzup [i] AND zzup [ i+1] == 0 )
{
PlotText( \\\"\\\" + Volswing [ i] , i - xshift , H[i] + yshift , colorWhite );
}
if ( zzup [i] == 0 AND zzup [ i+1] == 1 )
{
PlotText( \\\"\\\" + Volswing [ i] , i - xshift , L[i] - yshift , colorBlack );
}
}
PlotText( \\\"\\\" + Volswing , i + 2 , zzHiLo[BarCount-1], LastValue( ribboncol ) );
}