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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | /* 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