Does nobody else think the premise of this strategy is flawed?
Having huge stoplosses just invalidates the strategy and more relies on luck.
premise of this strategy is flawed?
Nacho is showing several Vectorials with good profit and I have shown several also.
In my experience the Algos need regular re-optimisation … you will notice most of Nacho’s have been optimised since the March 2020 shakeout.
PaulParticipant
Master
Having huge stoplosses just invalidates the strategy and more relies on luck.
yes! absolutely. Try to make it work on a small stoploss (related to timeframe) and trading only long or short.
And then still it’s curvefitted in the general direction of the market, which is often “up” and “long” is easier to program.
Having a strategy long & short, if the entry is bad but the conditions for a reversal take place, it cover ups the reasons for the bad entry and as results the strategy is already also more curvefitted I believe.
How much is the chance that if the same (bad) entry conditions happen, you will be saved again on a reversal entry?!
Nacho is showing several Vectorials with good profit
The version 10.2 has a long SL of 2.5% and a short SL of 0.5%. Optimised to oct20 i believe.
This is fine now since the market has been on a straight uptrend since april. When the markets turn, what do you optimise the stoploss against?
By the time optimised result show the need to increase you short SL you might have lost all your gains.
Grahal, you are absolutely right, I prefer version 10.1, it is the one I have in real with good results. It has happened that recently, I activated 10.2 with aggressive monetary management and it has taken a very good streak since the beginning of December for that reason so much profit, but the DD of 10.2 is higher than 10.1 and the backtests are not better.
Hi Tanou
I have attached the views of the most recent back-test as well as the equity curve. I will attach the modified strategy in my next post…
///ROBOT VECTORIAL DAX (modified 1 minute)
// M1
// SPREAD 1.5
// by BALMORA 74 - FEBRUARY 2019
DEFPARAM CumulateOrders = false
DEFPARAM Preloadbars = 50000
//VARIABLES
CtimeA = time >= 060000 and time <= 180000
CtimeB = time >= 060000 and time <= 180000
ONCE BarLong = 950 //EXIT ZOMBIE TRADE LONG
ONCE BarShort = 650 //EXIT ZOMBIE TRADE SHORT
// TAILLE DES POSITIONS
ONCE PositionSizeLong = 1
ONCE PositionSizeShort = 1
timeframe(1 hour,updateonclose)
myRP = Repulse[5](close)
bulltrend = myRP > 0
beartrend = myRP < 0
//STRATEGIE
//VECTEUR = CALCUL DE L'ANGLE
timeframe(1 minute, default)
ONCE PeriodeA = 10
ONCE nbChandelierA= 15
MMA = Exponentialaverage[PeriodeA](close)
ADJASUROPPO = (MMA-MMA[nbchandelierA]*pipsize) / nbChandelierA
ANGLE = (ATAN(ADJASUROPPO)) //FONCTION ARC TANGENTE
CondBuy1 = ANGLE >= 45
CondSell1 = ANGLE <= - 37
//VECTEUR = CALCUL DE LA PENTE ET SA MOYENNE MOBILE
ONCE PeriodeB = 20
ONCE nbChandelierB= 35
lag = 5
MMB = Exponentialaverage[PeriodeB](close)
pente = (MMB-MMB[nbchandelierB]*pipsize) / nbchandelierB
trigger = Exponentialaverage[PeriodeB+lag](pente)
CondBuy2 = (pente > trigger) AND (pente < 0)
CondSell2 = (pente CROSSES UNDER trigger) AND (pente > -1)
//ENTREES EN POSITION
CONDBUY = CondBuy1 and CondBuy2 and CTimeA and bulltrend
CONDSELL = CondSell1 and CondSell2 and CtimeB and beartrend
//POSITION LONGUE
IF CONDBUY THEN
buy PositionSizeLong contract at market
SET TARGET %PROFIT 1.5
SET STOP LOSS AverageTrueRange[14](close[0])*25
ENDIF
//POSITION COURTE
IF CONDSELL THEN
Sellshort PositionSizeShort contract at market
SET TARGET %PROFIT 1.5
SET STOP LOSS AverageTrueRange[14](close[0])*25
ENDIF
//VARIABLES STOP SUIVEUR
ONCE trailingStopType = 1 // Trailing Stop - 0 OFF, 1 ON
ONCE trailingstoplong = 60// Trailing Stop Atr Relative Distance
ONCE trailingstopshort = 60 // Trailing Stop Atr Relative Distance
ONCE atrtrailingperiod = 14 // Atr parameter Value
ONCE minstop = 0 // Minimum Trailing Stop Distance
// TRAILINGSTOP
//----------------------------------------------
atrtrail = AverageTrueRange[atrtrailingperiod]((close/10)*pipsize)/1000
trailingstartl = round(atrtrail*trailingstoplong)
trailingstartS = round(atrtrail*trailingstopshort)
if trailingStopType = 1 THEN
TGL =trailingstartl
TGS=trailingstarts
if not onmarket then
MAXPRICE = 0
MINPRICE = close
PREZZOUSCITA = 0
ENDIF
if longonmarket then
MAXPRICE = MAX(MAXPRICE,close)
if MAXPRICE-tradeprice(1)>=TGL*pointsize then
if MAXPRICE-tradeprice(1)>=MINSTOP then
PREZZOUSCITA = MAXPRICE-TGL*pointsize
ELSE
PREZZOUSCITA = MAXPRICE - MINSTOP*pointsize
ENDIF
ENDIF
ENDIF
if shortonmarket then
MINPRICE = MIN(MINPRICE,close)
if tradeprice(1)-MINPRICE>=TGS*pointsize then
if tradeprice(1)-MINPRICE>=MINSTOP then
PREZZOUSCITA = MINPRICE+TGS*pointsize
ELSE
PREZZOUSCITA = MINPRICE + MINSTOP*pointsize
ENDIF
ENDIF
ENDIF
if onmarket and PREZZOUSCITA>0 then
EXITSHORT AT PREZZOUSCITA STOP
SELL AT PREZZOUSCITA STOP
ENDIF
ENDIF
By the time optimised result show the need to increase you short SL you might have lost all your gains.
When you can see that the market has switched to downtrend (on Algo timeframe) then pick a long downtrend within the bars available to you and optimise over that long downtrend period?
Or, easier, use Walk Forward to give an indication as to – what period re-optimisation is needed – and re-optimise accordingly.
Or even easier … re-optimsie every weekend or once per month??
re-optimsie every weekend or once per month??
Surely the data set dosent change much over a week or month, you would get the same results?
Im genuinely interested, does this work? Have you had success reoptimising weekly in any algo?
the data set dosent change much over a week
It sure does if on a 5 sec TF as 100 k bars is just about 1 week. 🙂
Have you had success reoptimising weekly in any algo?
Yes, but I seem to be in a state of constanf flux as I am running 100 Algos on Demo Forward Test and hardly get time to live the rest of my life never mind re-optimsing when I’d like to! 🙂
But I often use the exact same Algo and optimise v1 over 10k bras and v2 over 100k bars and then run the 2 versions. You should try it – depending on the strategy, timeframe and market / price action during the OOS test period – often the 10k bars opti version is more nimble and is in and out of trades quicker and more profit results.
I guess we need varions versions to set running depending on the predominant market / price action / trend prevailing for a given timeframe?
If I was better at coding then maybe I could achieve above in the code?
I am very interested to find out if the Algos on The MarketPlace are able to achieve above in their code?
But I often use the exact same Algo and optimise v1 over 10k bras and v2 over 100k bars and then run the 2 versions. You should try it – depending on the strategy, timeframe and market / price action during the OOS test period – often the 10k bars opti version is more nimble and is in and out of trades quicker and more profit results.
Dear GraHal,
For the 3min vectorial strategy, witch variables do you optimise ? And on which frequency (week month …) and bars ?
Can you make a post to explain your optimisation strategy to make an algo usefull over a year and more ?
Thanks
Another one question plz : Is it better to optimise on “Win , transaction, % win rate” ?
PaulParticipant
Master
For optimisation try another approach perhaps.
No trailingstop, a breakeven and if triggered a slightly negative result, no weekend, only long/only short.
a relatively small stoploss. range 0.4-1%
profittarget with increments of the stoploss (0.67-1-1.33-1.67-2), breakeven 0.67% from profittarget.
no trailingstop to avoid small profits which don’t weigh good against the max losses. A trailingstop may also hide the fact that the entry was not that good, as is the same if trading long and short at the same time or other optimised exit criteria.
Lots of benefits like saving on a parameters, ofcourse ts will be missed sometimes. Just another way of testing and one way to have more reliable optimisation parameters for a good entry.
i.e. dow 5 min, 30k. test
Dear Paul,
First, thanks for this code.
I understand what you say about trailingstop (no trailingstop to avoid small profits which don’t weigh good against the max losses).
But when you start with a small capital, this is psychological, a little win is better than a big lose for tomorrow, maybe not for the end of the week or month.