Dax adaptable strategy Breakout/Mean reversion

Dax adaptable strategy Breakout/Mean reversion

Dear all

I have elaborated a little over an  idea originally posted in the forum by Bjoern posted as True Range Breakout EUR/USD.

I applied to the Dax with the additional feature of switching from a breakout to a mean reversion strategy depending on some optimized value of the ADX indicator.

The strategy is a breakout strategy when the adx is above a certain value and a mean reverting strategy when ADX value is below that same value.

I have optimized it on several time frame and the results look quite promising, it would be great if someone think of a better way of discriminate between range trading vs trending phases.  I have used the  popular ADX indicator, but I am sure there are more efficient way to look at phase transitions in market.

The results for different time frames are attached, together with the 30minutes code.

Best Regards

Francesco

 

Share this

Risk disclosure:

No information on this site is investment advice or a solicitation to buy or sell any financial instrument. Past performance is not indicative of future results. Trading may expose you to risk of loss greater than your deposits and is only suitable for experienced investors who have sufficient financial means to bear such risk.

ProRealTime ITF files and other attachments : How to import ITF files into ProRealTime platform?

PRC is also on YouTube, subscribe to our channel for exclusive content and tutorials

  1. Enrique de Juan • 04/22/2017 #

     You could try integrating DAX’s seasonality from the Pathfinder System. It may improve results considerably. 
    https://www.prorealcode.com/prorealtime-trading-strategies/pathfinder-dax-4h/
    Cheers!! 

  2. Francesco78 • 04/22/2017 #

    Thank you Enrique for your precious suggestion!
    Ill try to incorporate it for sure (once I understand it :))) 
    Best Regards
    Francesco 

    • Francesco78 • 04/22/2017 #

      Enrique, I have added the Dax Seasonality on the 1hr TF and did some positioning modification.
      I attach the code and the picture with the comparison.
      Best Regards
      Fr
      // EUR/USD(mini) - IG MARKETS
      // TIME FRAME 1H
      // SPREAD 2.0 PIPS

      DEFPARAM CumulateOrders = False
      DEFPARAM FLATBEFORE =090000
      DEFPARAM FLATAFTER =210000
      // define saisonal position multiplier for each month 1-15 / 16-31 (>0 - long / <0 - short / 0 no trade)
      ONCE January1 = 3 //0 risk(3)
      ONCE January2 = 0 //3 ok
      ONCE February1 = 3 //3 ok
      ONCE February2 = 3 //0 risk(3)
      ONCE March1 = 3 //0 risk(3)
      ONCE March2 = 2 //3 ok
      ONCE April1 = 3 //3 ok
      ONCE April2 = 3 //3 ok
      ONCE May1 = 1 //0 risk(1)
      ONCE May2 = 1 //0 risk(1)
      ONCE June1 = 1 //1 ok 2
      ONCE June2 = 2 //3 ok
      ONCE July1 = 3 //1 chance
      ONCE July2 = 2 //3 ok
      ONCE August1 = 2 //1 chance 1
      ONCE August2 = 3 //3 ok
      ONCE September1 = 3 //0 risk(3)
      ONCE September2 = 0 //0 ok
      ONCE October1 = 3 //0 risk(3)
      ONCE October2 = 2 //3 ok
      ONCE November1 = 1 //1 ok
      ONCE November2 = 3 //3 ok
      ONCE December1 = 3 // 1 chance
      ONCE December2 = 2 //3 ok

      // set saisonal multiplier
      currentDayOfTheMonth = Day
      midOfMonth = 15
      IF CurrentMonth = 1 THEN
      IF currentDayOfTheMonth <= midOfMonth THEN
      saisonalPatternMultiplier = January1
      ELSE
      saisonalPatternMultiplier = January2
      ENDIF
      ELSIF CurrentMonth = 2 THEN
      IF currentDayOfTheMonth <= midOfMonth THEN
      saisonalPatternMultiplier = February1
      ELSE
      saisonalPatternMultiplier = February2
      ENDIF
      ELSIF CurrentMonth = 3 THEN
      IF currentDayOfTheMonth <= midOfMonth THEN
      saisonalPatternMultiplier = March1
      ELSE
      saisonalPatternMultiplier = March2
      ENDIF
      ELSIF CurrentMonth = 4 THEN
      IF currentDayOfTheMonth <= midOfMonth THEN
      saisonalPatternMultiplier = April1
      ELSE
      saisonalPatternMultiplier = April2
      ENDIF
      ELSIF CurrentMonth = 5 THEN
      IF currentDayOfTheMonth <= midOfMonth THEN
      saisonalPatternMultiplier = May1
      ELSE
      saisonalPatternMultiplier = May2
      ENDIF
      ELSIF CurrentMonth = 6 THEN
      IF currentDayOfTheMonth <= midOfMonth THEN
      saisonalPatternMultiplier = June1
      ELSE
      saisonalPatternMultiplier = June2
      ENDIF
      ELSIF CurrentMonth = 7 THEN
      IF currentDayOfTheMonth <= midOfMonth THEN
      saisonalPatternMultiplier = July1
      ELSE
      saisonalPatternMultiplier = July2
      ENDIF
      ELSIF CurrentMonth = 8 THEN
      IF currentDayOfTheMonth <= midOfMonth THEN
      saisonalPatternMultiplier = August1
      ELSE
      saisonalPatternMultiplier = August2
      ENDIF
      ELSIF CurrentMonth = 9 THEN
      IF currentDayOfTheMonth <= midOfMonth THEN
      saisonalPatternMultiplier = September1
      ELSE
      saisonalPatternMultiplier = September2
      ENDIF
      ELSIF CurrentMonth = 10 THEN
      IF currentDayOfTheMonth <= midOfMonth THEN
      saisonalPatternMultiplier = October1
      ELSE
      saisonalPatternMultiplier = October2
      ENDIF
      ELSIF CurrentMonth = 11 THEN
      IF currentDayOfTheMonth <= midOfMonth THEN
      saisonalPatternMultiplier = November1
      ELSE
      saisonalPatternMultiplier = November2
      ENDIF
      ELSIF CurrentMonth = 12 THEN
      IF currentDayOfTheMonth <= midOfMonth THEN
      saisonalPatternMultiplier = December1
      ELSE
      saisonalPatternMultiplier = December2
      ENDIF

      endif

      adxperiod = 14
      atrperiod = 14
      indicator1 = adx[adxperiod]
      atr = AverageTrueRange[atrperiod]
      //exitafternbars = 1
      adxval = 19
      atrmin = 25
      position = round(100/atr/2.1666)
      //a=5
      m = 3
      n = 2
      m1 = m-1
      n1 = n

      if atr>atrmin then
      c1 = indicator1 <adxval
      c2 = indicator1 >adxval

      if c1 then
      // short
      IF (abs(open-close) > (atr*m) and close > open) THEN
      sellshort position CONTRACTS AT MARKET
      ENDIF

      //long
      IF (abs(open-close) > (atr*m) and close < open) THEN
      buy position*saisonalPatternMultiplier CONTRACTS AT MARKET

      ENDIF
      endif

      if c2 then
      // long
      IF (abs(open-close) > (atr*n) and close > open and close> DOPEN(1)) THEN
      buy position*saisonalPatternMultiplier CONTRACTS AT MARKET
      ENDIF

      //short
      IF (abs(open-close) > (atr*n) and close < open and close< DOPEN(1)) THEN
      sellshort position CONTRACTS AT MARKET
      ENDIF
      endif
      endif

      if atr<atrmin then
      c1 = indicator1 <adxval
      c2 = indicator1 >adxval

      if c1 then
      // short
      IF (abs(open-close) > (atr*m1) and close > open) THEN
      sellshort position CONTRACTS AT MARKET
      ENDIF

      //long
      IF (abs(open-close) > (atr*m1) and close < open) THEN
      buy position*saisonalPatternMultiplier CONTRACTS AT MARKET
      ENDIF
      endif

      if c2 then
      // long
      IF (abs(open-close) > (atr*n1) and close > open ) THEN
      buy position*saisonalPatternMultiplier CONTRACTS AT MARKET
      ENDIF

      //short
      IF (abs(open-close) > (atr*n1) and close < open) THEN
      sellshort position CONTRACTS AT MARKET
      ENDIF
      endif
      endif
      //if exitafternbars then
      //IF longonmarket and BarIndex - TradeIndex = a Then
      //sell position contracts at Market
      //EndIF

      //IF shortonmarket and BarIndex - TradeIndex = a Then
      //exitshort position contracts at Market
      //EndIF
      //endif

      ancesco 

  3. Francesco78 • 04/22/2017 #

    I have done some more work on this code, I noticed that the strategy was poor when ATR (or VOl) was low, so I thought to make a position sizing inversely proportional to the ATR.
    Further more I created 2 scenarios, 
    1 ATR is bigger than x
    2 ATR is smaller than x
    Now the curve in the 1hr case looks steeper and smoother. 
    I attach the results.
    Regards
     

  4. Francesco78 • 04/22/2017 #

    Enrique, I have added the Dax Seasonality on the 1hr TF and did some positioning modification.
    I attach the code and the picture with the comparison.
    Best Regards
    Fr
    // EUR/USD(mini) - IG MARKETS
    // TIME FRAME 1H
    // SPREAD 2.0 PIPS

    DEFPARAM CumulateOrders = False
    DEFPARAM FLATBEFORE =090000
    DEFPARAM FLATAFTER =210000
    // define saisonal position multiplier for each month 1-15 / 16-31 (>0 - long / <0 - short / 0 no trade)
    ONCE January1 = 3 //0 risk(3)
    ONCE January2 = 0 //3 ok
    ONCE February1 = 3 //3 ok
    ONCE February2 = 3 //0 risk(3)
    ONCE March1 = 3 //0 risk(3)
    ONCE March2 = 2 //3 ok
    ONCE April1 = 3 //3 ok
    ONCE April2 = 3 //3 ok
    ONCE May1 = 1 //0 risk(1)
    ONCE May2 = 1 //0 risk(1)
    ONCE June1 = 1 //1 ok 2
    ONCE June2 = 2 //3 ok
    ONCE July1 = 3 //1 chance
    ONCE July2 = 2 //3 ok
    ONCE August1 = 2 //1 chance 1
    ONCE August2 = 3 //3 ok
    ONCE September1 = 3 //0 risk(3)
    ONCE September2 = 0 //0 ok
    ONCE October1 = 3 //0 risk(3)
    ONCE October2 = 2 //3 ok
    ONCE November1 = 1 //1 ok
    ONCE November2 = 3 //3 ok
    ONCE December1 = 3 // 1 chance
    ONCE December2 = 2 //3 ok

    // set saisonal multiplier
    currentDayOfTheMonth = Day
    midOfMonth = 15
    IF CurrentMonth = 1 THEN
    IF currentDayOfTheMonth <= midOfMonth THEN
    saisonalPatternMultiplier = January1
    ELSE
    saisonalPatternMultiplier = January2
    ENDIF
    ELSIF CurrentMonth = 2 THEN
    IF currentDayOfTheMonth <= midOfMonth THEN
    saisonalPatternMultiplier = February1
    ELSE
    saisonalPatternMultiplier = February2
    ENDIF
    ELSIF CurrentMonth = 3 THEN
    IF currentDayOfTheMonth <= midOfMonth THEN
    saisonalPatternMultiplier = March1
    ELSE
    saisonalPatternMultiplier = March2
    ENDIF
    ELSIF CurrentMonth = 4 THEN
    IF currentDayOfTheMonth <= midOfMonth THEN
    saisonalPatternMultiplier = April1
    ELSE
    saisonalPatternMultiplier = April2
    ENDIF
    ELSIF CurrentMonth = 5 THEN
    IF currentDayOfTheMonth <= midOfMonth THEN
    saisonalPatternMultiplier = May1
    ELSE
    saisonalPatternMultiplier = May2
    ENDIF
    ELSIF CurrentMonth = 6 THEN
    IF currentDayOfTheMonth <= midOfMonth THEN
    saisonalPatternMultiplier = June1
    ELSE
    saisonalPatternMultiplier = June2
    ENDIF
    ELSIF CurrentMonth = 7 THEN
    IF currentDayOfTheMonth <= midOfMonth THEN
    saisonalPatternMultiplier = July1
    ELSE
    saisonalPatternMultiplier = July2
    ENDIF
    ELSIF CurrentMonth = 8 THEN
    IF currentDayOfTheMonth <= midOfMonth THEN
    saisonalPatternMultiplier = August1
    ELSE
    saisonalPatternMultiplier = August2
    ENDIF
    ELSIF CurrentMonth = 9 THEN
    IF currentDayOfTheMonth <= midOfMonth THEN
    saisonalPatternMultiplier = September1
    ELSE
    saisonalPatternMultiplier = September2
    ENDIF
    ELSIF CurrentMonth = 10 THEN
    IF currentDayOfTheMonth <= midOfMonth THEN
    saisonalPatternMultiplier = October1
    ELSE
    saisonalPatternMultiplier = October2
    ENDIF
    ELSIF CurrentMonth = 11 THEN
    IF currentDayOfTheMonth <= midOfMonth THEN
    saisonalPatternMultiplier = November1
    ELSE
    saisonalPatternMultiplier = November2
    ENDIF
    ELSIF CurrentMonth = 12 THEN
    IF currentDayOfTheMonth <= midOfMonth THEN
    saisonalPatternMultiplier = December1
    ELSE
    saisonalPatternMultiplier = December2
    ENDIF

    endif

    adxperiod = 14
    atrperiod = 14
    indicator1 = adx[adxperiod]
    atr = AverageTrueRange[atrperiod]
    //exitafternbars = 1
    adxval = 19
    atrmin = 25
    position = round(100/atr/2.1666)
    //a=5
    m = 3
    n = 2
    m1 = m-1
    n1 = n

    if atr>atrmin then
    c1 = indicator1 <adxval
    c2 = indicator1 >adxval

    if c1 then
    // short
    IF (abs(open-close) > (atr*m) and close > open) THEN
    sellshort position CONTRACTS AT MARKET
    ENDIF

    //long
    IF (abs(open-close) > (atr*m) and close < open) THEN
    buy position*saisonalPatternMultiplier CONTRACTS AT MARKET

    ENDIF
    endif

    if c2 then
    // long
    IF (abs(open-close) > (atr*n) and close > open and close> DOPEN(1)) THEN
    buy position*saisonalPatternMultiplier CONTRACTS AT MARKET
    ENDIF

    //short
    IF (abs(open-close) > (atr*n) and close < open and close< DOPEN(1)) THEN
    sellshort position CONTRACTS AT MARKET
    ENDIF
    endif
    endif

    if atr<atrmin then
    c1 = indicator1 <adxval
    c2 = indicator1 >adxval

    if c1 then
    // short
    IF (abs(open-close) > (atr*m1) and close > open) THEN
    sellshort position CONTRACTS AT MARKET
    ENDIF

    //long
    IF (abs(open-close) > (atr*m1) and close < open) THEN
    buy position*saisonalPatternMultiplier CONTRACTS AT MARKET
    ENDIF
    endif

    if c2 then
    // long
    IF (abs(open-close) > (atr*n1) and close > open ) THEN
    buy position*saisonalPatternMultiplier CONTRACTS AT MARKET
    ENDIF

    //short
    IF (abs(open-close) > (atr*n1) and close < open) THEN
    sellshort position CONTRACTS AT MARKET
    ENDIF
    endif
    endif
    //if exitafternbars then
    //IF longonmarket and BarIndex - TradeIndex = a Then
    //sell position contracts at Market
    //EndIF

    //IF shortonmarket and BarIndex - TradeIndex = a Then
    //exitshort position contracts at Market
    //EndIF
    //endif

    ancesco 

  5. Cosmic1 • 04/22/2017 #

    Hi Francesco,
    I tried on 200k units but results were not good. Flat until your optimisation period then it gets going, which of course means curve fitted and little chance of success going forward. I’m not saying it can’t work but it needs some IN/OUT sampling and WF testing to have a chance of success. If you need help with any of this then let me know. If you want me to test any other than 30min then let me know. Happy to help 🙂 

  6. Cosmic1 • 04/22/2017 #

    https://ibb.co/bvrLGQ

  7. Francesco78 • 04/22/2017 #

    Hi Cosmic1
    Thank you for the time you have devoted to the strategy I posted first of all.
    I was aware of the fact that the original code did not give nice results on a 200k bars backtest, as someone did the test in the section on the forum dedicated to this strategy. https://www.prorealcode.com/topic/dax-adaptable-strategy-breackoutmean-reversion/
    What I think could be  would interesting peraps would be to try the 1hr version of the code whereby I have also added the seasonalities parameter used in pathfinder and navigator system.  I have also rewritten the code in a way that maybe could be more understandable . 
    Maybe the fact that the strategy performs only from 2014 is structural or maybe some changes in the code can be made in order to make it simpler and less dependandt by optimization. 
     
    // dax - IG MARKETS
    // TIME FRAME 1H
    // SPREAD 1.0 PIPS

    DEFPARAM CumulateOrders = False
    DEFPARAM FLATBEFORE =090000
    DEFPARAM FLATAFTER =210000

    //highvolume = average[30](volume)<=volume//
    //lowvolume = average[30](volume)>=volume

    adxperiod = 14
    atrperiod = 14
    indicator1 = adx[adxperiod]
    atr = AverageTrueRange[atrperiod]
    //exitafternbars = 1

    //// OPTIMIZED VARIABLES/////
    adxval = 19
    atrmin = 25
    m = 3 // high vol coefficient for mean reversion
    n = 2 //high vol coefficient for brekout
    m1 = m-1 // low vol coefficient for mean reversion
    n1 = n// low vol coefficient for breakout
    ///////////////////////////////////////

    positionlong = saisonalpatternmultiplier*round(100/atr/2.1666)//define sixe of long trades
    positionshort = round(100/atr)// define size of short trade
    //a=5
    lowvolenvironment = atr<atrmin //define lowvol environment use m1 and n1 as coefficient of movement
    highvolenvironment = atr> atrmin //define highvol environment use m and n as coefficient of movement
    meanrevertingenv = indicator1< adxval //define meanreverting environment
    trendenv = indicator1 > adxval// define trendy environment

    //////description of the possible combinations
    sellhighvolmeanreverting = abs(open-close) > (atr*m) and close > open and meanrevertingenv and highvolenvironment
    buyhighvolmeanreverting = abs(open-close) > (atr*m) and close < open and meanrevertingenv and highvolenvironment
    buyhighvoltrendy = abs(open-close) > (atr*n) and close > open and close> DOPEN(1) and trendenv and highvolenvironment
    sellhighvoltrendy = abs(open-close) > (atr*n) and close < open and close< DOPEN(1) and trendenv and highvolenvironment
    selllowvolmeanreverting = abs(open-close) > (atr*m1) and close > open and meanrevertingenv and lowvolenvironment
    buylowvolmeanreverting = abs(open-close) > (atr*m1) and close < open and meanrevertingenv and lowvolenvironment
    buylowvoltrendy = abs(open-close) > (atr*n1) and close > open and trendenv and lowvolenvironment
    selllowvoltrendy = abs(open-close) > (atr*n1) and close < open and trendenv and lowvolenvironment
    ////////////////////////////////////////////////////////

    // define saisonal position multiplier for each month 1-15 / 16-31 (>0 - long / <0 - short / 0 no trade)
    ONCE January1 = 3 //0 risk(3)
    ONCE January2 = 0 //3 ok
    ONCE February1 = 3 //3 ok
    ONCE February2 = 3 //0 risk(3)
    ONCE March1 = 3 //0 risk(3)
    ONCE March2 = 2 //3 ok
    ONCE April1 = 3 //3 ok
    ONCE April2 = 3 //3 ok
    ONCE May1 = 1 //0 risk(1)
    ONCE May2 = 1 //0 risk(1)
    ONCE June1 = 1 //1 ok 2
    ONCE June2 = 2 //3 ok
    ONCE July1 = 3 //1 chance
    ONCE July2 = 2 //3 ok
    ONCE August1 = 2 //1 chance 1
    ONCE August2 = 3 //3 ok
    ONCE September1 = 3 //0 risk(3)
    ONCE September2 = 0 //0 ok
    ONCE October1 = 3 //0 risk(3)
    ONCE October2 = 2 //3 ok
    ONCE November1 = 1 //1 ok
    ONCE November2 = 3 //3 ok
    ONCE December1 = 3 // 1 chance
    ONCE December2 = 2 //3 ok

    // set saisonal multiplier
    currentDayOfTheMonth = Day
    midOfMonth = 15
    IF CurrentMonth = 1 THEN
    IF currentDayOfTheMonth <= midOfMonth THEN
    saisonalPatternMultiplier = January1
    ELSE
    saisonalPatternMultiplier = January2
    ENDIF
    ELSIF CurrentMonth = 2 THEN
    IF currentDayOfTheMonth <= midOfMonth THEN
    saisonalPatternMultiplier = February1
    ELSE
    saisonalPatternMultiplier = February2
    ENDIF
    ELSIF CurrentMonth = 3 THEN
    IF currentDayOfTheMonth <= midOfMonth THEN
    saisonalPatternMultiplier = March1
    ELSE
    saisonalPatternMultiplier = March2
    ENDIF
    ELSIF CurrentMonth = 4 THEN
    IF currentDayOfTheMonth <= midOfMonth THEN
    saisonalPatternMultiplier = April1
    ELSE
    saisonalPatternMultiplier = April2
    ENDIF
    ELSIF CurrentMonth = 5 THEN
    IF currentDayOfTheMonth <= midOfMonth THEN
    saisonalPatternMultiplier = May1
    ELSE
    saisonalPatternMultiplier = May2
    ENDIF
    ELSIF CurrentMonth = 6 THEN
    IF currentDayOfTheMonth <= midOfMonth THEN
    saisonalPatternMultiplier = June1
    ELSE
    saisonalPatternMultiplier = June2
    ENDIF
    ELSIF CurrentMonth = 7 THEN
    IF currentDayOfTheMonth <= midOfMonth THEN
    saisonalPatternMultiplier = July1
    ELSE
    saisonalPatternMultiplier = July2
    ENDIF
    ELSIF CurrentMonth = 8 THEN
    IF currentDayOfTheMonth <= midOfMonth THEN
    saisonalPatternMultiplier = August1
    ELSE
    saisonalPatternMultiplier = August2
    ENDIF
    ELSIF CurrentMonth = 9 THEN
    IF currentDayOfTheMonth <= midOfMonth THEN
    saisonalPatternMultiplier = September1
    ELSE
    saisonalPatternMultiplier = September2
    ENDIF
    ELSIF CurrentMonth = 10 THEN
    IF currentDayOfTheMonth <= midOfMonth THEN
    saisonalPatternMultiplier = October1
    ELSE
    saisonalPatternMultiplier = October2
    ENDIF
    ELSIF CurrentMonth = 11 THEN
    IF currentDayOfTheMonth <= midOfMonth THEN
    saisonalPatternMultiplier = November1
    ELSE
    saisonalPatternMultiplier = November2
    ENDIF
    ELSIF CurrentMonth = 12 THEN
    IF currentDayOfTheMonth <= midOfMonth THEN
    saisonalPatternMultiplier = December1
    ELSE
    saisonalPatternMultiplier = December2
    ENDIF

    endif

    //long
    IF (buyhighvolmeanreverting or buyhighvoltrendy or buylowvolmeanreverting or buylowvoltrendy ) THEN
    buy positionlong CONTRACTS AT MARKET
    ENDIF

    // short
    IF (sellhighvolmeanreverting or sellhighvoltrendy or selllowvolmeanreverting or selllowvoltrendy) THEN
    sellshort positionshort CONTRACTS AT MARKET
    endif

    //if exitafternbars then
    //IF longonmarket and BarIndex - TradeIndex = a Then
    //sell position contracts at Market
    //EndIF

    //IF shortonmarket and BarIndex - TradeIndex = a Then
    //exitshort position contracts at Market
    //EndIF
    //endif

     

    • bertrandpinoy • 04/22/2017 #

      hello Francesco, are you still working on this strategy?

  8. Cosmic1 • 04/22/2017 #

    Will post in your forum thread.

  9. JR1976 • 04/22/2017 #

    Buon pomeriggio ALe,
    ho notato che  posticipando la parte di codice che esegue il breakout alle 9.00 anziche alle 8.00 , si eliminano alcuni trade e il drawdown diminuisce notevolmente  , sarebbe  interessante verificare con un backtest più ampio ( io arrivo solo fino a  maggio 2016
    ecco il codice  che ne pensi ?
    DEFPARAM CumulateOrders = false//DEFPARAM FLATBEFORE =080000  original//DEFPARAM FLATBEFORE =090000 // TF 30 min IT’s better starting at 9 o clockDEFPARAM FLATAFTER =210000startbreak = 90000startrevert = 80000
    adxval = 20//adxval = 25ATRperiod = 12//adxperiod = 15adxperiod = 15indicator1 = adx[adxperiod]atr = AverageTrueRange[ATRperiod]
    //m = 3//n = 2m = 3n = 2c1 = indicator1 <adxvalc2 = indicator1 >adxval
    if time  >= startrevert thenif c1 then// shortIF (abs(open-close) > (atr*m) and close > open)   THENsellshort  1 CONTRACTS AT market//trading = 0//SET STOP pLOSS losses//SET TARGET pPROFIT profitsENDIF
    //longIF (abs(open-close) > (atr*m) and close < open)   THENbuy  1 CONTRACTS AT  market//SET STOP pLOSS losses//SET TARGET pPROFIT profitsENDIFendifendif
    // new//MM100 = Average[200](CLose)///testIf time >= startbreak thenif c2 then// longIF (abs(open-close) > (atr*n) and close > open and close> Dhigh(1))   THENbuy  1 CONTRACTS AT market//trading = 0//SET STOP pLOSS losses//SET TARGET pPROFIT profitsENDIF
    //short//if DCLose(1) < MM100 thenIF (abs(open-close) > (atr*n) and close < open and close< Dlow(1))  THENsellshort  1 CONTRACTS AT market//SET STOP pLOSS losses//trading = 1endifendifendif
    set stop ploss 250//IF shortonmarket and trading = 1  and close<tradeprice – 20 then//exitshort at market//endif

  10. Francesco78 • 04/22/2017 #

    Ciao JR 
    Francesco here not Ale :))
    thanks so much for checking the code, I will have a look, unfortunately me too I dont have 200k backtest

  11. Francesco78 • 04/22/2017 #

    Ciao JR 
    Francesco here not Ale :))
    thanks so much for checking the code, I will have a look, unfortunately me too I dont have 200k backtest. 
    In any case check the forum as I posted few variations of the code
    Thank you!

  12. JR1976 • 04/22/2017 #

    Ok sorry Francesco 🙂
     

  13. Francesco78 • 04/22/2017 #

    These are the comparison with my lates version and yours, I think it improves by all the measures. So great! thank you again
     

  14. Juan Salas • 04/22/2017 #

    Hi Francesco,
    First of all, congratulations for your work and thanks for your contributions. I am one of your strategies’ most devoted follower.
    As a beginner, it may seems a simple question. I am studying this code (Seasonal, nor Adaptable) and I can see that the number of positions are depending on the ATR and the Seasonal Index you give to the different months.
    The thing is than when I place the strategy in the ProRealOrder, automatically it asks you how many contracts I want to place/order (example: 1), so when the strategy is triggered I can see that I just have one contract open.
    Probably there is a logical answer that because, I am a beginner, don’t reach to see, so I would appreciate it if you or anyone in this Forum could enlighten me about it.
    Thanks in advance,
    Juan  

  15. Francesco78 • 04/22/2017 #

    Hi Juan Salas and thank you very much for your undeserved compliments.
    I’m not sure if I undertand correctly your question, if you refer to the fact that the sistem ask you the max position allowed before running the code live, it is just a form of extra security the system adopt. 
    For this strategy, run a backtest and see how much is the max position that is taken in history, alternatively you can modify the code to a fixed size.
    When it ask the question of max position, input what you think is your max tolerable size, if you instead decide to run the code with a fix position, just put this fix position in the system when it asks.
    Hop that helps

  16. Juan Salas • 04/22/2017 #

    Hi Francesco,
    Yes, this is pretty much the question. The system ask me a number of contracts the moment I go live. I have checked the backtest history and it match with the number of contracts I am putting in the box.
    Bottomline, right now with my limited capital, I will stick to your Hammernegated and MeanReverting for oil, which it is more “understandable” for me, and I can place Stops Losses and control the number of contracts. The Seasonable Breakout is for “big boys” 🙂 :), but I will try to come back to it later.
    In any case, thanks so much for your answer and in the name of all those members who can’t produce/code a decent equity curve yet.
    Best,
    Juan 

  17. Francesco78 • 04/22/2017 #

    ok sounds good, you can put min size = 1 and go for the seasonable breakout too, also you can get rid of the seasonals to avoid variable position

  18. JR1976 • 04/22/2017 #

    HI all ,
    anyone test 200k bar for this great code ?

  19. JanWd • 04/22/2017 #

    Thank you for the coding, it seems promising.
    FTSE gives for the short term (5 min) promising results, but as always reliability is the key, not sure about that.

  20. Jan Wind • 04/22/2017 #

    21.04.2019: I retested the strategy for the DAX 5 minutes , it works fine for 10.000 bars, but gives sloppy results for 100.000 bars. . . the gold is to find the additional setting where it better fits all market slopes for the DAX . . . .

