Backester stratégie : A définir svp
Forums › ProRealTime forum Français › Support ProOrder › Backester stratégie : A définir svp
- This topic has 2 replies, 2 voices, and was last updated 1 year ago by aj.44.
-
-
07/09/2023 at 4:36 PM #217467
Bonjour,
Je souhaite faire appel à vos service svp car je ne sais pas du tout coder. J’ai essayé mais quelques messages d’erreur me bloquent.
Je souhaite tester la stratégie suivante.
Indicateur
1. Courbe Coppock
2. Divergence Zigzag (cumulative volumes zigzag divergences créé par Nicolas)
https://www.prorealcode.com/prorealtime-indicators/cumulative-volumes-zigzag-divergences/Achat :
Condition 1 : La courbe de Coppock croise à la hausse la valeur 0
Condition 2 : L’indicateur Divergence zigzag est supérieur à la valeur 0 (barre verte) au moment où la condition 1 est remplie.L’achat est réalisé à l’ouverture de la prochaine période.
Si la condition 2 n’est pas respectée (L’indicateur Divergence zigzag est inférieur à la valeur 0 (barre rouge)), l’achat n’est pas déclenché.
Vente
Condition 1 : Lorsque l’indicateur Divergence zigzag croise à la baisse à la valeur 0 (barre rouge), la vente est déclenchée à l’ouverture de la prochaine période.
Sur l’exemple suivant :
Achat déclenché sur la période 2 / 3 / 5 / 6
Achat non déclencé sur la période 1 / 4Code de la courbe de coppock :
C1 = ROC[14](close)
C2 = ROC[11](close)
C3 = C1 + C2
C4 = ExponentialAverage[6](C3)RETURN C4 as “AJ Coppock”
Code de l’indicateur Divergence Zigzag créé par Nicolas
https://www.prorealcode.com/prorealtime-indicators/cumulative-volumes-zigzag-divergences/Je remercie toute personne qui peut m’aider.
07/09/2023 at 6:43 PM #217474Bonjour, j avais du temps j ai travailler avec l’ I.A . Cela donne beaucoup de variables, bon courage… Bon, je post quand même si un autre peut aider. Au mieux c ‘est une base, au pire : poubelle.
// Paramètres
DEFPARAM CumulateOrders = False
DEFPARAM PRELOADBARS = 10000// Heikin-Ashi definition
once xOpen = open
xClose = (open + close + high + low) / 4
if barindex > 0 then
xOpen = (xOpen + xClose[1]) / 2
endif
xLow = min(low,min(xClose,xOpen))
xHigh = max(high,max(xClose,xOpen))
xTypic = (xHigh + xLow + xClose) / 3
xMed = (xHigh + xLow) / 2
xRange = xHigh – xLow// Variables
cumV = 0
lastpeakhigh = high
lastpeakvol = 0
lasttoughlow = low
lasttoughvol = 0
peak = 0 // Initialisez la variable peak à 0
tough = 0 // Initialisez la variable tough à 0
zz = 0 // Initialisez la variable zz à 0
peakhigh = 0 // Initialisez la variable peakhigh à 0
peakvol = 0 // Initialisez la variable peakvol à 0
toughlow = 0 // Initialisez la variable toughlow à 0
toughvol = 0 // Initialisez la variable toughvol à 0// — Courbe Coppock
// Déclaration des paramètres
ROCPeriod1 = 14
ROCPeriod2 = 11
EMAPeriod = 6// Variables pour stocker les valeurs précédentes
prevClose1 = 0.0
prevClose2 = 0.0// Calcul du taux de variation (ROC) à partir du prix de clôture
ROC1 = ((CLOSE – prevClose1) / prevClose1) * 100
ROC2 = ((CLOSE – prevClose2) / prevClose2) * 100// Mise à jour des valeurs précédentes
prevClose1 = CLOSE[ROCPeriod1]
prevClose2 = CLOSE[ROCPeriod2]// Calcul de la somme des taux de variation
SumROC = ROC1 + ROC2// Calcul de la moyenne mobile exponentielle (EMA) de la somme des taux de variation
Coppock = ExponentialAverage[EMAPeriod](SumROC)// — Conditions d’achat
Condition1 = Coppock > 0 AND Coppock[1] <= 0
Condition2 = cumV > 0// — Conditions de vente
Condition3 = zz < 0 AND zz[1] >= 0// Achat à l’ouverture de la prochaine période si les conditions sont remplies
IF Condition1 AND Condition2 THEN
BUY 1 CONTRACT AT MARKET
ENDIF// Vente à découvert à l’ouverture de la prochaine période si la condition de vente est remplie
IF Condition3 THEN
SELLSHORT 1 CONTRACT AT MARKET
ENDIF// — Affichage des divergences
// Bearish Divergence
IF peak AND peakhigh > lastpeakhigh AND peakvol < lastpeakvol THEN
divbear = peakvol
//DRAWSEGMENT(lastpeakbar, lastpeakvol, peakbar, peakvol) COLOURED(r, g, 0)
//DRAWARROWDOWN(peakbar, peakvol) COLOURED(r, g, 0)
ENDIF// Bullish Divergence
IF tough AND toughlow < lasttoughlow AND toughvol < lasttoughvol THEN
divbull = toughvol
//DRAWSEGMENT(lasttoughbar, lasttoughvol, toughbar, toughvol) COLOURED(r, g, 0)
//DRAWARROWUP(toughbar, toughvol) COLOURED(r, g, 0)
ENDIF// Gestion de la sortie de position
//************************************************************************
// Trailing stop function
trailingstart = 20 // trailing will start @trailinstart points profit
trailingstep = 5 // trailing step to move the “stoploss”// Reset the stoploss value
IF NOT ONMARKET THEN
newSL = 0
ENDIF// Gérer les positions longues
IF LONGONMARKET THEN
// Premier mouvement (breakeven)
IF newSL = 0 AND close – tradeprice(1) >= trailingstart * pipsize THEN
newSL = tradeprice(1) + trailingstep * pipsize
ENDIF
// Mouvements suivants
IF newSL > 0 AND close – newSL >= trailingstep * pipsize THEN
newSL = newSL + trailingstep * pipsize
ENDIF
ENDIF// Gérer les positions courtes
IF SHORTONMARKET THEN
// Premier mouvement (breakeven)
IF newSL = 0 AND tradeprice(1) – close >= trailingstart * pipsize THEN
newSL = tradeprice(1) – trailingstep * pipsize
ENDIF
// Mouvements suivants
IF newSL > 0 AND newSL – close >= trailingstep * pipsize THEN
newSL = newSL – trailingstep * pipsize
ENDIF
ENDIF// Stop order pour sortir des positions
IF newSL > 0 THEN
SELL AT newSL STOP
EXITSHORT AT newSL STOP
ENDIF
//************************************************************************07/09/2023 at 7:30 PM #217477Bonjour Bertrand,
Un grand merci pour votre contribution.
Je viens de lance un backtest sur le bitcoin, mais aucun résultat ne s’affiche (peut être une erreur de paramétrage de ma part.
Comme le montre la capture, le test fait manuellement semble prometteur… Sur les ETF, cela semble très bien fonctionner.
En espérant que le résultat aboutisse pour partager cette stratégie ensuite.
Bonne soirée -
AuthorPosts
Find exclusive trading pro-tools on