Stock Portfolio Organizer
The ultimate porfolio management solution.
WiseTrader Toolbox
#1 Selling Amibroker Plugin featuring:
Volume Spike Exploration for Amibroker (AFL)
Demo code by Progster in response to this thread here and posted in this thread
The formula is an exploration for finding volume spikes:
- A volume spike is defined to be when volume exceeds a StdDev above it’s moving average
- Looking back, the code filters for a volume spike an exact # of bars ago
- Looking forward, the code filters for the first volume spike that takes place after the current bar.
Similar Indicators / Formulas
Indicator / Formula
/*
VolSpikeDemo_01.afl
Demo code by Progster in response to:
http://finance.groups.yahoo.com/group/amibroker/message/124977
This is Exploration code.
*/
MaxBack = 150; // maximum number of bars to look back
MaxFwd = 30; // maximum number of bar to look forward
// Exploration parameters
ShowBack = ParamToggle("ShowBack","No|Yes",1);
LB = Param("LookBack",1,1,MaxBack,1); // LookBack (for vol spikes exactly this many bars ago)
ShowFwd = ParamToggle("ShowFwd","No|Yes",0);
LF = Param("LookFwd",10,1,MaxFwd,1); // LookFwd (for vol spikes up to this many bars in the future)
// Array calculations
MA_V = (MA(V,MaxBack)) ;
SD_V = StDev(V,MaxBack) ;
VolSpike = Volume > (MA_V + SD_V);
// Use array function BarsSince() to look back (convenient and fast)
BarsSinceVolSpike = BarsSince(VolSpike);
// Use a loop to look forward (less convenient, less fast)
BarsToVolSpike = -1 ;
if ( ShowFwd )
{
for ( idx = 0 ; idx < ( BarCount - MaxFwd ); idx++ )
{
// Since jdx is positive, we are looking into the future relative to the current bar
for ( jdx = 1; jdx < MaxFwd; jdx++ )
{
if ( VolSpike[idx + jdx] )
{
BarsToVolSpike[idx] = jdx;
break;
}
}
}
}
// Set exploration Filter according to whether we are looking back, forward, or both
if(ShowBack AND ShowFwd){
Filter = (BarsSinceVolSpike == LB) OR (BarsToVolSpike >= 0) ;
}
else if ( ShowBack ){
Filter = (BarsSinceVolSpike == LB) ;
}
else if ( ShowFwd ){
Filter = (BarsToVolSpike >= 0) ;
}
// Info at current bar
AddColumn( DateTime(), "cDate", formatDateTime ); // c = "current"
/*
AddColumn(Volume, "cVolume" );
AddColumn(MA_V, "cMA_V" );
AddColumn(SD_V, "cSD_V" );
*/
// Info at the previous VolSpike bar. p = "previous" or "past"
if ( ShowBack )
{
// Volume-based calcs with no particular formatting applied
AddColumn( LB, "BarsBack" );
AddColumn( Ref( DateTime(), -LB ), "pDate", formatDateTime );
AddColumn( Ref( Volume, -LB ), "pVolume" );
AddColumn( Ref( MA_V, -LB ), "pMA_V" );
AddColumn( Ref( SD_V, -LB ), "pSD_V" );
}
// Info at the next VolSpike bar. f = "forward"
if ( ShowFwd )
{
textColor = colorDefault ;
BGColor = IIf( BarsToVolSpike < 0, colorRed, colorDefault ) ; // Use Red BG color if no forward vol spike found
// Volume-based calcs formetted to 0 decimals
AddColumn( BarsToVolSpike, "BarsFwd", 1.0, textColor, BGColor );
AddColumn( Ref( DateTime(), BarsToVolSpike ), "fDate", formatDateTime, textColor, BGColor );
AddColumn( Ref( Volume, BarsToVolSpike ), "fVolume", 1.0, textColor, BGColor );
AddColumn( Ref( MA_V, BarsToVolSpike ), "fMA_V", 1.0, textColor, BGColor );
AddColumn( Ref( SD_V, BarsToVolSpike ), "fSD_V", 1.0, textColor, BGColor );
}1 comments
Leave Comment
Please login here to leave a comment.
Back
Hi do you have afl for volume spike in line chart
thanks