Trend OHLC

ICE Data Services -


Trend_OHLC.efs  EFSLibrary - Discussion Board
  

File Name: Trend_OHLC.efs


Description:
Trend OHLC


Formula Parameters:
MA Length : 60
Moving Average : SMA

Notes:

Download File:
Trend_OHLC.efs




EFS Code:

/*********************************Provided By:      eSignal (Copyright c eSignal), a division of Interactive Data     Corporation. 2009. All rights reserved. This sample eSignal     Formula Script (EFS) is for educational purposes only and may be     modified and saved under a new file name.  eSignal is not responsible    for the functionality once modified.  eSignal reserves the right     to modify and overwrite this EFS file with each new release.Description:            Trend OHLC    Version:            1.0  07/19/2009 Formula Parameters:                     Default:    MA Length                           60    Moving Average                      SMA    Notes:    **********************************/var fpArray = new Array();var bInit = false;function preMain(){    setPriceStudy(true);    setShowCursorLabel(true);    setShowTitleParameters(false);    setStudyTitle("Trend OHLC");    setCursorLabelName("Mode 0", 0);    setDefaultBarFgColor(Color.red, 0);    setPlotType(PLOTTYPE_SQUAREWAVE, 0);    setDefaultBarThickness(1, 0);    setCursorLabelName("Mode 1", 1);    setDefaultBarFgColor(Color.blue, 1);    setPlotType(PLOTTYPE_SQUAREWAVE, 1);    setDefaultBarThickness(1, 1);    setCursorLabelName("Mode 2", 2);    setDefaultBarFgColor(Color.red, 2);    setPlotType(PLOTTYPE_SQUAREWAVE, 2);    setDefaultBarThickness(2, 2);    setCursorLabelName("Mode 3", 3);    setDefaultBarFgColor(Color.blue, 3);    setPlotType(PLOTTYPE_SQUAREWAVE, 3);    setDefaultBarThickness(2, 3);    var x = 0;    fpArray[x] = new FunctionParameter("MALength", FunctionParameter.NUMBER);    with(fpArray[x++]) {        setName("MA Length");        setLowerLimit(1);        setDefault(60);    }        fpArray[x] = new FunctionParameter("MAType", FunctionParameter.STRING);	with(fpArray[x++]){        setName("Moving Average");        addOption("sma");        addOption("ema");        addOption("wma");        addOption("vwma");        setDefault("sma");    }    }var xTrend_H = null;var xTrend_L = null;var xTrend_O = null;var xTrend_C = null;function main(MALength, MAType) {var nBarState = getBarState();var nTH = 0;var nTL = 0;var nTO = 0;var nTC = 0;    if (nBarState == BARSTATE_ALLBARS) {        if(MAType == null) MAType = "sma";        if(MALength == null) MALength = 60;	}	if (bInit == false) {        xTrend_L = efsInternal("Calc_TrendOHLC", MALength, MAType);        xTrend_H = getSeries(xTrend_L, 1);        xTrend_O = getSeries(xTrend_L, 2);        xTrend_C = getSeries(xTrend_L, 3);        bInit = true;	}	nTO = xTrend_O.getValue(0);	nTH = xTrend_H.getValue(0);	nTL = xTrend_L.getValue(0);	nTC = xTrend_C.getValue(0);	if (nTO == null || nTH == null || nTL == null || nTC == null) return;    if (nTL < nTH) {        setBarBgColor(Color.lightgrey,0,nTL,nTH)    } else {        setBarBgColor(Color.grey,0,nTL,nTH)        }        if (nTO < nTC) {        setBarBgColor(Color.lime,1,nTO,nTC)    } else {        setBarBgColor(Color.red,1,nTO,nTC)        }    return new Array(nTL, nTH, nTO, nTC);}var bSecondInit = false;var xmaOpen = null;var xmaClose = null;var xmaLow = null;var xmaHigh = null;var haOpen1 = 0;var haOpen = 0;function Calc_TrendOHLC(MALength, MAType) {var nBarState = getBarState();var nmaOpen = 0;var nmaClose = 0;var nmaLow = 0;var nmaHigh = 0;var nmaOpen1 = 0;var nmaClose1 = 0;var nmaLow1 = 0;var nmaHigh1 = 0;var haHigh = 0;var haLow = 0;var haClose = 0;var haClose = 0;var nResLow = 0;var nResHigh = 0;    if (bSecondInit == false) {        xmaOpen = efsInternal("CalcMA", MALength, MAType, "open");        xmaClose =  efsInternal("CalcMA", MALength, MAType, "close");        xmaLow =  efsInternal("CalcMA", MALength, MAType, "low");        xmaHigh =  efsInternal("CalcMA", MALength, MAType, "high");        haOpen = open(0);        haOpen1 = haOpen;        bSecondInit =  true;    }    nmaOpen = xmaOpen.getValue(0);    nmaClose= xmaClose.getValue(0);    nmaLow  = xmaLow.getValue(0);    nmaHigh = xmaHigh.getValue(0);    nmaOpen1 = xmaOpen.getValue(-1);    nmaClose1= xmaClose.getValue(-1);    nmaLow1  = xmaLow.getValue(-1);    nmaHigh1 = xmaHigh.getValue(-1);    if (nmaOpen1 == null || nmaHigh1  == null || nmaLow1  == null || nmaClose1 == null) return;    if (nBarState == BARSTATE_NEWBAR) {        haOpen1 = haOpen;    }    haClose = (nmaOpen + nmaHigh + nmaLow + nmaClose) /4;    haOpen =  (haOpen1 + (nmaOpen1 + nmaHigh1 + nmaLow1 + nmaClose1) / 4) / 2;    haHigh = Math.max(nmaHigh, Math.max(haOpen, haClose));    haLow = Math.min(nmaLow, Math.min(haOpen, haClose));    if (haOpen < haClose) {        nResLow = haLow;        nResHigh = haHigh;    } else {        nResLow = haHigh;        nResHigh = haLow;    }    return new Array(nResLow, nResHigh, haOpen, haClose);}var bThirdInit = false;var xTMPMA1 = null;var xTMPMA2 = null;function CalcMA(MALength, MAType, Source) {var nRes = 0;var nTMPMA1 = 0;var nTMPMA2 = 0;    if (bThirdInit == false) {        xTMPMA1 = eval(MAType)(Math.round(MALength/2), eval(Source)());        xTMPMA2 = eval(MAType)(MALength, eval(Source)());                bThirdInit = true;    }    nTMPMA1 = xTMPMA1.getValue(0);    nTMPMA2 = xTMPMA2.getValue(0);    if (nTMPMA1 == null || nTMPMA2 == null) return;    nRes = nTMPMA1 * 2 - nTMPMA2;    return nRes;}