/***************************************************************** Provided By : Benjamin Heydecker AKA(JelloMonkey) EFS Formula : Heikin-Ashi Notes: * Non-price study * Draws most recent 200 bars * Formula Parameters - Bullish Color Default: Blue - Bearish Color Default: Red *****************************************************************/ function preMain() { setPriceStudy(true); setStudyTitle("Heikin-Ashi Chart "); setCursorLabelName("HA-High", 0); setCursorLabelName("HA-Low", 1); setCursorLabelName("HA-Open", 2); setCursorLabelName("HA-Close", 3); setDefaultBarFgColor(Color.black, 0); setDefaultBarFgColor(Color.black, 1); setDefaultBarFgColor(Color.black, 2); setDefaultBarFgColor(Color.black, 3); setPlotType(PLOTTYPE_DOT, 0); setPlotType(PLOTTYPE_DOT, 1); setPlotType(PLOTTYPE_DOT, 2); setPlotType(PLOTTYPE_DOT, 3); setDefaultBarThickness(0, 0); setDefaultBarThickness(0, 1); setDefaultBarThickness(0, 2); setDefaultBarThickness(0, 3); setColorPriceBars(true); setDefaultPriceBarColor(Color.black); var fp1 = new FunctionParameter("cBull", FunctionParameter.COLOR); fp1.setName("Bullish Candles"); fp1.setDefault(Color.blue); var fp2 = new FunctionParameter("cBear", FunctionParameter.COLOR); fp2.setName("Bearish Candles"); fp2.setDefault(Color.red); } var haClose = null; var haOpen = null; var haClose1 = null; var haOpen1 = null; var iCntr = 0; function main(cBull, cBear) { var nState = getBarState(); if (nState == BARSTATE_NEWBAR) { if ((haClose == null || haOpen == null) && close(-1) != null) { haClose = close(-1); haOpen = open(-1); } haClose1 = haClose; haOpen1 = haOpen; iCntr += 1; if (iCntr > 200) iCntr = 0; } if (haClose1 == null || haOpen1 == null) return; haOpen = (haOpen1 + haClose1) / 2; haClose = (open() + high() + low() + close()) / 4; var haHigh = Math.max(high(), haOpen, haClose); var haLow = Math.min(low(), haOpen, haClose); //candlesticks var vColor = Color.black; if (haClose > haOpen) vColor = cBull; if (haClose < haOpen) vColor = cBear; //setBarFgColor(vColor, 2); //setBarFgColor(vColor, 3); setPriceBarColor(vColor); //drawLineRelative(0, haHigh, 0, haLow, PS_SOLID, 1, Color.black, "Shadow"+iCntr); //drawLineRelative(0, haOpen, 0, haClose, PS_SOLID, 3, vColor, "Body"+iCntr); var retArray = new Array(4); retArray[0] = haHigh.toFixed(2)*1; retArray[1] = haLow.toFixed(2)*1; retArray[2] = haOpen.toFixed(2)*1; retArray[3] = haClose.toFixed(2)*1; return ;//retArray; } // End of Heikin-Ashi code