Bonjour,
J’ai modifié le pgm en paramétrant BARINDEX avec la valeur de PRELOADBARS et le résultat est parfait :
Le compteur des positions ouvertes est à 1200 (la dernière étant clôturée, le total des trades du rapport détaillé est aussi 1200, si la dernière ne l’avait pas été, le rapport détaillé aurait mis 1199 ; c’est ce que j’avais pu observer dans un précédent test).
En H5, les bougies s’ouvrent à 1h, 6h, 11h, 16h, 21h
La stratégie implique une prise de position à l’ouverture de ces bougies, la répartition des trades ouverts à l’ouverture de ces bougies est donc :
1h : 176
6h : 134
11h : 386
16h : 261
21h : 243 soit un total de 1200
Première constatation et ce n’est pas une surprise, 74% des trades sont pris sur les bougies 11h, 16h et 21h
Il ne reste plus qu’à déterminer à quel moment les trades sont clôturés ce qui revient à déterminer le nombre de trades clôturés au stoploss initial, ou au premier mouvement du trailingstop ou aux suivants. J’ai fait des essais en s’inspirant de ce qui est fait pour l’ouverture des trades, mais cela ne fonctionne pas car la fermeture des trades se fait n’importe quand sur la durée d’une bougie H5.
J’ai fait un essai en MTF M15, mais comme le TF de base est H5, M15 n’étant pas un multiple de H5 et le code ne s’exécute pas.
La solution serait peut-être de mettre la stratégie en TF de base M15 (pour pouvoir connaitre sur quelles bougies M15 les ventes se font) avec les conditions de prise de position, stoploss et trailingstop déterminés en H5……à voir………je continue mes essais………bien sûr, d’autres idées sont bienvenues.
//Allemagne 40 1€ H5
defparam cumulateorders = false
defparam preloadbars = 1000
Bars=1000 //preloadbars pour barindex
once compteur=0 //Compteur du nombre total de trades ouverts
//Compteurs des trades ouverts par période
once ComptA01H=0 //01.00-06.00
once ComptA06H=0 //06.00-11.00
once ComptA11H=0 //11.00-16.00
once ComptA16H=0 //16:00-21.00
once CompAt21H=0 //21.00-01.00
n=1 // Nombre de contrat
DonchianSupA = highest[5](high)
graphonprice DonchianSupA as "DonchianSupA"
c1 = close crosses over DonchianSupA[1]
sl=21 // stoploss initial
if not onmarket and c1 then
BUY n CONTRACTS AT market
IF barindex>=1000 then
Compteur=Compteur+1 // le résultat peut être supérieur d'une unité par rapport au rapport détaillé car le trade à été ouvert mais pas encore clôturé
graph Compteur COLOURED(255,0,255) as "Compteur"
endif
if (time>=010000 and time<060000) and barindex>=Bars then
ComptA01H=ComptA01H+1
graph ComptA01H COLOURED(0,128,0) as "ComptA01H"
endif
if (time>=060000 and time<110000) and barindex>=Bars then
ComptA06H=ComptA06H+1
graph ComptA06H COLOURED(0,128,0) as "ComptA06H"
endif
if (time>=110000 and time<160000) and barindex>=Bars then
ComptA11H=ComptA11H+1
graph ComptA11H COLOURED(0,128,0) as "ComptA11H"
endif
if (time>=160000 and time<210000) and barindex>=Bars then
ComptA16H=ComptA16H+1
graph ComptA16H COLOURED(0,128,0) as "ComptA16H"
endif
if (time>=210000) and barindex>=Bars then
CompAt21H=CompAt21H+1
graph CompAt21H COLOURED(0,128,0) as "CompAt21H"
endif
SET STOP pLOSS sl
endif
IF NOT ONMARKET THEN
newSL=0 //reset the stoploss value
ENDIF
offset=21
//manage long positions
IF LONGONMARKET THEN
//first move
IF newSL=0 THEN
newSL = DonchianSupA[1]-offset
firstmove=newsl
graphonprice firstmove COLOURED(0,128,0)
ENDIF
//next moves (trailing stop)
IF newSL>0 THEN
newSL = max(newsl, DonchianSupA[1]-offset) // trailingstop ne peux pas reculer
trailingstop=newsl
graphonprice trailingstop COLOURED(255,0,0)
ENDIF
ENDIF
//stop order to exit the positions
IF newSL>0 THEN
SELL AT newSL STOP
ENDIF