drawOHLC.efs

ICE Data Services -

drawOHLC.efs    

File Name: drawOHLC.efs

Description:
Use graphics commands to draw OHLC information for a spread.

Formula Parameters:

  • nBarThickness: Default is 3
  • nNumBars: Default is 60

Notes:
This formula will not draw OHLC info for historical bars. The information is only drawn on the current bar as new bars come in during real time and will store up to 60 bars of information going forward.

Download File:
drawOHLC.efs


EFS Code:

/****************************************************************************************************
Copyright © eSignal, a division of Interactive Data Corporation. 2003. All rights reserved. 
This sample eSignal Formula Script (EFS) may be modified and saved under a new 
filename; however, eSignal is no longer responsible for the functionality once modified.
eSignal reserves the right to modify and overwrite this EFS file with each new release.
*****************************************************************************************************/
//  Last Updated:  1/30/03

function preMain() {
    setPriceStudy(true);
    setShowCursorLabel(false);
}

var colorBG = null;
var colorOpen = null;
var colorClose = null;
var vOpen;
var vHigh;
var vLow;
var vClose;
var DrawCntr = 0;
var vLoading = true;

function main(nBarThickness, nNumBars) {
    if (nBarThickness == null) {
        nBarThickness = 3;
    }
    if (nNumBars == null || Math.abs(nNumBars) > 60) {
        nNumBars = 60;
    }
    
    var nBarState = getBarState();

    if (getCurrentBarIndex() == 0) {
        vLoading = false;
    }
        
    var vPrice = close();
    if (nBarState == BARSTATE_NEWBAR) {
        if (vLoading == false) {
            colorBG = null;
            colorOpen = null;
            colorClose = null;
            vOpen = vPrice;
            vHigh = vPrice;
            vLow = vPrice;
            vClose = vPrice;
        }
        DrawCntr += 1;
        if (DrawCntr > nNumBars) {
            DrawCntr = 0;
        }
    }

    if (vLoading == false) {
        vHigh = Math.max(vPrice, vHigh);
        vLow = Math.min(vPrice, vLow);
        vClose = vPrice;
        //open
        if (nBarState == BARSTATE_NEWBAR) {
            drawLineRelative(-1, vOpen, 0, vOpen, PS_SOLID, 1, Color.blue, "Open" + DrawCntr);
        }
        //high - low
        if (vClose >= vOpen) {
            colorHL = Color.green;
        } else {
            colorHL = Color.red;
        }
        drawLineRelative(0, vHigh, 0, vLow, PS_SOLID, nBarThickness, colorHL, "HL" + DrawCntr);
        //close
        drawLineRelative(0, vClose, 1, vClose, PS_SOLID, 1, Color.lime, "Close" + DrawCntr);
    }
    
    return;
}