/*****************************************************************Provided By : eSignal. (c) Copyright 2004Study: Using Volume to Detect Shifts In Power, by Vadim GimelfarbVersion: 1.09/3/2004Notes:The background of the bar changes to light grey when the currentTRsV value exceeds the prior bar's value by more than 1.5.Formula Parameters: Default:ATR Length 1TRsV Thickness 2Volume Thickness 3TRsV Color Color.redVolume Color Color.blueDisplay Volume true*****************************************************************/function preMain() { setStudyTitle("True Range Specified Volume "); // TRsV setCursorLabelName("TRsV", 0); setDefaultBarFgColor(Color.red, 0); setDefaultBarThickness(2, 0); // Volume setCursorLabelName("Vol", 1); setDefaultBarFgColor(Color.blue, 1); setDefaultBarThickness(3, 1); setPlotType(PLOTTYPE_HISTOGRAM, 1); setShowTitleParameters(false); var fp1 = new FunctionParameter("nTRlength", FunctionParameter.NUMBER); fp1.setName("ATR Length"); fp1.setLowerLimit(0); fp1.setDefault(1); var fp2 = new FunctionParameter("nThick0", FunctionParameter.NUMBER); fp2.setName("TRsV Thickness"); fp2.setLowerLimit(1); fp2.setDefault(2); var fp2a = new FunctionParameter("nThick1", FunctionParameter.NUMBER); fp2a.setName("Volume Thickness"); fp2a.setLowerLimit(1); fp2a.setDefault(3); var fp3 = new FunctionParameter("cColor0", FunctionParameter.COLOR); fp3.setName("TRsV Color"); fp3.setDefault(Color.red); var fp3a = new FunctionParameter("cColor1", FunctionParameter.COLOR); fp3a.setName("Volume Color"); fp3a.setDefault(Color.blue); var fp4 = new FunctionParameter("bVol", FunctionParameter.BOOLEAN); fp4.setName("Display Volume"); fp4.setDefault(true);}var bEdit = true;var nCntr = 0; var vATR = null;var nTRsV = null;var nTRsV1 = null;function main(nTRlength, nThick0, nThick1, cColor0, cColor1, bVol) { if (bEdit == true) { setDefaultBarFgColor(cColor0, 0); setDefaultBarThickness(nThick0, 0); setDefaultBarFgColor(cColor1, 1); setDefaultBarThickness(nThick1, 1); if (vATR == null) vATR = new ATRStudy(nTRlength); bEdit = false; } if (getBarState() == BARSTATE_NEWBAR && nTRsV != null) { nTRsV1 = nTRsV; nCntr++; if (nCntr > 200) nCntr = 0; } bVol = eval(bVol); var nATR = vATR.getValue(ATRStudy.ATR); if (nATR == null) return; var nVol = volume(); if (nATR == 0) { nTRsV = 0; } else { nTRsV = nVol / nATR; } if (nTRsV1 != null) { if ( (nTRsV / nTRsV1) > 1.5) setBarBgColor(Color.lightgrey); } if (!bVol) nVol += ""; return new Array(nTRsV, nVol);} |