TSF_VolOscAvg.efs
File Name: TSF_VolOscAvg.efs
Description:
TFS: Volume Oscillator
Formula Parameters:
- AvgLen : 7
Notes:
This is the second part of TFS trading strategy. The concept of this indicator is similar to that of On-Balance Volume indicator (OBV). It is calculated according to these rules:
- If Close > Open, Volume is positive
- If Close < Open, Volume is negative
- If Close = Open, Volume is neutral
Then you take the 7-day MA of the results.
Download File:
TSF_VolOscAvg.efs
EFS Code:
/********************************* Provided By: eSignal (Copyright c eSignal), a division of Interactive Data Corporation. 2009. All rights reserved. This sample eSignal Formula Script (EFS) is for educational purposes only and may be modified and saved under a new file name. eSignal is not responsible for the functionality once modified. eSignal reserves the right to modify and overwrite this EFS file with each new release. Description: TFS: Volume Oscillator Version: 1.0 05/28/2009 Formula Parameters: Default: AvgLen 7 Notes: This is the second part of TFS trading strategy. The concept of this indicator is similar to that of On-Balance Volume indicator (OBV). It is calculated according to these rules: If Close > Open, Volume is positive If Close < Open, Volume is negative If Close = Open, Volume is neutral Then you take the 7-day MA of the results. **********************************/ var fpArray = new Array(); var bInit = false; function preMain(){ setStudyTitle("TFS: Volume Oscilator"); setCursorLabelName("VolOsc", 0); setPlotType(PLOTTYPE_HISTOGRAM, 0); setDefaultBarFgColor(Color.blue, 0); addBand(0, PS_SOLID, 1, Color.red); var x = 0; fpArray[x] = new FunctionParameter("AvgLen", FunctionParameter.NUMBER); with(fpArray[x++]){ setLowerLimit(1); setDefault(7); } } var xTFS_VolumeOsc = null; function main(AvgLen){ var nBarState = getBarState(); var nTFS_VolumeOsc = 0; if (nBarState == BARSTATE_ALLBARS){ if (AvgLen == null) AvgLen = 7; } if (bInit == false){ xTFS_VolumeOsc = efsInternal("Calc_TFS_VolumeOsc", AvgLen); bInit = true; } nTFS_VolumeOsc = xTFS_VolumeOsc.getValue(0); if (nTFS_VolumeOsc == null) return; return nTFS_VolumeOsc; } var bSecondInit = false; var xClose = null; var xOpen = null; var xVolume = null; function Calc_TFS_VolumeOsc(AvgLen){ var nRes = 0; var i = 0; var nVolAccum = 0; if (bSecondInit == false){ xClose = close(); xOpen = open(); xVolume = volume(); bSecondInit = true; } if (xClose.getValue(-AvgLen) == null) return; for (i = 0; i < AvgLen; i++){ if (xClose.getValue(-i) > xOpen.getValue(-i)) nVolAccum += xVolume.getValue(-i); if (xClose.getValue(-i) < xOpen.getValue(-i)) nVolAccum -= xVolume.getValue(-i); } nRes = nVolAccum / AvgLen; return nRes; }