/***************************************Provided By : eSignal (c) Copyright 2006Description: Gauging Gap Opportunities by David BukeyVersion 1.0 11/10/2006Notes:* Jan 2007 Issue of Active Trader Magazine* Study requires version 8.0 or later.Formula Parameters: Default:Filled Gap Price Bar Color limeFill Target Color blueFill Target Thickness 2Limit for # of bars to fill gap. 5*****************************************************************/function preMain() { setPriceStudy(true); setStudyTitle("Filled Gaps "); setCursorLabelName("Fill Target", 0); setShowTitleParameters(false); setPlotType(PLOTTYPE_FLATLINES, 0); setColorPriceBars(true); setDefaultPriceBarColor(Color.grey); var fp1 = new FunctionParameter("nFillColor", FunctionParameter.COLOR); fp1.setName("Filled Gap Price Bar Color"); fp1.setDefault(Color.lime); var fp2 = new FunctionParameter("nColor", FunctionParameter.COLOR); fp2.setName("Fill Target Color"); fp2.setDefault(Color.blue); var fp3 = new FunctionParameter("nThick", FunctionParameter.NUMBER); fp3.setName("Fill Target Thickness"); fp3.setLowerLimit(1); fp3.setDefault(2); var fp4 = new FunctionParameter("nLimit", FunctionParameter.NUMBER); fp4.setName("Limit for # of bars to fill gap."); fp4.setLowerLimit(1); fp4.setDefault(5); }// Global Variablesvar bVersion = null; // Version flagvar bInit = false; // Initialization flagvar nFill = null;var nCount = 0;var nGap = 0;function main(nFillColor, nColor, nThick, nLimit) { if (bVersion == null) bVersion = verify(); if (bVersion == false) return; var nState = getBarState(); //Initialization if (bInit == false) { setDefaultBarFgColor(nColor, 0); setDefaultBarThickness(nThick, 0); bInit = true; } var nH_2 = high(-2); var nH_1 = high(-1); var nH_0 = high(0); var nL_2 = low(-2); var nL_1 = low(-1); var nL_0 = low(0); if (nH_2 == null || nL_2 == null) return; if (nState == BARSTATE_NEWBAR && nCount > 0) { if (nGap != 0) { nCount++; if (nCount > nLimit) { nCount = 0; nGap = 0; nFill = null; } } else { nFill = null; } } else if (nCount <= 1) { // first gap bar if (nL_0 > nH_1 ) { nCount = 1 nFill = nH_1; nGap = 1; drawShapeRelative(0, (nFill+nL_0)/2, Shape.UPARROW, null, Color.red, null, "gap"+rawtime(0)); } if (nH_0 < nL_1 ) { nCount = 1; nFill = nL_1; nGap = -1; drawShapeRelative(0, (nFill+nH_0)/2, Shape.DOWNARROW, null, Color.red, null, "gap"+rawtime(0)); } if (nL_0 <= nH_1 && nH_0 >= nL_1) { nCount = 0; nFill = null; nGap = 0; removeShape("gap"+rawtime(0)); } } if (nCount > 1) { // Filled Gap check if ( (nGap == 1 && nL_0 <= nFill) || (nGap == -1 && nH_0 >= nFill) ) { setPriceBarColor(nFillColor); nGap = 0; nCount = 0; } } return nFill;}function verify() { var b = false; if (getBuildNumber() < 779) { drawTextAbsolute(5, 35, "This study requires version 8.0 or later.", Color.white, Color.blue, Text.RELATIVETOBOTTOM|Text.RELATIVETOLEFT|Text.BOLD|Text.LEFT, null, 13, "error"); drawTextAbsolute(5, 20, "Click HERE to upgrade.@URL=http://www.esignal.com/download/default.asp", Color.white, Color.blue, Text.RELATIVETOBOTTOM|Text.RELATIVETOLEFT|Text.BOLD|Text.LEFT, null, 13, "upgrade"); return b; } else { b = true; } return b;} |