as simple as it gets
I stole the indicator from here.
https://www.prorealcode.com/prorealtime-indicators/tma-center-channel-bands/
Then I rewrote the indicator into a strategy.
The action instruction is Long after the price crosses over (!) the lower band with the target the middle line of the channel.
thats all
until then
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 |
//------------------------------------------------------------------------- // maincode : TMA Channel 4H co lowerband // coded by johnscher // works on dax 1 euro // timeframe 4H // timezone europetime, berlin //------------------------------------------------------------------------- defparam cumulateorders = false // parameters HalfLength = 141 AtrLength = 141 AtrMultiplier = 2.4 avg = average [1](close) sum = (HalfLength+1)*avg sumw = (HalfLength+1) k = HalfLength for j = 1 to HalfLength do k = k-1 sum = sum+(k*avg[j]) sumw = sumw+k next myrange = AverageTrueRange[AtrLength](close)*AtrMultiplier middleband = sum/sumw //higherband = buffer1+myrange lowerband = middleband-myrange TradingDay = opendayofweek = 1 or dayofweek = 2 or dayofweek = 3 or dayofweek = 4 or dayofweek = 5 TradingTime = time = 090000 or time = 130000 or time = 170000 IF TradingDay and TradingTime then if average [1] (close) crosses over lowerband then buy at market endif Endif if average [1] (close) crosses over middleband then sell at market endif set stop %loss 3 set target %profit 3 // as insurance |
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
Hi JohnScher,
Nice work
Is system works well in production ?
With these parameters, the resultat is even better
HalfLength = 151
AtrLength = 151
AtrMultiplier = 2.5
Does anyone have the data at 200,000 units, why would I like to see over 5 years?
With same parameters, it works as well on DJI / H1
Thanks JohnScher for sharing and ALZ for optimization. I’ll try it !
Slightly better in 100K (DAX H4) with this :
TradingTime = time = 090000 or time = 130000 or time = 160000
set target %profit 2
thanks juju
of course time isn’t optimized for DJI
See below new version with optimized parameters
with profit 1.5 and time = 090000 or time = 120000 on DJI H1
we have 50.42 for the profit factor with only 2 losses
Not sure to have the good parameters : on DJI H1 (100 K, which brings back to 30 july 2015) ? could you repost the all code ? thanks !
Quite good results with ‘Soy Flour’ (SM) too : +63.99 % in H4 100 K (dont’ really know the spread) :
//————————————————————————-
// maincode : TMA Channel 4H co lowerband
// coded by johnscher
// works on dax 1 euro
// timeframe 4H
// timezone europetime, berlin
//————————————————————————-
defparam cumulateorders = false
// parameters
HalfLength = 151
AtrLength = 151
AtrMultiplier = 2.5
avg = average [1](close)
sum = (HalfLength+1)*avg
sumw = (HalfLength+1)
k = HalfLength
for j = 1 to HalfLength do
k = k-1
sum = sum+(k*avg[j])
sumw = sumw+k
next
myrange = AverageTrueRange[AtrLength](close)*AtrMultiplier
middleband = sum/sumw
//higherband = buffer1+myrange
lowerband = middleband-myrange
TradingDay = opendayofweek = 1 or dayofweek = 2 or dayofweek = 3 or dayofweek = 4 or dayofweek = 5
TradingTime = time = 090000 or time = 170000 or time = 230000
IF TradingDay and TradingTime then
if average [1] (close) crosses over lowerband then
buy at market
endif
Endif
if average [1] (close) crosses over middleband then
sell at market
endif
set stop %loss 3
set target %profit 4 // as insurance
Thank you very much. I am glad that the code is so well accepted here.
As for improvements through optimization, I would like to say that I have not optimized through. I was more interested in trading the track from crossover the lowerline to the finish midline.
Furthermore I would like to add that the system has been running in demo since 28.12.2018 with tema 12 close as avg and sl tp 2.4%.
Number of trades = 12
Won = 10
loss = 2
gains = 554 Euro
From 01.01.20 it goes live at ig.com/australia with the germany 30 cash (1£)
have good times
until then
Nice JohnSchern, thx for your contribution
i’m going too with my parameters
could you post for Dji please?
I’m sorry, I specialized in the Dax. I’m sure the basic idea of the strategy also works in the Dow Jones. Maybe, you can try the optimization for Dow Jones.
Hi
Regarding the DAX, it’s good too with 200k bars (with parameters of the basic idea)
For DJI with 200k, i try to have good result but it seems to be impossible to apply this strategy on DJI… maybe other markets…
Hi John,
this strategy is Great for DJI -justneededa bitof tweaking for the 1 hr chart. Thanks a million.
though its coded to eit early at lowerchannel level , i have edited them to exit at higher levels with lovely results.
John, if you dont mind can you explain which parameters i need to inverse to go short? ( planning for the near future:))
Hi Crystal Babe – would you be happy sharing your revised code as I too am testing this on the DJI? Many thanks
Hi,
What is the meaning of the time filer ?
Why 9:00 13:00 and 17:00 ?
The 4H candles begin at 09.00 13.00 17.00
Bonjour, pourrait on mettre cette stratégie en Daily?
Bonjour,
Sur Dax , en 1h avec ces réglages depuis 2011 :
– HalfLength = 170
AtrLength = 40
AtrMultiplier = 2.8
Bonjour,
Sur Dax , en 4h avec ces réglages backtestés depuis 2011 (200000unités) :
HalfLength = 170
AtrLength = 40
AtrMultiplier = 2.8
sum = (HalfLength+1)*avg
sumw = (HalfLength+16)
set stop %loss 3
set target %profit 3.6
j’obtiens 83,78% de positions gagnantes, un profit factor de 2,73, et 84% de gain pour un capital de 10000€. si quelqu’un à mieux? Bien à vous.
Bonjour, merci pour le code… Comment peut-on changer/augmenter le nombre de lots achetés sur le Dax30 ?
il suffit de changer le nombre de contrats à acheter
Bonjour
Merci pour le code, je souhaite intégrer un break even et mette en place un réinvestissement mais impossible avec ce code, quelqu’un aurait une solution?
hello, this strategy is pretty interesting, anyway on index after diferent suggestion and improvement is there a resumed final strategy?
Hello everyone
I optimized the original “LongOnly-DAX-4H-TMA-Channel” algorithm over a period of 4 years, from January 2020 to December 2023
The progression of earnings is regular.
If you want to do the test, you must take the following parameters:
HalfLength = 295
AtrLength = 630
AtrMultiply = 5.8
set stop %loss 3.3
set target %profit 5
Note:
I called my algorithm WMA and not TMA because the average is a weighted average and not a Triangular average.
The backtest from August 2010 is correct (backtest 1 Mu)
Optimization over 13.5 years gives a very good result