Announcement

Collapse
No announcement yet.

Index of Chart Sentiment (ICS)

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

  • Index of Chart Sentiment (ICS)

    File Name: ICS.efs

    Description:
    Index of Chart Sentiment (ICS)


    Formula Parameters:
    BBlength : 55
    Deviations : 0.5


    Notes:
    The main problem of technical indicators is the identifying a trend in its
    early stages.
    To effectively do this, Mr. Likhovidov created an indicator called the Index
    of Chart Sentiment (ICS). The ICS could reach very high levels and this corresponds
    to an overbought market; very low values of the index correspond to an oversold market.
    When the index moves from lower to higher levels (period of bullish sentiment of the
    market) the dominant movement of the chart should be to the upside.
    The algorithm for calculating the CandleCode involves a long-period analysis of the
    chart. But this analysis does not consist of the usual smoothing and therefore does
    not result in any lag.
    To fing more information please refer Index Of Chart Sentiment article by Viktor Likhovidov
    in recent S&C issue.


    Download File:
    ICS.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:        
        Index of Chart Sentiment (ICS)

    Version:            1.0  05/13/2009
         
    Formula Parameters:                     Default:
        BBlength                            55
        Deviations                          0.5
        
    Notes:
        The main problem of technical indicators is the identifying a trend in its 
        early stages.
        To effectively do this, Mr. Likhovidov created an indicator called the Index 
        of Chart Sentiment (ICS). The ICS could reach very high levels and this corresponds 
        to an overbought market; very low values of the index correspond to an oversold market. 
        When the index moves from lower to higher levels (period of bullish sentiment of the 
        market) the dominant movement of the chart should be to the upside.
        The algorithm for calculating the CandleCode involves a long-period analysis of the 
        chart. But this analysis does not consist of the usual smoothing and therefore does 
        not result in any lag.
        To fing more information please refer Index Of Chart Sentiment article by Viktor Likhovidov 
        in recent S&C issue. 
    **********************************/
    var fpArray = new Array();
    var 
    bInit false;

    function 
    preMain() {
        
    setPriceStudy(false);
        
    setShowTitleParametersfalse );
        
    setStudyTitle("Index of Chart Sentiment");
        
    setCursorLabelName("ICS",0);
        
    setDefaultBarFgColor(Color.blue,0);
        var 
    0;
        
    fpArray[x] = new FunctionParameter("BBlength"FunctionParameter.NUMBER);
        
    with(fpArray[x++]) {
            
    setLowerLimit(1);
            
    setDefault(55);
        }    
        
    fpArray[x] = new FunctionParameter("Deviations"FunctionParameter.NUMBER);
        
    with(fpArray[x++]) {
            
    setLowerLimit(0.001);
            
    setDefault(0.5);
        }    
    }

    var 
    xICS null;

    function 
    main(BBlengthDeviations) {
    var 
    nBarState getBarState();
    var 
    nICS 0;
        if (
    nBarState == BARSTATE_ALLBARS) {
            if(
    BBlength == nullBBlength 55
            
    if(Deviations == nullDeviations 0.5
        
    }    
        if (
    bInit == false) {
            
    xICS ema(24ema(24efsInternal("Calc_ICS"BBlengthDeviations)));
            
    bInit true;
        }    
        
    nICS xICS.getValue(0);
        if (
    nICS == null) return;
        return 
    nICS;
    }

    var 
    xOpen null;
    var 
    xClose null;
    var 
    xBody null;
    var 
    xUpperShadow null;
    var 
    xLowerShadow null;
    var    
    xThTop_Body null;
    var    
    xThBot_Body null;
    var    
    xThTop_Ushd null;
    var    
    xThBot_Ushd null;
    var    
    xThTop_Lshd null;
    var    
    xThBot_Lshd null;
    var 
    bSecondInit false;

    function 
    Calc_ICS(BBlengthDeviations) {
    var 
    Body 0;
    var    
    UpperShadow 0;
    var    
    LowerShadow 0;
    var 
    ThBot_Body 0;
    var 
    ThTop_Body 0;
    var 
    ThBot_Ushd 0;
    var 
    ThTop_Ushd 0;
    var 
    ThBot_Lshd 0;
    var 
    ThTop_Lshd 0;
    var 
    ColorCode 0;
    var 
    BodyCode 0;
    var 
    UshdCode 0;
    var 
    LshdCode 0;
    var 
    nRes 0;

        if (
    bSecondInit == false) {
            
    xOpen open();
            
    xClose close();
            
    xBody efsInternal("GetCandleValue"xOpenxClose);
            
    xUpperShadow getSeries(xBody1);
            
    xLowerShadow getSeries(xBody2);
            
    xThTop_Body upperBB(BBlengthDeviationsxBody);
            
    xThBot_Body lowerBB(BBlengthDeviationsxBody);
            
    xThTop_Ushd upperBB(BBlengthDeviationsxUpperShadow);
            
    xThBot_Ushd lowerBB(BBlengthDeviationsxUpperShadow);
            
    xThTop_Lshd upperBB(BBlengthDeviationsxLowerShadow);
            
    xThBot_Lshd lowerBB(BBlengthDeviationsxLowerShadow);
            
    bSecondInit true;
        }
        
    Body xBody.getValue(0);
        
    UpperShadow xUpperShadow.getValue(0);
        
    LowerShadow xLowerShadow.getValue(0);
        
    ThTop_Body xThTop_Body.getValue(0);
        
    ThBot_Body xThBot_Body.getValue(0);
        
    ThTop_Ushd xThTop_Ushd.getValue(0);
        
    ThBot_Ushd xThBot_Ushd.getValue(0);
        
    ThTop_Lshd xThTop_Lshd.getValue(0);
        
    ThBot_Lshd xThBot_Lshd.getValue(0);
        if (
    ThBot_Lshd == null) return;
        if(
    xClose.getValue(0) >= xOpen.getValue(0)){
            
    ColorCode 64;
            if(
    xOpen.getValue(0) == xClose.getValue(0))
                
    BodyCode 0;
                   else if(
    Body ThBot_Body)
                       
    BodyCode 16;
                   else if(
    Body ThTop_Body)
                       
    BodyCode 32;
               else
                        
    BodyCode 48;
          }
        else{
            
    ColorCode 0;
            if(
    Body ThBot_Body)
                           
    BodyCode 32;
            else if(
    Body ThTop_Body)
                           
    BodyCode 16;
                else
                          
    BodyCode 0;
        }
        if(
    UpperShadow == 0)
                 
    UshdCode 0;
           else if(
    UpperShadow ThBot_Ushd)
                
    UshdCode 4;
           else if(
    UpperShadow ThTop_Ushd)
                
    UshdCode 8;
        else
            
    UshdCode 12;

        if(
    LowerShadow == 0)
                  
    LshdCode 3;
              else if(
    LowerShadow ThBot_Lshd)
                  
    LshdCode 2;
              else if(
    LowerShadow ThTop_Lshd)
                  
    LshdCode 1;
        else
            
    LshdCode 0;

        
    nRes ColorCode BodyCode UshdCode LshdCode;
        return 
    nRes;
    }

    function 
    GetCandleValue(xOpenxClose) {
        var 
    Body Math.abs(xOpen.getValue(0) - xClose.getValue(0));
        var 
    UpperShadow high(0) - Math.max(xOpen.getValue(0),xClose.getValue(0));
        var 
    LowerShadow Math.min(xOpen.getValue(0),xClose.getValue(0)) - low(0);
        return new Array(
    BodyUpperShadowLowerShadow)

Working...
X