True Range Breakout EUR/USD

True Range Breakout EUR/USD

Simple 1 hour intraday trading strategy on EUR/USD (mini).

This automated trading strategy takes orders if the current candlestick is wider than the 12 periods average true range. Trades direction are chosen with this breakout candlestick color. If the current candlestick is green, then the trend seems bullish and a long order is initiated. If the breakout candle is red, a new bearish trend is forming and a short trade is launched at market.

It is a simple and a quite effective strategy with 3/1 risk reward ratio.

 

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. Nicolas • 04/18/2017 #

    So simple and nice strategy. Thanks a lot for our enlightening of this particular setup bjoern! It deserves to spend some time trying to find ways to improve!

    • avatar
      bjoern • 04/18/2017 #

      Thanks 🙂

  2. ALE • 04/18/2017 #

    Very Nice!

  3. avatar
    bjoern • 04/18/2017 #

    Works also good on BUND – 2H – Multiplicator 1 – TP/SL 60 for each long and short

  4. victormork • 04/18/2017 #

    Very nice! I like the look on BUND.

  5. Francesco78 • 04/18/2017 #

    Very nice.
    Would it be possilbe to see the test results on the bund?
    I dont have enough data on my PRT I guess its because is not a premium account…
    Thanks!

    • avatar
      bjoern • 04/18/2017 #

      Sure, please find attached the backtest for BUND tick-by-tick

  6. Francesco78 • 04/18/2017 #

    Hi Bjoern
    I have added a filter in your code to avoid “choppy market” by using an oscillator defined by the difference between the 50 and the 200 moving average, divided by the close and set the condition for the abs of this indicator to be greater than x%  and optimized again.
     
    // EUR/USD(mini) – IG MARKETS// TIME FRAME 1H// SPREAD 2.0 PIPS
    DEFPARAM CumulateOrders = FalseDEFPARAM FLATBEFORE =080000DEFPARAM FLATAFTER =210000
    indicator1 = Average[200](close)indicator2 = Average[50](close)c1 = (indicator2-indicator1)/closec2= abs(c1)<0.012
    atr = AverageTrueRange[30]
    if c2 thenm = 2profits = 130losses = 40// LONGIF (abs(open-close) > (atr*m) and close > open) THENbuy 1 CONTRACTS AT MARKETSET STOP pLOSS lossesSET TARGET pPROFIT profitsENDIF
    //SHORTIF (abs(open-close) > (atr*m) and close < open) THENsellshort 1 CONTRACTS AT MARKETSET STOP pLOSS lossesSET TARGET pPROFIT profitsENDIFendif
    I could only do it for the last 3 years but I got nice results so I write the code here.
     

    • avatar
      bjoern • 04/18/2017 #

      Thanks! Will take a look at it!

    • avatar
      bjoern • 04/18/2017 #
  7. Francesco78 • 04/18/2017 #

    Thank you!

  8. Francesco78 • 04/18/2017 #

    Hi Bjoern, I have created a strategy largely based on your nice and simple idea applied on Dax, and created a forum topic for it 
    https://www.prorealcode.com/topic/dax-adaptable-strategy-breackoutmean-reversion/
    Many thanks
    Francesco 

  9. victormork • 04/18/2017 #

    Hi, I would just like to share my own take on this strategy. I’m using 30 min on EURUSD but it works on 1H as well.
    //-------------------------------------------------------------------------
    // Main code : ATR breakout EURUSD 30M
    //-------------------------------------------------------------------------
    // EUR/USD(mini) - IG MARKETS
    // TIME FRAME 30M
    // SPREAD 2.0 PIPS

    DEFPARAM CumulateOrders = False
    DEFPARAM Preloadbars = 100
    DEFPARAM FLATBEFORE = 100000
    DEFPARAM FLATAFTER = 230000

    once optimization = 1
    once stopandtarget = 2 // 1=dynamic, 2=fixed

    // VALUES
    If optimization = 1 then
    atrtargetlong = 1 //2
    atrsllong = 1 //1
    atrtargetshort = 4 //2
    atrslshort = 2 //1
    atrperiod = 25
    atrmulit1 = 3
    atrmulit2 = 2
    atrtrailingstop = 1.85

    elsif optimization = 2 then
    atrtargetlong = 1 //2
    atrsllong = 1 //1
    atrtargetshort = 4 //2
    atrslshort = 2 //1
    atrperiod = 25
    atrmulit1 = 3
    atrmulit2 = 2
    atrtrailingstop = 0.5
    endif

    // INDICATOR
    atr = AverageTrueRange[atrperiod]

    // LONG ENTRY
    b1 = (abs(open-close) > (atr*atrmulit1))
    b2 = close > open
    b3 = b1 AND b2

    IF b3 THEN
    BUY 1 CONTRACTS AT MARKET
    ENDIF

    //LONG STOP AND TARGET

    //Dynamic stop and target
    If stopandtarget = 1 then
    SET TARGET pPROFIT (atr * atrtargetlong) / pointSize
    SET STOP PLOSS (atr * atrsllong) / pointSize

    //Fixed stop and target
    elsif stopandtarget = 2 then
    SET TARGET pPROFIT 120
    SET STOP PLOSS 40
    ENDIF

    //SHORT ENTRY
    s1 = (abs(open-close) > (atr*atrmulit2))
    s2 = close < open
    s3 = s1 AND s2

    IF s3 THEN
    SELLSHORT 1 CONTRACTS AT MARKET
    ENDIF

    // SHORT STOP AND TARGET

    //Dynamic stop and target
    If stopandtarget = 1 then
    SET TARGET pPROFIT (atr * atrtargetshort) / pointSize
    SET STOP PLOSS (atr * atrslshort) / pointSize

    //Fixed stop and target
    elsif stopandtarget = 2 then
    SET TARGET pPROFIT 120
    SET STOP PLOSS 40
    ENDIF

    //trailing stop
    trailingstop = (atr * atrtrailingstop) / pointSize

    //resetting variables when no trades are on market
    if not onmarket then
    MAXPRICE = 0
    MINPRICE = close
    priceexit = 0
    endif

    //case SHORT order
    if shortonmarket then
    MINPRICE = MIN(MINPRICE,close) //saving the MFE of the current trade
    if tradeprice(1)-MINPRICE>=trailingstop*pointsize then //if the MFE is higher than the trailingstop then
    priceexit = MINPRICE+trailingstop*pointsize //set the exit price at the MFE + trailing stop price level
    endif
    endif

    //case LONG order
    if longonmarket then
    MAXPRICE = MAX(MAXPRICE,close) //saving the MFE of the current trade
    if MAXPRICE-tradeprice(1)>=trailingstop*pointsize then //if the MFE is higher than the trailingstop then
    priceexit = MAXPRICE-trailingstop*pointsize //set the exit price at the MFE - trailing stop price level
    endif
    endif

    //exit on trailing stop price levels
    if onmarket and priceexit>0 then
    EXITSHORT AT priceexit STOP
    SELL AT priceexit STOP
    endif

     

  10. mckubik • 04/18/2017 #

    Thanks. I will run a Test. 

  11. poonsl2828 • 04/18/2017 #

    Hi! bjoern
    May i know what timing should i change for time zone (Singapore (GMT +8:00)

    DEFPARAM FLATBEFORE =080000
    DEFPARAM FLATAFTER =210000

avatar
Register or

Likes

avatar avatar avatar avatar avatar avatar avatar avatar avatar avatar avatar
Related users ' posts
verdi55 At least there should be some moving average that has also reverted into the opposite direct...
verdi55 In addition to the moving average, wait until at least one bar is completely back inside the...
rama This works excellent on range bound I tried , give 90% win rates on dax , 3 min chart. can s...
Doctrading Bonjour, Tu as raison, il faut faire attention à la fiabilité de certains backtests. Le pro...
Duccio Hi DocTrading, I've backtested your strategy and I notice that 75% of position have been cl...
Doctrading Hello,  No, I don't use this strategy on real account, because my own strategies (that you ...
Doctrading Maybe you can also change the hourly beginning of the day (not 23PM but 12AM, OOH in french)...
Duccio Hi Doctrading,there is a way to control the max loss of the positions in this code? For exa...
Doctrading Hello, Yes, there is a command I think, but I don't know it. Nicolas knows it. You can als...
Investment Account Wow great thanks ... looks good! Do I set the colour shades up from within the indicator 's...
avatar
Anonymous Thanks for your comments and yes, that is exactly how I set up the colour levels.
Vish Thanks I have added this in my watch list. Has anyone tried it yet ? Does it work on currenc...
PeterClothier Hi, I downloaded this indicator and imported it. I tried adding it to a chart , and it hasn'...
Nicolas Don't add it on the price, so just don't use the price setting to add the indicator.
Nicolas
9 years ago
petmut Hello all, When I import the code here above "multiple ATR bands" and apply it on the PRT ...
Nicolas That should need some custom coding, if you want to make it done, please open a new topic in...
Patopercho Hello, thanks for the indicator, i would like to change the color, is it possible, thanks

Top