Backester stratégie : A définir svp

Forums ProRealTime forum Français Support ProOrder Backester stratégie : A définir svp

Viewing 3 posts - 1 through 3 (of 3 total)
  • #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 / 4

    Code 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.

    #217474

    Bonjour, 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
    //************************************************************************

     

    #217477

    Bonjour 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

Viewing 3 posts - 1 through 3 (of 3 total)

Create your free account now and post your request to benefit from the help of the community
Register or Login