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
Samitha Prasanna Hi ALE, would you be able to provide the values for the below part of the code (time >=1...
Player Bonjour, J'ai testé cette stratégie sur EurUSD en 1 heures sur 10000 unités et le résultat ...
Player Vue du rapport du Backtest https://ibb.co/8BMrBz6
julien1978 The ADR value that is plotted intraday does not match the value of the regular ATR indicator...
Fab666 I've tried to get a fix for this also but no luck, it doesn't print the correct data as far ...
Seabiscuit Hi! With the new PRT update, this indicator does not work anymore
Guibourse Hi ! I am asking once again for your help : would it be possible to use the ATR as a "take p...
Tradingrob Many thanks for the indicator, however if the price is below the indicator, then the indicat...
aldtrading Merci pour ton travail ! J'ai de bons résultats en utilisant cet indicateur
Dimi.A Awesome mate.
mora87 Hi David and Nicola, I'd like to share idea with you guys which is related to David's Idea. ...
Nicolas Please ask for custom coding in forums instead.
Nicolas Use the wrench of the price chart! Upper left of the window
Dymjohn The wrench shows options for the components of the indicator not how to show in the main cha...
Nicolas http://www.prorealcode.com/topic/overlapping-indicators/  
Naren Yanan what is    diplus  diminus  please
Barney Has anyone tested this algon now when PRT 10.3 was released?
Yngve does anyone know if the issue with the TP/SL is resolved ?
JakeDB Answered my own question....Sorry about this question. 5 positions, take profit at 15, loss ...
maxxb sto facendo girare in demo questa strategia modificata a 10 minuti con stop e profit ottimiz...
Manuel9z Hello, this strategy improves with the SL 30 and the TP 10. I have done backtesting and it w...
miguel33 Grazie filippo. sto facendo dei backtest per valutare meglio in diverse situazioni. se tro...
DerPat Hello, If you google, you will find a lot of articles and block posts that clearly show expe...
jens_kittner I would like to inform you that these strategies tested till today (03.05.2019) generates en...
David Thanks for the explanation Nicolas.
freecat1899 Hello, I wanted to create a percent ADR based on this indicator, so I wrote this code that I...
revstrat At first glance, I see this mistake. You shouldn't average the highs and the lows. You shoul...
GraHal Ooops got that excited I sent that last one twice! ha (and can't delete it, sorry) I got it...
Eric n = 3  dont forget to allow 3 contract in proorder
UkCoopDownUnder Tried EURUSD GMT and GMT -1, as far back as I can go, Nov 2018 on 15mn Tf, 22% loss
Doctrading Hello, Someone asked me something (his results seemed to be different) on my email, but it ...
Glen Marquis Not your best..So what is your best strategy? :)
Doctrading It works on ProRealTime CFD, but backtest begins since May 2014
alex224 Hola Andres, buen trabajo. Algun problema por usar la estrategia con acciones en time frame ...
Andres Hola Alex, no lo he probado en otros timeframes, pero con esta configuración específica no c...
Francesco78 does anyone still use this strategy? Seems like it doesnt work anymore
GraHal Hi Francesco78   doesn't work as in not great results? I was just going to give it another g...
GraHal Works good on the DAX @ 30 Sec TF over 100,000 bars ... maybe everything has speeded up by a...
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