avatar
Register or

Likes

avatar avatar avatar avatar avatar avatar avatar avatar avatar avatar avatar avatar avatar avatar avatar avatar

+4 more likes

Related users ' posts
carpentier Joffrey Bonjour à tous, Avant tout merci pour ce travail, cependant je suis bloqué quand je l'insta...
carpentier Joffrey Re, C'est ok, j'ai trouvé mon erreur... Cependant sur quel base peut on calculer son CALC...
Aragorna Hi Nicolas, How is it possible to use it in a higher timeframe plotted on a lower timeframe?...
FXmike hey my friends, thank you for this great code. my problem is he make no trade open. backtest...
FXmike Can i put a Action that my start contract is smaller than 1 ? 0.3 or 0.5 ? In wich Position...
phoentzs I wrote the code for M15 back then and also variants in H1 and M1. Everything works so far....
Jan Wind Thanks for sharing ! The Gain/Loss ratio is a bit low, 1,16, hardly offset the risks take...
drive whats the period ?
Lucas0000 Hola. estoy buscando un programador en proorder, para hacer un programa basado en el Q-trend...
Ludwig Bonjour Merci pour le code, je souhaite intégrer un break even et mette en place un réinves...
superfalcio hello, this strategy is pretty interesting, anyway on index after diferent suggestion and im...
Fralex Hello everyone I optimized the original “LongOnly-DAX-4H-TMA-Channel” algorithm over a pe...
Dom Hello, hello....je commence le trading et découvre par la même occasion le codage....et ce n...
Nicolas Merci, ça fait plaisir !
Be-n Bonjour tout le monde ! Dans l'indicateur de tendance, j'ai du mal à saisir la nuance entre ...
Vinks_o_7 Thanks again Vonasi !
Bard Thank you, this is a great tool @Vonasi, especially for those that used to like shorting Ind...
Aragorna Hi Vonasi, is there a reason why it does not work anymore in new version ePRT Platform? tha...
YvesRobert @robertogozzi. It's done. Thank you
YvesRobert Hello Roberto, some questions about your strategy. 1 - Do the 2 lines SET TARGET pPROFIT T...
robertogozzi 1. The 2 lines SET TARGET pPROFIT TP and SET STOP pLOSS SL are always executed, each bar. Bu...
sycomore Ça ne fonctionne sur aucune valeur, je dois être trop con...
Nicolas il faut appliquer l'indicateur sur le prix.
AntoGH Je crains de ne pas comprendre... Cela indique la probabilité de la prochaine bougie ou donn...
avatar
Anonymous Hi robertogozzi - thank you very much for sharing this strategy. I have performed various ...
robertogozzi Thank you samsampop.
Dotan Hello guys I really appreciate this coding effort but can I use this code for Mt5 Forex Trad...
Gubben So far so good. After a long drawdown it was winning four times in five weeks. Since 24 jul...
pat95162 Salut Pourquoi je n'ai pas les même résultats que vous
UkCoopDownUnder Any hints for us, on which variables we should be optimising ? As of November 2020, the cu...
Peter I recognized a possible problem with the timeframe / Defparam variables. As far as I know, t...
superfalcio Hello Peter, it is long time i have been watching this strategy, very good and interesting ...
Peter I indeed do have different modified strategies in the market. In the past my variants perfor...
JJ Tec Hola. Me gustaría contactar contigo para ver la estrategia..
nilsla1981 Has someone already tested in real ?
Lucas0000 Hola. estoy buscando un programador en proorder, para hacer un programa basado en el Q-trend...
ggolfet Thanks Nicolas, I imported the itf file and solved the problem.
Hasardeur Hallo Nicolas, i tried to code the multi period heat map in combination with the Ehler’s ...
Nicolas Please open a new topic with the code in forum.
JOKAMAURICE Thank you but I don't really understand. The values don't fit with what I see on my chart. I...
Alberto Aguilera Hi! Thanks for your strategy Anyone can check it with 200 bars?
TempusFugit Hi, this simple system for DOW and only shorts has worked quite well, maybe because of its q...
phoentzs Unfortunately, I never pursued this strategy further. Maybe I should take a look with what ...
Vonasi Yes that was the issue. I have posted an updated ITF file here: https://www.prorealcode.com/...
crolakstrading @vonasi Thank you for fixing the issue! This is a great indicator.
gregoire good evening vonasi , I had made the request to create this indicator a few years ago and I ...
tobytarczy Hi Vonasi, Sounds lovely, I race yachts around europe myself. Most regattas cancelled unfor...
mlouys Hello Vonasi thank for your work ! A question how can we do it for minutes ( or 15 min or x ...
Vonasi I think that would be possible but probably in a whole new indicator as detecting when a new...
sir_i Bonjour à tous, Je suis nouveau sur le forum et sur la plateforme, pourriez-vous me dire com...
Nicolas Il faut simplement l'appliquer sur le prix.
sir_i Merci pour la réponse, je ne suis pas familier avec l'application de cette procédure simple,...
darbes Hi How does it go on live ? JC
antonio73 Balmora74, io vedo che funziona anche su timeframe ad 1 minuto con piccole ottimizzazioni, t...
Juananantoniorodriguez hola buenas, a este sistema automático, Cómo se le podría poner un stoploss de beneficio sim...

Top