Announcement

Collapse
No announcement yet.

Ulcer Index

Collapse
This topic is closed.
X
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Ulcer Index

    File Name: UlcerIndex.efs

    Description:
    Ulcer Index

    Formula Parameters:
    nLength : 20
    nSafeLevel : 5
    Source of Price : Close


    Notes:
    The Ulcer Index is a measure of the stress level related to market condition.

    Download File:
    UlcerIndex.efs



    EFS Code:
    PHP 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:        
        Ulcer Index 
        
    Version:            1.0  05/05/2009
        
    Formula Parameters:                     Default:
        nLength                             20
        nSafeLevel                          5
        Source of Price                     Close

    Notes:
        The Ulcer Index is a measure of the stress level related to market condition. 
    **********************************/
    var fpArray = new Array();
    var 
    bInit false;

    function 
    preMain() {
        
    setStudyTitle("Ulcer Index");
        
    setCursorLabelName("Ulcer Index"0);
        
    setShowTitleParameters(false);    
        
    setPlotType(PLOTTYPE_HISTOGRAM);
        var 
    0;
        
    fpArray[x] = new FunctionParameter("nLength"FunctionParameter.NUMBER);
        
    with(fpArray[x++]) {
            
    setLowerLimit(1);
            
    setDefault(20);
        }
        
    fpArray[x] = new FunctionParameter("nSafeLevel"FunctionParameter.NUMBER);
        
    with(fpArray[x++]) {
            
    setLowerLimit(0);
            
    setDefault(5);
        }
        
    fpArray[x] = new FunctionParameter("sPrice"FunctionParameter.STRING);
        
    with(fpArray[x++]){
            
    setName("Source of Price");
            
    addOption("open"); 
            
    addOption("high");
            
    addOption("low");
            
    addOption("close");
            
    addOption("hl2");
            
    addOption("hlc3");
            
    addOption("ohlc4"); 
            
    setDefault("close"); 
        }    
    }

    var 
    xUlcerIndex null;

    function 
    main(sPricenLengthnSafeLevel) {
    var 
    nBarState getBarState();
    var 
    nUlcerIndex 0;
        if (
    nBarState == BARSTATE_ALLBARS) {
            if (
    sPrice == nullsPrice "close";
            if (
    nLength == nullnLength 20;
            if (
    nSafeLevel == nullnSafeLeel 5;
        }    
        if (
    bInit == false) {
            
    addBand(nSafeLevelPS_SOLID2Color.blue"SafeLevel");
            
    xUlcerIndex efsInternal("Calc_UI"sPricenLength);
            
    bInit true;
        }
        
    nUlcerIndex xUlcerIndex.getValue(0);
        if (
    nUlcerIndex == null) return;
        if(
    nUlcerIndex nSafeLevelsetBarBgColor(Color.red);
        return 
    nUlcerIndex;
    }

    var 
    bSecondInit false;
    var 
    xPrice null;
    var 
    xHHPrice null;

    function 
    Calc_UI(sPricenLength) {
    var 
    nRes 0;
    var 
    HiHi 0;
    var 
    0;
    var 
    nTmp 0;
        if (
    bSecondInit == false) {
            
    xPrice = eval(sPrice)();
            
    xHHPrice upperDonchian(nLengthxPrice);
            
    bSecondInit true;
        }    
        
    HiHi xHHPrice.getValue(0);
        if (
    xPrice.getValue(-nLength) == null) return;
        for (
    0nLengthi++) {
            
    nTmp = ((HiHi xPrice.getValue(-i)) / HiHi) * 100;
            
    nRes += nTmp nTmp;
        }
        
    nRes Math.sqrt(nRes nLength);
        return 
    nRes;

Working...
X