//eSignal_HeikinAshi_v2_1.efs/*********************************Provided By: Interactive Data Corporation (Copyright ? 2010) All rights reserved. This sample eSignal Formula Script (EFS) is for educational purposes only. Interactive Data Corporation reserves the right to modify and overwrite this EFS file with each new release. Description: Heikin-Ashi with smoothingVersion: 2.1 07/19/2011Formula Parameters: Default:Bullish Candles Color.limeBearish Candles Color.redWick Color.greySmoothing NoneT3 Periods 3T3 V Factor 0.5KAMA Periods 2Notes: In version 2.1- is deleted the limitation on visible bar quantities- add possibility to change wick color - is deleted the possibility to change efsTitle from main, because this functionality is not supported- is corrected "Division by zero" mistake for KAMA Smoothing with Period = 2 (when current and previous closes are the same)**********************************/function preMain() { setStudyTitle("Heikin-Ashi"); 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); setShowTitleParameters(true); var fp1 = new FunctionParameter("cBull", FunctionParameter.COLOR); fp1.setName("Bullish Candles"); fp1.setDefault(Color.green); var fp2 = new FunctionParameter("cBear", FunctionParameter.COLOR); fp2.setName("Bearish Candles"); fp2.setDefault(Color.red); var fp3 = new FunctionParameter("cWick", FunctionParameter.COLOR); fp3.setName("Wick"); fp3.setDefault(Color.grey); var fp4 = new FunctionParameter("sSmooth", FunctionParameter.STRING); fp4.setName("Smoothing"); fp4.addOption("None"); fp4.addOption("T3"); fp4.addOption("KAMA"); fp4.setDefault("None"); var fp5 = new FunctionParameter("nT3Periods", FunctionParameter.NUMBER); fp5.setName("T3 Periods"); fp5.setLowerLimit(1); fp5.setDefault(3); var fp6 = new FunctionParameter("vFactor", FunctionParameter.NUMBER); fp6.setName("T3 V Factor"); fp6.setLowerLimit(0); fp6.setDefault(0.5); var fp7 = new FunctionParameter("nKAMAPeriods", FunctionParameter.NUMBER); fp7.setName("KAMA Periods"); fp7.setLowerLimit(2); fp7.setDefault(2);}var haClose = null;var haOpen = null;var haClose1 = null;var haOpen1 = null;var iCntr = 0;// T3 varsvar b = null;var b2 = null;var b3 = null;var c1 = null;var c2 = null;var c3 = null;var c4 = null;var f1 = null;var f2 = null;var e1 = null;var e2 = null;var e3 = null;var e4 = null;var e5 = null;var e6 = null;var e1_1 = 0;var e2_1 = 0;var e3_1 = 0;var e4_1 = 0;var e5_1 = 0;var e6_1 = 0;var Price = null;var bInit = false;// KAMA varsvar nBarCounter = 0;var aAMA = null;var aFPArray = new Array();var bInitialized = false;var bPrimed = false;function main(cBull, cBear, cWick, sSmooth, nT3Periods, vFactor, nKAMAPeriods) { 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; } if (haClose1 == null || haOpen1 == null) return; haOpen = (haOpen1 + haClose1) / 2; haClose = (open(0) + high(0) + low(0) + close(0)) / 4; if (sSmooth == "T3") haClose = T3Avg(nT3Periods, vFactor, haClose); else if (sSmooth == "KAMA") haClose = KAMA(nKAMAPeriods, haClose); if (haClose == null) return; var haHigh = Math.max(high(), haOpen, haClose); var haLow = Math.min(low(), haOpen, haClose); var vColor = Color.black; if (haClose > haOpen) vColor = cBull; if (haClose < haOpen) vColor = cBear; setBarFgColor(cWick, 0); setBarFgColor(cWick, 1); setBarFgColor(vColor, 2); setBarFgColor(vColor, 3); drawLineRelative(0, haHigh, 0, haLow, PS_SOLID, 1, cWick, "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; }//*** T3 ****var counter = 0;function T3Avg(nPeriods, vFactor, vPrice) { if (bInit == false) { b = vFactor; b2 = b * b; b3 = b * b * b; c1 = -b3; c2 = 3 * b2 + 3 * b3; c3 = -6 * b2 - 3 * b - 3 * b3; c4 = 1 + 3 * b + b3 + 3 * b2; f1 = 2 / (nPeriods + 1); f2 = 1 - f1; bInit = true; } if (getBarState() == BARSTATE_NEWBAR) { e1_1 = e1; e2_1 = e2; e3_1 = e3; e4_1 = e4; e5_1 = e5; e6_1 = e6; } e1 = f1 * vPrice + f2 * e1_1; e2 = f1 * e1 + f2 * e2_1; e3 = f1 * e2 + f2 * e3_1; e4 = f1 * e3 + f2 * e4_1; e5 = f1 * e4 + f2 * e5_1; e6 = f1 * e5 + f2 * e6_1; if ((counter++)<=nPeriods ) return null; var T3Average = c1 * e6 + c2 * e5 + c3 * e4 + c4 * e3; return T3Average;} //*** END of T3 Functions ****//*** KAMA ****function KAMA(Period, vClose) { var x; var nNoise; var nSignal; var nSmooth; if (bInitialized == false) { Period = Math.round(Period); aAMA = new Array(Period); for ( x = 0; x < Period; x++ ) { aAMA[x] = 0.0; } bInitialized = true; } if ( getBarState() == BARSTATE_NEWBAR ) { aAMA.pop(); aAMA.unshift(0); nBarCounter++; } if (nBarCounter < Period) return null; if (bPrimed == false) { aAMA[0] = (open(0)+close(0)) / 2 + ( ( (close(0)-open(0)) / (high(0)-low(0)) ) * Math.abs( (close(0)-open(0)) / 2) ); bPrimed = true; return aAMA[0]; } else { aAMA[0] = vClose; } nSignal = Math.abs( close(0) - close(-Period) ); x=0; nNoise = 0; while(x < Period) { nNoise += Math.abs( close(-x)-close(-(x+1)) ); x++; } nSmooth = Math.pow( ( nSignal/(nNoise+0.0001) ) * ( 0.6667 - 0.0645 ) + 0.0645, 2 ); aAMA[0] = aAMA[1] + nSmooth * ( close(0) - aAMA[1] ); return aAMA[0];}//*** END of KAMA ****/*********************************Provided By : eSignal. (c) Copyright 2003EFS Formula : Heikin-Ashi Open Close IndicatorVersion 1.1 7/28/20041.1* Added Alert Arrows on MA cross.* Added Option to disable Alerts* Added Option for Forex Price Conversion and Conversion FactorNotes:* Non-price study* Formula Parameters - HA-Open Color Default: Red - HA-Close Color Default: Blue - HA-Open Thickness Default: 2 - HA-Close Thickness Default: 2 - Enable Alerts Default: true - Enabel Forex Conversion Default: false - Forex Conversion Factor Default: 100000*********************************/function preMain() { setStudyTitle("Heikin-Ashi Open Close Indicator "); setCursorLabelName("HA-Open", 0); setCursorLabelName("HA-Close", 1); setShowTitleParameters(false); var fp1 = new FunctionParameter("cOpen", FunctionParameter.COLOR); fp1.setName("HA-Open Color"); fp1.setDefault(Color.red); var fp2 = new FunctionParameter("cClose", FunctionParameter.COLOR); fp2.setName("HA-Close Color"); fp2.setDefault(Color.blue); var fp3 = new FunctionParameter("nOThickness", FunctionParameter.NUMBER); fp3.setName("HA-Open Thickness"); fp3.setLowerLimit(1); fp3.setDefault(2); var fp4 = new FunctionParameter("nCThickness", FunctionParameter.NUMBER); fp4.setName("HA-Close Thickness"); fp4.setLowerLimit(1); fp4.setDefault(2); var fp5 = new FunctionParameter("bAlerts", FunctionParameter.BOOLEAN); fp5.setName("Enable Alerts"); fp5.setDefault(true); var fp6 = new FunctionParameter("bForex", FunctionParameter.BOOLEAN); fp6.setName("Enable Forex Conversion"); fp6.setDefault(false); var fp7 = new FunctionParameter("nFactor", FunctionParameter.NUMBER); fp7.setName("Forex Conversion Factor"); fp7.setLowerLimit(1); fp7.setDefault(100000);}var haClose = null;var haOpen = null;var haClose1 = null;var haOpen1 = null;var bEdit = true;var cntr = 0;function main(cOpen, cClose, nOThickness, nCThickness, bAlerts, bForex, nFactor) { var nState = getBarState(); if (bEdit == true) { setDefaultBarFgColor(cOpen, 0); setDefaultBarFgColor(cClose, 1); setDefaultBarThickness(nOThickness, 0); setDefaultBarThickness(nCThickness, 1); bEdit = false; } if (nState == BARSTATE_NEWBAR) { cntr++; if ((haClose == null || haOpen == null) && close(-1) != null) { haClose = close(-1); haOpen = open(-1); } haClose1 = haClose; haOpen1 = haOpen; } if (haClose1 == null || haOpen1 == null) return; haOpen = (haOpen1 + haClose1) / 2; haClose = (open() + high() + low() + close()) / 4; if (bForex == false || bForex == "false") nFactor = 1; var retArray = new Array(2); retArray[0] = (haOpen*nFactor).toFixed(2)*1; retArray[1] = (haClose*nFactor).toFixed(2)*1; // Alerts if (haClose1 != null && haOpen1 != null && (bAlerts == true || bAlerts == "true") ) { if (haClose1 < haOpen1 && haClose > haOpen) { // Up Arrow drawShapeRelative(0, haClose1*nFactor, Shape.UPARROW, null, Color.lime, Shape.TOP|Shape.ONTOP, "arrow"+cntr); } else if (haClose1 > haOpen1 && haClose < haOpen) { // Down Arrow drawShapeRelative(0, haClose1*nFactor, Shape.DOWNARROW, null, Color.maroon, Shape.BOTTOM|Shape.ONTOP, "arrow"+cntr); } else { removeShape("arrow"+cntr); } } return retArray; } //eSignal_HADiffCO.efs/*********************************Provided By : eSignal. (c) Copyright 2003EFS Formula : Heikin-Ashi DiffCO IndicatorVersion 1.1 7/28/20041.1* Added Alert Arrows on MA cross.* Added Option to disable Alerts* Added Option for Forex Price Conversion and Conversion FactorNotes:* Non-price study* Formula Parameters - SMA Periods Default: 3 - HA-DiffCO Color Default: Blue - SMA HA-DiffCO Color Default: Red - HA-DiffCO Thickness Default: 2 - SMA HA-DiffCO Thickness Default: 2 - Enable Alerts Default: true - Enable Forex Conversion Default: false - Forex Conversion Factor Default: 100000*********************************/function preMain() { setStudyTitle("Heikin-Ashi DiffCO Indicator "); setCursorLabelName("HA-DiffCO", 0); setCursorLabelName("SMA HA-DiffCO", 1); setShowTitleParameters(false); var fp0 = new FunctionParameter("nLength", FunctionParameter.NUMBER); fp0.setName("SMA Periods"); fp0.setLowerLimit(1); fp0.setDefault(3); var fp1 = new FunctionParameter("cDiffCO", FunctionParameter.COLOR); fp1.setName("HA-DiffCO Color"); fp1.setDefault(Color.blue); var fp2 = new FunctionParameter("cMADiffCO", FunctionParameter.COLOR); fp2.setName("SMA HA-DiffCO Color"); fp2.setDefault(Color.red); var fp3 = new FunctionParameter("nDThickness", FunctionParameter.NUMBER); fp3.setName("HA-DiffCO Thickness"); fp3.setLowerLimit(1); fp3.setDefault(2); var fp4 = new FunctionParameter("nMAThickness", FunctionParameter.NUMBER); fp4.setName("SMA HA-DiffCO Thickness"); fp4.setLowerLimit(1); fp4.setDefault(2); var fp5 = new FunctionParameter("bAlerts", FunctionParameter.BOOLEAN); fp5.setName("Enable Alerts"); fp5.setDefault(true); var fp6 = new FunctionParameter("bForex", FunctionParameter.BOOLEAN); fp6.setName("Enable Forex Conversion"); fp6.setDefault(false); var fp7 = new FunctionParameter("nFactor", FunctionParameter.NUMBER); fp7.setName("Forex Conversion Factor"); fp7.setLowerLimit(1); fp7.setDefault(100000);}var haClose = null;var haOpen = null;var haClose1 = null;var haOpen1 = null;var bEdit = true;var aDiffCO = null;var haDiffCO = null;var haDiffCO_1 = null;var vMA = null;var vMA_1 = null;var cntr = 0;function main(nLength, cDiffCO, cMADiffCO, nDThickness, nMAThickness, bAlerts, bForex, nFactor) { var nState = getBarState(); var i = 0; var dSum = 0; if (bEdit == true) { setDefaultBarFgColor(cDiffCO, 0); setDefaultBarFgColor(cMADiffCO, 1); setDefaultBarThickness(nDThickness, 0); setDefaultBarThickness(nMAThickness, 1); aDiffCO = new Array(nLength); bEdit = false; } if (nState == BARSTATE_NEWBAR) { cntr++; if ((haClose == null || haOpen == null) && close(-1) != null) { haClose = close(-1); haOpen = open(-1); } haClose1 = haClose; haOpen1 = haOpen; if (haDiffCO != null) { aDiffCO.pop(); aDiffCO.unshift(haDiffCO); haDiffCO_1 = haDiffCO; } vMA_1 = vMA; } if (haClose1 == null || haOpen1 == null) return; haOpen = (haOpen1 + haClose1) / 2; haClose = (open() + high() + low() + close()) / 4; haDiffCO = (haClose - haOpen); aDiffCO[0] = haDiffCO; vMA = null; if (aDiffCO[nLength-1] != null) { for (i = 0; i < nLength; ++i) { dSum += aDiffCO[i]; } vMA = (dSum / nLength); } if (bForex == false || bForex == "false") nFactor = 1; var retArray = new Array(2); retArray[0] = (haDiffCO*nFactor).toFixed(2)*1; retArray[1] = vMA*nFactor; // Alerts if (haDiffCO_1 != null && vMA_1 != null && (bAlerts == true || bAlerts == "true") ) { if (haDiffCO_1 < vMA_1 && haDiffCO > vMA) { // Up Arrow drawShapeRelative(0, haDiffCO_1*nFactor, Shape.UPARROW, null, Color.lime, Shape.TOP|Shape.ONTOP, "arrow"+cntr); } else if (haDiffCO_1 > vMA_1 && haDiffCO < vMA) { // Down Arrow drawShapeRelative(0, haDiffCO_1*nFactor, Shape.DOWNARROW, null, Color.maroon, Shape.BOTTOM|Shape.ONTOP, "arrow"+cntr); } else { removeShape("arrow"+cntr); } } return retArray; } |