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
//-------------------------------------------------------------------------
// 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"
You must be logged in to post a comment.
I am following: looks very interesting! Anyone is still using this code?
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!
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.
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
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
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
//------------------------------------------------------------------------- // 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
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, 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
@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, 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 !
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
the last update can be found in topic Strategy DayOpen Straddle for DAX on page 14.