PB_forBarChart.efs
EFSLibrary - Discussion Board
File Name: PB_forBarChart.efs
Description:
This study draws Point Break bars directly on bar or candlestick charts.
Formula Parameters:
- Point Break Amount: 3
- Price Source: Close - [Open, High, Low, Close, HL/2, HLC/3, OHLC/4]
- Up Color: Light Green
- Dn Color: Light Red
- Outline Color: Grey
Notes:
NA
Download File:
PB_forBarChart.efs
EFS Code:
/***************************************************************** Provided By : eSignal (c) Copyright 2004 Description: Point Break Bars for Bar Chart Version: 1.0 Notes: This study displays PB bars on regular bar or candlestick chart. Formula Parameters: Defaults: Point Break Amount 3 Price Source Close Up Color Light Green Dn Color Light Red Outline Color Grey *****************************************************************/ function preMain() { setPriceStudy(true); setStudyTitle("Point Break Bars"); setCursorLabelName("PB Open", 0); setCursorLabelName("PB High", 1); setCursorLabelName("PB Low", 2); setCursorLabelName("PB Close", 3); setPlotType(PLOTTYPE_SQUAREWAVE, 0); setPlotType(PLOTTYPE_SQUAREWAVE, 1); setPlotType(PLOTTYPE_SQUAREWAVE, 2); setPlotType(PLOTTYPE_SQUAREWAVE, 3); setDefaultBarThickness(2, 0); setDefaultBarThickness(2, 1); setDefaultBarThickness(2, 2); setDefaultBarThickness(2, 3); setDefaultBarFgColor(Color.RGB(95,95,95), 0); setDefaultBarFgColor(Color.RGB(95,95,95), 1); setDefaultBarFgColor(Color.RGB(95,95,95), 2); setDefaultBarFgColor(Color.RGB(95,95,95), 3); setShowTitleParameters(false); var fp1 = new FunctionParameter("nPB", FunctionParameter.NUMBER); fp1.setName("Point Break Amount"); fp1.setLowerLimit(2); fp1.setDefault(3); var fp2 = new FunctionParameter("sSource", FunctionParameter.STRING); fp2.setName("Price Source"); fp2.addOption("Open"); fp2.addOption("High"); fp2.addOption("Low"); fp2.addOption("Close"); fp2.addOption("HL/2"); fp2.addOption("HLC/3"); fp2.addOption("OHLC/4"); fp2.setDefault("Close"); var fp3 = new FunctionParameter("cUp", FunctionParameter.COLOR); fp3.setName("Up Color"); fp3.setDefault(Color.RGB(140, 220, 140)); var fp4 = new FunctionParameter("cDn", FunctionParameter.COLOR); fp4.setName("Down Color"); fp4.setDefault(Color.RGB(220, 140, 140)); var fp5 = new FunctionParameter("cOutline", FunctionParameter.COLOR); fp5.setName("Outline Color"); fp5.setDefault(Color.RGB(95,95,95)); } var aPBopen = null; var aPBhigh = null; var aPBlow = null; var aPBclose = null; var bInit = false; var vPBtrend = "Up"; // Up or Dn - Developing PB bar var vPBtrend1 = "Up"; // Up or Dn - Confirmed PB bar var bNew = false; // New PB bar var Price = null; var Price1 = null; function main(nPB, sSource, cUp, cDn, cOutline) { var nState = getBarState(); if (nState == BARSTATE_NEWBAR) { Price1 = Price; vPBtrend1 = vPBtrend; if (bNew == true) { // New PB bar confirmed, update PB arrays var vH = aPBhigh[0]; var vL = aPBlow[0]; if (vPBtrend == "Up") { aPBopen.pop(); aPBopen.unshift(vH); aPBhigh.pop(); aPBhigh.unshift(Price); aPBlow.pop(); aPBlow.unshift(vH); aPBclose.pop(); aPBclose.unshift(Price); } else if (vPBtrend == "Dn") { aPBopen.pop(); aPBopen.unshift(vL); aPBhigh.pop(); aPBhigh.unshift(vL); aPBlow.pop(); aPBlow.unshift(Price); aPBclose.pop(); aPBclose.unshift(Price); } } } Price = null; switch (sSource) { case "Open" : Price = open(0); break; case "High" : Price = high(0); break; case "Low" : Price = low(0); break; case "Close" : Price = close(0); break; case "HL/2" : Price = (high(0) + low(0) )/ 2; break; case "HLC/3" : Price = (high(0) + low(0) + close(0) )/ 3; break; case "OHLC/4" : Price = (open(0) + high(0) + low(0) + close(0) )/ 4; break; } if (bInit == false) { setStudyTitle(nPB + " Point Break Bars (Price Source: " + sSource + ")"); setDefaultBarFgColor(cOutline, 0); setDefaultBarFgColor(cOutline, 1); setDefaultBarFgColor(cOutline, 2); setDefaultBarFgColor(cOutline, 3); aPBopen = new Array(nPB); aPBhigh = new Array(nPB); aPBlow = new Array(nPB); aPBclose = new Array(nPB); for (var i = 0; i < nPB; i++) { aPBopen[i] = Price; aPBhigh[i] = Price; aPBlow[i] = Price; aPBclose[i] = Price; } bInit = true; } // Test for new PB bar if (Price1 == null) return; bNew = false; vPBtrend = vPBtrend1; var nPBmax = aPBhigh[0]; var nPBmin = aPBlow[0]; for (var i = 0; i < nPB; i++) { nPBmax = Math.max(nPBmax, aPBhigh[i]); nPBmin = Math.min(nPBmin, aPBlow[i]); } if (vPBtrend == "Up") { if (Price > nPBmax) { bNew = true; } else if (Price < nPBmin) { bNew = true; vPBtrend = "Dn"; } } else if (vPBtrend == "Dn") { if (Price > nPBmax) { bNew = true; vPBtrend = "Up"; } else if (Price < nPBmin) { bNew = true; } } // Current or developing PB bar var nPBo = aPBopen[0]; var nPBh = aPBhigh[0]; var nPBl = aPBlow[0]; var nPBc = aPBclose[0]; if (bNew == true) { // New unconfirmed PB bar var vH = aPBhigh[0]; var vL = aPBlow[0]; if (vPBtrend == "Up") { nPBo = vH; nPBh = Price; nPBl = vH; nPBc = Price; } else if (vPBtrend == "Dn") { nPBo = vL; nPBh = vL; nPBl = Price; nPBc = Price; } } // PB Bar Coloring var PBColor = cDn; if (vPBtrend == "Up") PBColor = cUp; for (var i = 0; i < 4; i++) { setBarBgColor(PBColor, i, nPBl, nPBh); } return new Array(nPBo, nPBh, nPBl, nPBc); }