Announcement

Collapse
No announcement yet.

2017 Aug: Artificial Intelligence by Domenico D'Errico & Giovanni Trombetta

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 2017 Aug: Artificial Intelligence by Domenico D'Errico & Giovanni Trombetta

    File Name: AI_SysDev.efs

    Description:
    Artificial Intelligence For System Development by Domenico D'Errico & Giovanni Trombetta

    Formula Parameters:

    AI_SysDev.efs

    Enter Gap: -0.08
    Bars To Exit: 8
    Bars To Exit Gain: 6

    Notes:
    The related article is copyrighted material. If you are not a subscriber
    of Stocks & Commodities, please visit www.traders.com.

    Download File:
    AI_SysDev.efs

    AI_SysDev.efs


    EFS Code:
    PHP Code:
    /*********************************
    Provided By:  
    eSignal (Copyright c eSignal), a division of Interactive Data
    Corporation. 2016. 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:        
        Artificial Intelligence For System Development by Domenico D'Errico & Giovanni Trombetta

    Version:            1.00  06/14/2017

    Formula Parameters:                     Default:
    Enter Gap                               -0.08
    Bars To Exit                            8
    Bars To Exit Gain                       6


    Notes:
    The related article is copyrighted material. If you are not a subscriber
    of Stocks & Commodities, please visit www.traders.com.

    **********************************/

    var fpArray = new Array();

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

        var 
    x=0;

        
    fpArray[x] = new FunctionParameter("gap"FunctionParameter.NUMBER);
        
    with(fpArray[x++]){
            
    setName("Enter Gap");
            
    setDefault(-0.08);
            }

        
    fpArray[x] = new FunctionParameter("nBarsToExit"FunctionParameter.NUMBER);
        
    with(fpArray[x++]){
            
    setName("Bars To Exit");
            
    setDefault(8);
            
    setLowerLimit(1);
            }

        
    fpArray[x] = new FunctionParameter("nBarsToExitGain"FunctionParameter.NUMBER);
        
    with(fpArray[x++]){
            
    setName("Bars To Exit Gain");
            
    setDefault(6);
            
    setLowerLimit(1);
            }

    }

    var 
    bInit false;
    var 
    bVersion null;

    var 
    xClose null;
    var 
    xOpen null;
    var 
    xHigh null;
    var 
    xLow null;

    var 
    xAvgPrice null;
    var 
    xMedPrice null;
    var 
    xMedBodyPrice null;

    var 
    nEntryBarN 0;
    var 
    nEntryPrice 0;

    var 
    positiveEntry false;
    var 
    positiveExit false;


    function 
    main(gapnBarsToExitnBarsToExitGain){
        if (
    bVersion == nullbVersion verify();
        if (
    bVersion == false) return;

        if (
    getBarState() == BARSTATE_ALLBARS){
            
    bInit false;
        }

        if (!
    bInit){
            
    xOpen open();
            
    xClose close();
            
    xHigh high();
            
    xLow low();

            
    xAvgPrice ohlc4();
            
    xMedPrice hl2();
            
    xMedBodyPrice oc2();

            
    nEntryBarN 0;
            
    nEntryPrice 0;

            
    positiveEntry false;
            
    positiveExit false;

            
    bInit true;
        }

        if (
    getCurrentBarIndex() != 0){

            if ((
    xAvgPrice.getValue(-2) < xMedPrice.getValue(-2)
                 && 
    xMedPrice.getValue(-3) <= xAvgPrice.getValue(-2)
                 && 
    xMedBodyPrice.getValue(-3) <= xAvgPrice.getValue(-4))

                || (
    xAvgPrice.getValue(-2) < xMedPrice.getValue(-4)
                    && 
    xMedBodyPrice.getValue(-1) < xMedPrice.getValue(-3)
                    && 
    xMedBodyPrice.getValue(-2) < xMedBodyPrice.getValue(-3))){

                
    positiveEntry true;
                if (
    nEntryPrice != 0nEntryPrice 0;
            }
            else {
                
    positiveEntry false;
                
    nEntryPrice 0;
            }

            if ((
    xAvgPrice.getValue(-2) < xMedBodyPrice.getValue(-2)
                 && 
    xMedPrice.getValue(-3) == xMedBodyPrice.getValue(-4)
                 && 
    xMedBodyPrice.getValue(-2) <= xMedBodyPrice.getValue(-5))

                || (
    xAvgPrice.getValue(-3) < xMedBodyPrice.getValue(-1)
                    && 
    xMedPrice.getValue(-5) <= xAvgPrice.getValue(-4)
                    && 
    xMedBodyPrice.getValue(-2) <= xAvgPrice.getValue(-2))

                || (
    xAvgPrice.getValue(-3) < xMedBodyPrice.getValue(-1)
                    && 
    xMedPrice.getValue(-5) <= xAvgPrice.getValue(-4)
                    && 
    xMedBodyPrice.getValue(-2) <= xAvgPrice.getValue(-2))){

                
    positiveExit true;
            }
            else 
    positiveExit false;

            if (!
    Strategy.isInTrade() && positiveEntry){
                if (
    nEntryPrice == 0nEntryPrice xLow.getValue(-1) + gap;
                if (
    xHigh.getValue(0) >= nEntryPrice && nEntryPrice >= xLow.getValue(0)){
                    
    nEntryPrice Math.min(xOpen.getValue(0), nEntryPrice);
                    
    Strategy.doLong("eL_L"Strategy.LIMITStrategy.THISBARStrategy.DEFAULT, nEntryPrice);
                    
    nEntryBarN getCurrentBarCount();
                    
    positiveEntry false;
                }

            }

            else{
                var 
    nBarsSinceEntry getCurrentBarCount() - nEntryBarN;

                if (
    nBarsSinceEntry != nBarsToExit-&& positiveExit && ((xClose.getValue(0) - nEntryPrice) < 0))
                    
    Strategy.doSell("P_L_exit_L"Strategy.MARKETStrategy.THISBARStrategy.DEFAULT);
                else if (
    nBarsSinceEntry >= nBarsToExit -1)
                    
    Strategy.doSell("T_exit_L"Strategy.MARKETStrategy.THISBARStrategy.DEFAULT);
                else if (
    nBarsSinceEntry >= nBarsToExitGain && ((xClose.getValue(0) - nEntryPrice) > 0))
                    
    Strategy.doSell("TimeExitGain_L"Strategy.MARKETStrategy.THISBARStrategy.DEFAULT);


                if (!
    Strategy.isInTrade()){
                    
    nEntryBarN 0;
                    
    positiveExit false;
                }
            }
        }

        if (
    Strategy.isInTrade()) setBarBgColor(Color.RGB(0,60,0));

    }



    function 
    verify(){
        var 
    false;
        if (
    getBuildNumber() < 3742){
            
    drawTextAbsolute(535"This study requires version 12.1 or later.",
                
    Color.whiteColor.blueText.RELATIVETOBOTTOM|Text.RELATIVETOLEFT|Text.BOLD|Text.LEFT,
                
    null13"error");
            
    drawTextAbsolute(520"Click HERE to upgrade.@URL=http://www.esignal.com/download/default.asp",
                
    Color.whiteColor.blueText.RELATIVETOBOTTOM|Text.RELATIVETOLEFT|Text.BOLD|Text.LEFT,
                
    null13"upgrade");
            return 
    b;
        }
        else
            
    true;

        return 
    b;

Working...
X