This is my first autosystem, thanks to the many people in this web that help me with it. I designed it with the idea of being versatile so it can work within bulls, bears and neutrals periods, also with different markets, timeframes or indicators. I put here one of the setups I designed but I have tried others with similar results in backtesting, e.g. DOW-15m-MACD.
There´s not size management. I have tried roughly several approachs but I was not convinced about them. I decided to leave the size of the positions to the monetary circumstances of each one. Also it can be a good topic to contribute ideas here.
I can only backtest with 100k candles, it would be nice if someone can do it before that.
To use you need to import in PRT the Divergence Indicator “Divergence-RSI-V3.itf” and the system itself “The Grinder-EUSD-5M-v0.itf”
SETUP:
- EUR/USD Intraday, from 08:00 to 19:00
- 5 minutes TimeFrame
HOW IT WORKS:
- It uses an indicator that detectes divergences between price and RSI to look for swing highs and lows (This indicator is based in an original idea of “jose7674”. Thanks for it Jose, sorry I don´t remember where I get it, not in this web)
- It filters trends with a modified Donchian Channel
- Additionally when a %Loss is reached it switchs to the opposite direction as a trend should be underway
- The %Profit is high and rarely used as the system itself look for highs and lows to change position
- The %Loss is not used, coded as a precaution, as the system switch direction before getting to it
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 |
// System parameters DEFPARAM CumulateOrders = False DEFPARAM PRELOADBARS = 2000 DEFPARAM FLATBEFORE = 080000 DEFPARAM FLATAFTER = 190000 LimitEntryTime = 184000 //No Entries after this time // Divergence Indicator RSI ignored, DRSI = CALL "Divergence RSI v3"[24,8,1,0] BullishDivergence = DRSI = 1 BearishDivergence = DRSI = -1 // Filter to avoid entries on a trend (Delayed Donchian Canal with a Margin) NotBearTrend = LOWEST[120](close[15]) < (close+((close*SafetyMargin)/100)) NotBullTrend = HIGHEST[120](close[15]) > (close-((close*SafetyMargin)/100)) SafetyMargin = 0.15 // Conditions for Entry of Long Positions IF BullishDivergence AND NotBearTrend AND OPENTIME<=LimitEntryTime THEN BUY 1 CONTRACTS AT MARKET ELSIF SHORTONMARKET AND ((CLOSE-TRADEPRICE)/TRADEPRICE)*100 > FlipPosition THEN// Change from short to long position when the FlipPosition Stop reached, because a trend is underway BUY 1 CONTRACTS AT MARKET ENDIF // Conditions for Entry of Short Positions IF BearishDivergence AND NotBullTrend AND OPENTIME<=LimitEntryTime THEN SELLSHORT 1 CONTRACTS AT MARKET ELSIF LONGONMARKET AND ((CLOSE-TRADEPRICE)/TRADEPRICE)*100 < -FlipPosition THEN// Change from long to short position when the FlipPosition Stop reached, because a trend is underway SELLSHORT 1 CONTRACTS AT MARKET ENDIF // Loss, Profit and Flip Stops SET STOP %LOSS 3 // Not used because the Flip Stop is lower, just in case. SET TARGET %PROFIT 3 FlipPosition = 1.5 // It this %Loss is reached the position turns in the opposite direction (Long->Short or Short->Long) // END |
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
OH MY GOD
I forgot to say that I am looking forward for feedback about this strategy. Is my first autosystem and sincerely I have no idea if I am going in the right direction and I hope you people with more experience help me. Thanks
hi TempusFugit,
I tried to make some manual calculation of the performance in order to insert in the strategy some Money Management, but I stopped
myself when I saw results.
It’s possible that I’m wrong but let’s try you too, using the attached code below.
It’s seems that when the performance are quite stick to zero level (between plus or minus) prorelatime the most of time
say that you win (even if a little amount), but by a manually calculation you loose.
You can see the equity line manually calculated.
So, I hope to be wrong (I’m am a new member…), but if I am right I would be worried about PRT results.
Please let me know your opinion or whoever can help us.
thx
code:
// System parameters
DEFPARAM CumulateOrders = FalseDEFPARAM PRELOADBARS = 2000DEFPARAM FLATBEFORE = 080000DEFPARAM FLATAFTER = 190000LimitEntryTime = 184000 //No Entries after this time
//———————————————————————————–//timestop 5 inutes before FLATAFTER in order to let me calculate manually perftimestop = 185500if one = 0 thencapital = 10000one = 1endif//———————————————————————————–
// Divergence Indicator RSIignored, DRSI = CALL “Divergence RSI v3″[24,8,1,0]BullishDivergence = DRSI = 1BearishDivergence = DRSI = -1
// Filter to avoid entries on a trend (Delayed Donchian Canal with a Margin)NotBearTrend = LOWEST[120](close[15]) < (close+((close*SafetyMargin)/100))NotBullTrend = HIGHEST[120](close[15]) > (close-((close*SafetyMargin)/100))SafetyMargin = 0.15
// Conditions for Entry of Long PositionsIF BullishDivergence AND NotBearTrend AND OPENTIME<=LimitEntryTime THENBUY 1 CONTRACTS AT MARKETELSIF SHORTONMARKET AND ((CLOSE-TRADEPRICE)/TRADEPRICE)*100 > FlipPosition THEN// Change from short to long position when the FlipPosition Stop reached, because a trend is underwayBUY 1 CONTRACTS AT MARKETENDIF
// Conditions for Entry of Short PositionsIF BearishDivergence AND NotBullTrend AND OPENTIME<=LimitEntryTime THENSELLSHORT 1 CONTRACTS AT MARKETELSIF LONGONMARKET AND ((CLOSE-TRADEPRICE)/TRADEPRICE)*100 < -FlipPosition THEN// Change from long to short position when the FlipPosition Stop reached, because a trend is underwaySELLSHORT 1 CONTRACTS AT MARKETENDIF//———————————————————————————–//manually calculation of performanceif onmarket thenif LONGONMARKET thenperf = (close – POSITIONPRICE)/POSITIONPRICE * 100perfc = (close – POSITIONPRICE) * POINTVALUE * COUNTOFPOSITION *10000endifif shortonmarket thenperf = (-close + POSITIONPRICE)/POSITIONPRICE * 100perfc = (-close + POSITIONPRICE) * POINTVALUE * COUNTOFPOSITION *-1 *10000endif
if perf >= 3 or time > timestop then//graph perfccapital = capital + PERFCgraph capitalif longonmarket thensell at marketendifif shortonmarket thenexitshort at marketendifendifendif//———————————————————————————–// Loss, Profit and Flip StopsSET STOP %LOSS 3 // Not used because the Flip Stop is lower, just in case.//SET TARGET %PROFIT 3FlipPosition = 1.5 // It this %Loss is reached the position turns in the opposite direction (Long->Short or Short->Long)
Hi DEIO,
Thank you for collaborate
I am not sure what are you trying… to replicate the “Equity Cuve” shown by PRTBackTest? And I am not sure to follow your code, e.g. what is “one”?, but is it possible that the piece I copy below make your code only take in account the trades with 3% profit or those that reach 19:00? Because these trades are minority
if perf >= 3 or time > timestop then
//graph perfc
capital = capital + PERFC
graph capital
Also, you canceled the 3%TakeProfit so the system is changed.
Maybe I can´t understand your code because I am also a newbie, can any expert enlight us?
Also if you are worried about the PRT calculation of P/L, I think you can verify it checking each trade calculation of P/L and total them. Is that what worries you?
Hi TempusFugit,
it’s true that didn’t consider all the trades of the strategy…. I’m checking….
Anyway usaually I try to replicate the E.L. of PRT (as best I can), because this way I’m more confident about what I’m coding.
Probably I haven’t completely understood your criteria’s strategy, anyway in order to try a Money management
in my mind it’s necessary to calculate the current capital and so the plusminus of any trade.
About 3% target … I tried to manage manually as I said before (just where you said that there are the minority of trades).
And results are the same you got with your original code.
Two questions:
1. when the position is flipped in the opposite direction, where the closure of the loosing trade is ?? 2. The majority of trades at what % are closed ? (apart time expiry and 3% plus)
Anyway I can’t judge PRT calculations !!! but I’d like to understand how the strategy works exactly 🙂
I hope I was clear ..
Thx.
Hey TempusFugit!
Thanks for your code but im sorry to say that it dosn´t work in it´s current state.
You have over optimized it to work with the order of the trades, like – short-long-long-short-long and so on. If you split the code in one short side and on long side you will not get a very pleasing resault…
If I could I would add a picture but it´s not possible here.
Hi Joachim,
Thanks for sharing, but I am not sure about that. The base of the system with wich I created it is taking the highs and lows continuosly during the day (high-low-high-low…), that´s way the stop loss and profit are so high for this timeframe and rarely used So I think it´s normal it doesn´t work separately. I would nice to know the results of backtest before the one I can get (100.000) to know if it´s too optimized as you think.
Thanks anyway 🙂
Hi DEIO,
Answering your questions:
1. when the position is flipped in the opposite direction, where the closure of the loosing trade is ??
It would follow the same rules that any other trade. It can:
Change direction if the indicator gets the opposite divergence signal (Bear->Bull or Bull->Bear): Its the most common
Change direction if it reachs the FlipStop (1,9% in this setup). Thats it´s difficult to happen twice in the same day
Reach the ProfitStop (3% in this setup). Also rarely happening
Close at 19:00
2. The majority of trades at what % are closed ? (apart time expiry and 3% plus)
With my max bars allowed backtesting (100.000) the statistics are: Average Win: 192$ and Average Loss: -225$. But the results by trade are very varied because the system can change direction several times in the same day and it goes from 0 to -1.882/+3.173
I hope this help you understand the system better
Hi, I’ve made the backtest with 200 000 bars and unfortunatly it is not so good… I try to inser the picture but it doesn’t work. Anyway it looses 28 000 $ between august 2014 and august 2015.
Thanks Aloysius, too bad the results are not good. I will appreciate very much if you can post them in the forum, to see how it behave. Anyway I still like the idea of the system, I will try to improve it.
Aloysius,
Would you so kind to post your results here?:
https://www.prorealcode.com/topic/the-grinder-eurusd-5-min-intraday-trading-strategy/
Thanks
Sorry my wrong, missed the “flip position” line 🙂
TempusFugit it be good to raise a Forum Thread so attachments can be added?
No problem for me… should myself do it? I have no attachment to add
Yes, somehow it seems logical for you to raise a Forum Thread and with the same title as this Thread? Then feedback you seek can benefit from images being able to be added (images can’t be added to this Library posts) to explain things better.
I think your System is good and has potential to be even better.
GraHal
Done!
https://www.prorealcode.com/topic/the-grinder-eurusd-5-min-intraday-trading-strategy/
Thanks for your patience GraHal, this is a new world for me. And for appreciate my work 🙂
hola tempus , estoy usando tu código, por que sólo de 8 a 19 siendo 24 horas el eurusd?
Hi C,
The hours the System don´t opperate the market use to be more flat so the highs and lows are not very far from each other and the System needs some distance betwenn H/L to react well. I backtested the System with different open/close times and this seen to be the best
LOWEST[120](close[15]) what is meaning close[15] if LOWEST[120](close) will return close value of lowest of 120 candles. what does LOWEST[120](close[15]) code return?
Hi rama,
It means the lowest close of the last 120 candels starting 15 candles back from the present candle.
Be ware this strategy is not profitable, has been loosing money all the last year. Anyway I think it still has useful ideas, maybe for longer timeframes
Best of luck
LOWEST[15(close[0]) also gives the same
Ok, but you are missing the 120 lookback period
Hello, I tried to run the code but i had an syntax error that “This variable is not used in the code:limitentrytime”. Can you help me?