AV.efs EFSLibrary - Discussion Board
File Name: AV.efs
Description:
AV
Formula Parameters:
Wide : 2
Acc : True
Notes:
Download File:
AV.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: AV Version: 1.0 09/25/2009 Formula Parameters: Default: Wide 2 Acc True Notes: **********************************/ var fpArray = new Array(); var bInit = false; function preMain(){ setPriceStudy(false); setShowCursorLabel(true); setShowTitleParameters(false); setStudyTitle("AV"); setCursorLabelName("M", 0); setPlotType(PLOTTYPE_LINE, 0); setDefaultBarFgColor(Color.blue, 0); setCursorLabelName("L", 1); setPlotType(PLOTTYPE_LINE, 1); setDefaultBarFgColor(Color.red, 1); setCursorLabelName("H", 2); setPlotType(PLOTTYPE_LINE, 2); setDefaultBarFgColor(Color.green, 2); var x = 0; fpArray[x] = new FunctionParameter("Wide", FunctionParameter.NUMBER); with(fpArray[x++]) { setLowerLimit(1); setDefault(2); } fpArray[x] = new FunctionParameter("Acc", FunctionParameter.BOOLEAN); with(fpArray[x++]) { setDefault("true"); } } var xAV1 = null; var xAV2 = null; var xAV3 = null; function main(Wide, Acc) { var nBarState = getBarState(); var AI1 = 0; var AI2 = 0; var AI3 = 0; var BI1 = 0; var BI2 = 0; var BI3 = 0; if (nBarState == BARSTATE_ALLBARS) { if(Wide == null) Wide = 2; if(Acc == null) Acc = true; } if (bInit == false) { xAV1 = efsInternal("Calc_AV", Wide); xAV2 = getSeries(xAV1, 1); xAV3 = getSeries(xAV1, 2); bInit = true; } AI1 = xAV1.getValue(0); AI2 = xAV2.getValue(0); AI3 = xAV3.getValue(0); BI1 = xAV1.getValue(-Wide); BI2 = xAV2.getValue(-Wide); BI3 = xAV3.getValue(-Wide); if (Acc) { if (AI3 == null) return; return new Array(AI1, AI2, AI3); } else { if (BI3 == null) return; AI1 = (AI1 - BI1) / Wide; AI2 = (AI2 - BI2) / Wide; AI3 = (AI3 - BI3) / Wide; return new Array(AI1, AI2, AI3); } return; } var bSecondInit = false; var xHigh = null; var xLow = null; var xHmom = null; var xLmom = null; function Calc_AV(Wide) { var mp1 = 0; var mp2 = 0; var VI1 = 0; var VI2 = 0; var VI3 = 0; if (!bSecondInit) { xHigh = high(); xLow = low(); xHmom = mom(Wide, high()); xLmom = mom(Wide, low()); } if (xHmom.getValue(0) == null) return; mp1 = xHigh.getValue(0) - (xHigh.getValue(0) - xLow.getValue(0)) / 2; mp2 = xHigh.getValue(-Wide) - (xHigh.getValue(-Wide) - xLow.getValue(-Wide)) / 2; VI1 = (mp1 - mp2) * 100 / Wide; VI2 = xLmom.getValue(0) * 100 / Wide; VI3 = xHmom.getValue(0) * 100 / Wide; return new Array(VI1, VI2, VI3) }