The algorithm is searching for situations, where the range of the last 8 bars is wider than 60 pips. Opens a long position if the close is above and a short positions if the close is below the range.
Unfortunately I only have backtest data since 11/2015 for the 5 minute chart. Maybe somebody can backtest with more data? Thanks!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
// Timeframe M5 // EURUSD (IG - Markets) // Spread 2 pips DEFPARAM CumulateOrders = False DEFPARAM FLATBEFORE = 080000 DEFPARAM FLATAFTER = 210000 IF (abs(close-open[8]) > 0.006) THEN IF (close > open[8]) THEN BUY 1 CONTRACTS AT MARKET SET STOP pLOSS 50 SET TARGET pPROFIT 225 ENDIF IF (close < open[8]) THEN SELLSHORT 1 CONTRACTS AT MARKET SET STOP pLOSS 50 SET TARGET pPROFIT 225 ENDIF ENDIF |
Share this
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 :PRC is also on YouTube, subscribe to our channel for exclusive content and tutorials
Thumbs up for considering your stop loss and take profit that generates RR more that 1
Cheers Kasper
Here is another spin on your code that aslo works nicely;
// Timeframe M5
// EURUSD (IG - Markets)
// Spread 2 pips
DEFPARAM CumulateOrders = False
DEFPARAM FLATBEFORE = 080000
DEFPARAM FLATAFTER = 220000
possize = 1
rng = 0
HighestClose = close[8]
LowestClose = close[8]
pips = 0.0019
For i = 1 to 8 Do
IF (abs(close-open[i]) > pips) THEN
rng = rng + 1
EndIf
If close[i] > HighestClose then
HighestClose = high[i]
ElsIf close[i] < LowestClose then
LowestClose = close[i]
EndIf
Next
If rng >= 4 and (abs(close-open) > pips) then
IF close > HighestClose THEN
BUY possize CONTRACTS AT MARKET
ElsIF close < LowestClose THEN
SELLSHORT possize CONTRACTS AT MARKET
ENDIF
EndIf
SET STOP pLOSS 50
SET TARGET pPROFIT 225
Thanks!!!
Here are another small tweak (just check Flatafter time as I am in a different timezone);
// Timeframe M5
// EURUSD (IG - Markets)
// Spread 2 pips
DEFPARAM CumulateOrders = False
DEFPARAM FLATBEFORE = 080000
DEFPARAM FLATAFTER = 220000
possize = 5
f = 12
pips = 0.0019
rng = 0
HighestClose = close[f]
LowestClose = close[f]
For i = 1 to f Do
IF (abs(close-open[i]) > pips) THEN
rng = rng + 1
EndIf
If close[i] > HighestClose then
HighestClose = high[i]
ElsIf close[i] < LowestClose then
LowestClose = close[i]
EndIf
Next
If rng >= 4 and (abs(close-open) > pips) then
IF close > HighestClose THEN
BUY possize CONTRACTS AT OPEN + averagetruerange[f](close) stop
SELLSHORT possize CONTRACTS AT OPEN - averagetruerange[f](close)*3 stop
ElsIF close < LowestClose THEN
SELLSHORT possize CONTRACTS AT OPEN - averagetruerange[f](close) stop
BUY possize CONTRACTS AT OPEN + averagetruerange[f](close)*3 stop
ENDIF
EndIf
SET STOP pLOSS 50
SET TARGET pPROFIT 320
Also change the ATR multiplier to 2 instead of 3. Slightly better drawdown.
I started he thread below as I get the results shown on image below. Please help on the Forum thread.
https://www.prorealcode.com/topic/trendfollower-eurusd-5m/
Hi Everybody,
when I look at the strategy I felt the need to implement a Moneymanagement-System. Because I cant Prog this by myself, I took Kasper’s reinvestment version Code from “ALE’s Fractals breakout intraday Strategy EUR/USD 1H” and ty to implement it. Mayby it looks a little bit rudimentary, but it seems to be working! I couldn’t believe my eyes! I also take some different Numbers. Does someone get similar results (Spread: 1,5 Pips)?
Here is the code:
// Timeframe M5// Timeframe M5
// EURUSD (IG - Markets)
// Spread 2 pips
DEFPARAM CumulateOrders = False
DEFPARAM FLATBEFORE = 080000
DEFPARAM FLATAFTER = 210000
Reinvest=1
if reinvest then
Capital = 10000
Risk = 1//0.1//in % pr position
StopLoss = 26
REM Calculate contracts
equity = Capital + StrategyProfit
maxrisk = round(equity*(Risk/100))
MAXpositionsize=5000
MINpositionsize=1
Positionsize= MAX(MINpositionsize,MIN(MAXpositionsize,abs(round((maxrisk/StopLoss)))))//*Pointsize))))
else
Positionsize=1
StopLoss = 26
Endif
IF (abs(close-open[2]) > 0.006) THEN
IF (close > open[2]) THEN
BUY positionsize CONTRACT AT MARKET
set stop loss stoploss*pointsize
SET TARGET pPROFIT 191
ENDIF
IF (close < open[2]) THEN
SELLSHORT positionsize CONTRACT AT MARKET
set stop loss stoploss*pointsize
SET TARGET pPROFIT 191
ENDIF
ENDIF
I would like to upload a picture but for some reason it did not work.
Results in 3 Jears on 15min Timeframe (EUR/USD) from Juli 2015 till now: From 10.000 to 22.344 $ (without MM)From 10.000 to 236.428 $ (with MM)
<// Timeframe M15
// EURUSD (IG - Markets)
// Spread 2 pips
DEFPARAM CumulateOrders = False
DEFPARAM FLATBEFORE = 080000
DEFPARAM FLATAFTER = 210000
TS = 25 // 35 default
SL = 50
PT = 80
m = 8 // 8 default
once startpositionsize=1
once positionsize=startpositionsize
once flatoverweekends=1
once startequity=0
once Reinvest=1
if reinvest then
//------------ Fixed fraction money management ----------
once multiplier=1
once delta=100 // newlevel then
multiplier=multiplier+1
oldlevel=newlevel
newlevel=strategyprofit+startequity+multiplier*fraction
positionsize=multiplier*startpositionsize
elsif strategyprofit+startequity=2 then
newlevel=strategyprofit+startequity
oldlevel=strategyprofit+startequity-multiplier*fraction
multiplier=multiplier-1
positionsize=multiplier*startpositionsize
endif
Endif
if flatoverweekends then
//————— daylight-saving corrections ——————
if currentmonth=3 and day>=15 then
dlc=10000
elsif currentmonth=11 and day=(223000-dlc))
else
fridaynight=0
endif
if fridaynight then
if longonmarket then
sell at market
elsif shortonmarket then
exitshort at market
endif
endif
REM Conditions to enter long hereafter
IF (abs(close-open[m]) > 0.006) THEN
IF (close > open[m]) THEN
BUY positionsize CONTRACTS AT MARKET
SET STOP pLOSS SL
SET TARGET pPROFIT PT
ENDIF
ENDIF
//trailing stop
trailingstop = TS
if not onmarket then
MAXPRICE = 0
priceexit = 0
endif
//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
SET STOP ploss SL//
>
Hi Bjoern, I was playing around with your code this morning (EUR/USD 5′).
Thank you to the community for the piece of code (Despair for the MM module…).