A simple concept.
Define the DayOpen using time.
Buy x points above, sellshort x points below the DayOpen.
One position max a day, Long or Short.
ExtraTradeCriteria is optional.
Test DAX 30 Cash, 3 minutes, spread 1, 100k bars
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
//------------------------------------------------------------------------- // Main code : Straddle DayOpen //------------------------------------------------------------------------- // common rules DEFPARAM CUMULATEORDERS = false DEFPARAM PRELOADBARS = 10000 // optional ExtraTradeCriteria=1 // positionsize and stops positionsize = 1 sl = 0.60 // % Stoploss pt = 0.40 // % Profit Target ts = 0.35 // % MFETrailing // indicator settigns NOP=15 //number of points TimeOpen=090000 // day & time rules ONCE entertime = TimeOpen ONCE lasttime = 100000 ONCE closetime = 240000 // greater then 23.59 means it continues position overnight ONCE closetimeFriday=173000 tt1 = time >= entertime tt2 = time <= lasttime tradetime = tt1 and tt2 DayForbidden = 0 // 0=sunday df = dayofweek <> dayforbidden // setup number of trades intraday if IntradayBarIndex = 0 then longtradecounter = 0 Shorttradecounter = 0 Tradecounter=0 endif // general criteria GeneralCriteria = tradetime and df // trade criteria tcLong = countoflongshares < 1 and longtradecounter < 1 and tradecounter <1 tcShort = countofshortshares < 1 and shorttradecounter < 1 and tradecounter <1 // indicator criteria If time = TimeOpen then DayOpen=open endif if IntradayBarIndex = 0 then lx=0 sx=0 endif if high > DayOpen+NOP then lx=1 else lx=0 endif if low < DayOpen-NOP then sx=1 else sx=0 endif // trade criteria extra min1 = MIN(dhigh(0),dhigh(1)) min2 = MIN(dhigh(1),dhigh(2)) max1 = MAX(dlow(0),dlow(1)) max2 = MAX(dlow(1),dlow(2)) If ExtraTradeCriteria then tcxLong = high < MIN(min1,min2) tcxShort = low > MAX(max1,max2) else tcxLong = high tcxShort = low endif // long entry If GeneralCriteria then if lx and tcLong and tcxLong then buy positionsize contract at market longtradecounter=longtradecounter + 1 tradecounter=tradecounter+1 endif endif // short entry If GeneralCriteria then if sx and tcShort and tcxShort then sellshort positionsize contract at market shorttradecounter=shorttradecounter + 1 tradecounter=tradecounter+1 endif endif // MFETrailing trailingstop = (tradeprice/100)*ts if not onmarket then MAXPRICE = 0 MINPRICE = close priceexit = 0 endif if longonmarket then MAXPRICE = MAX(MAXPRICE,close) if MAXPRICE-tradeprice(1)>=trailingstop*pipsize then priceexit = MAXPRICE-trailingstop*pipsize endif endif if shortonmarket then MINPRICE = MIN(MINPRICE,close) if tradeprice(1)-MINPRICE>=trailingstop*pipsize then priceexit = MINPRICE+trailingstop*pipsize endif endif If onmarket and priceexit>0 then sell at market exitshort at market endif // exit at closetime If onmarket then if time >= closetime then sell at market exitshort at market endif endif // exit friday at set closetime if onmarket then if (CurrentDayOfWeek=5 and time>=closetimefriday) then sell at market exitshort at market endif endif // build-in exit SET TARGET %PROFIT pt SET STOP %LOSS sl GRAPH 0 coloured(300,0,0) AS "zeroline" GRAPH (positionperf*100)coloured(0,0,0,255) AS "PositionPerformance" |
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 :
Filename : download the ITF files
How to import ITF files into ProRealTime platform?
PRC is also on YouTube, subscribe to our channel for exclusive content and tutorials
works also great on 10 minutes and 15 minutes dax.
Only get’s activated in the first hour.
The assumption is that the dax takes off at 9u.
When the enter criteria is reached, there’s a high chance it gives the opportunity to take another number of points at a small risk.
NOP 15 for 3 min
NOP 25 for 10min
NOP 30 for 15min
The code below has an extra exit criteria.
l instruction GRAPH pose problème sur PRT… pas vous? cordialement
Supprimer simplement les lignes avec GRAPH pour passer en ProOrder, trading live.
thanks Paul!
Sorry Paul but I can’t see the same result on the same instrument, actually it show opposite performance . Should I do some particular settings? Can you help me?
Hi Paul,
thanks a lot for for the strategy !! it works well for the DAX 3 minutes graph (tested with 85.000 bars, from 20 feb till 26 okt,, only 13% in the market,) ,
Hopefully it keeps profitable, as the testing period of a half year seems short.
I hope when playing around with the profit can be increased without being much longer in the market.
Just a remark
If I want only 1 opening trade per day, I add the condition ” OTD = Barindex – TradeIndex(1) > IntradayBarIndex” at the open buy / open sell condition, meaning that only one opening trade can be made during the day.
Bardindex counts the total bars in the graph
TradeIndex(1) counts the total bars in the graph till the last trade
IntradayBarindex counts the bars from the beginning of the day in the graph.
If you change the formula to Tradeindex(2), it allow 2 trades during the day (Be aware, closing is also counted as a trade.)
I wonder why you include Daysforbidden in your code to exclude Sunday. You can turn off weekend bars, (saterday and sunday) in the ProRealTrade graphs (Options –> Platform Options –> Time Zones and Trading Hours), and trading is not influenced by eventual existing weekend bars. so no need to exclude Sunday in the trading code. Be aware that setting intraday charts with specific times like 6:00 to 22:00 instead of trading hours can have huge impact on auto trading results !
bon travail
@fserra.
I think all the needed information in available. So perhaps it’s a time-zone setting on your side?
@Jan Wind
I switched from 3 minutes and focused on the period from 1-1-2015 for 10 and 15 minutes.
That’s about 150k bars for the 10 min., 100k bars for the 15 min, (300-400 trades)
The number of trades, for long and short and in total is covered in the code.
There are other ways to program it. Thanks for the tip.
The daysforbidden is set to 0, because I don’t’ want it to be used, but still be able to test if there is a poor day in a week.
Profit can be increased at a cost of %win chance. Remove MFE or make it bigger and/or use a high profit target i.e. 1.5%
Hi Paul,
I have played around, also with 10 minutes. seems that your delivered setting with the 3 minutes graph is still the most profitable, and most constant.
The 3 minutes algo is improving when increasing the SL and Trailing SL and get rid of the take profit , and in this case adding an opening condition “not on market” to let the profits grow instead of a new morning opening.
(Waarschijnlijk zouden we ook in het Nederlands kunnen schrijven ? )
Mvg Jan
Hoi Jan
Eigenlijk is NL schrijven wel een stukje makkelijker!
B.v. SL en TSL beide op 1, zonder PT heeft goede resultaten en met mijn waarden stijgt het van 4000 naar 6000. Win% nog steeds rond 50%
Een kleine verbetering is een extra exit scenario. Als de high > dhigh[1]+nop dan sluiten, en andersom voor short.
Weet nog niet wat not on market precies toevoegd, dat zou ik moeten vergelijken. Als het goed is wordt een positie, met een grotere TSL en zonder PT ook ‘s-nachts aangehouden. Wat ik nu bedenk zou het ook wel interessant zijn, om als je een positie nog hebt van een dag tevoren, er 1 kan toevoegen als het getriggered wordt.
Later nog even meer testen!
Gr Paul
Hi Paul,
try this version of your Tsystem on DAX 15 Min
//————————————————————————-
// Main code : Straddle DayOpen
//————————————————————————-
// common rules
DEFPARAM CUMULATEORDERS = false
DEFPARAM PRELOADBARS = 10000
// positionsize and stops
positionsize = 1
SL = 0 //0.60 // % Stoploss
TP = 0 //0.40 // % Profit Target
NOP = 15 //number of points
TimeOpen = 090000
lasttime = 100000
closetime = 210000
tradetime = time >= TimeOpen and time DayOpen+NOP then
lx=1
else
lx=0
endif
if low < DayOpen-NOP then
sx=1
else
sx=0
endif
// trade criteria extra
min1 = MIN(dhigh(0),dhigh(1))
min2 = MIN(dhigh(1),dhigh(2))
max1 = MAX(dlow(0),dlow(1))
max2 = MAX(dlow(1),dlow(2))
tcxLong = high MAX(max1,max2)
// long entry
If not onmarket and tradetime then
if lx and tcxLong then
buy positionsize contract at market
endif
if sx and tcxShort then
sellshort positionsize contract at market
endif
endif
// exit at closetime
If onmarket then
if time >= closetime then
sell at market
exitshort at market
endif
endif
If SL > 0 then
set stop ploss SL
endif
if TP>0 then
set target pprofit TP
endif
Hi, on 3 minute chart on 200K backtest its clearly flat, hinting that this might be curvefit.
The 200K backtest on 15m is looking alot better, gonna see if i can reoptimise. will share if i find anything
Dany, the code gave some errors.
Jebus89 plz share if you have improvements or the code can be better coded.
here are the things i work on
– german holidays and the day before exclude from trading, just closing if a position is openend from a day before
– perhaps split NOP, so NOPlong and NOPshort and test or walk forward.
– NOP instead of points use %
– Use MFE in conjunction with Larry Williams 3bar trailing stop to maximise profits.
– Use breakeven stop maybe
Sorry Paul, here is it
//————————————————————————-
// Main code : Straddle DayOpen
//————————————————————————-
// common rules
DEFPARAM CUMULATEORDERS = false
DEFPARAM PRELOADBARS = 10000
positionsize = 1
SL = 0
TP = 0
NOP = 15 //number of points
TimeOpen = 090000
lasttime = 100000
closetime = 210000
tradetime = time >= TimeOpen and time DayOpen+NOP then
lx=1
else
lx=0
endif
if low < DayOpen-NOP then
sx=1
else
sx=0
endif
// trade criteria extra
min1 = MIN(dhigh(0),dhigh(1))
min2 = MIN(dhigh(1),dhigh(2))
max1 = MAX(dlow(0),dlow(1))
max2 = MAX(dlow(1),dlow(2))
tcxLong = high MAX(max1,max2)
// long entry
If not onmarket and tradetime then
if lx and tcxLong then
buy positionsize contract at market
endif
if sx and tcxShort then
sellshort positionsize contract at market
endif
endif
// exit at closetime
If onmarket then
if time >= closetime then
sell at market
exitshort at market
endif
endif
If SL > 0 then
set stop ploss SL
endif
if TP>0 then
set target pprofit TP
endif
Hello DANY. There is still a mystake in your code in line 18. Could you please solve it?
I’m looking forward to trying out your new improvement.
Thank you
Hi! Thank you so much for this system! Would it be a good idea to optimize also the % Stoploss, % Profit Target and % MFETrailing? Or that would be overoptimization?
Thank you!
Would be good to open a Thread for this strategy / System in the ProOrder Support Forum then we can post images and use the other tools on that Forum (Thanks, Quote etc).
I am happy to raise the Thread but I feel Paul’s name should show as the Thread Originator as some recognition for his excellent work here! Thank You to Paul
Thanks GraHal for the suggestion. I will open a topic for the strategy.
Dany, there are still errors. Perhaps have a look and post in the topic I will open.
Xpiga thnx for the comment. I don’t think those 3 (SL/PT/MFE) or trailing stop, count as over-optimisation. The most important is the SL. Up to 1% is fine.
updates are posted in topic below
https://www.prorealcode.com/topic/dayopen-straddle-for-dax/#post-84224
buongiorno paolo , volevo farti i complimenti x il lavoro fatto , funziona molto bene sul 3 minuti , e ho notato che se metto :
stoploss , 0,60% e profit 0,90 % funziona ancora meglio da febbraio 2018 sul 3 minuti raddoppia il profitto ,
sbaglio a fare questo ?
grazie
eugenio
muy buena estrategia, gracias por compartirla
thank yoy for your estrategy, I like me
Good morning!
How do we adjust the code to the different timeframes? You said something about de NOP (“NOP 15 for 3 min, NOP 25 for 10min,NOP 30 for 15min), but in the code I’m confused because the are nopl and nops. Should we use variable optimization for those two variables? Is there anything else that we should change for the different 3 min, 10 min or 15 min?
Also using the code without any modification I realised that it works best for 2 min graphic. What do you think about that?
If there are more changes to apply between the different times I would love to have the updated codes for each one if possible.
Thank you so much for your work!!! Keep it up!
Hello is there an update on this code?
I am following: looks very interesting! Anyone is still using this code?
the last update can be found in topic Strategy DayOpen Straddle for DAX on page 14.