Stratégie Dax en fonction niveau close de la veille

Viewing 3 posts - 1 through 3 (of 3 total)
  • Author
    Posts
  • #260948 quote
    Lifen
    Participant
    Senior

    Bonjour,


    Merci de votre aide par avance pour coder l’algo avec les paramètres suivants. J’ai tenté mais j’ai des bugs !


    Marché dax.

    On définit le niveau de sell : (racine carrée de la close de 17h35 du jour précédent – 0,05) le tout élevé au carré

    On définit le niveau de buy : : (racine carrée de la close de 17h35 du jour précédent + 0,05) le tout élevé au carré

    Tp1 sell = 40 points

    Tp2 sell = 80 points

    Tp3 sell = 120 points


    Tp1 buy = 40 points

    Tp2 buy = 80 points

    Tp3 buy = 120 points


    Sl = 40 points


    Avec une condition en 5 mn :

    Vente : le macd 12,26,9 doit être <0 en cas de vente et il doit être décroissant sur 3 bougies précédentes

    Achat : le macd 12,26,9 doit être >0 en cas d’achat et il doit être croissant sur 3 bougies précédentes


    Peut-on mettre un trailing stop dès que l’ordre est positif de 10 points ?


    Peux-on faire des sorties partielles ? 50% de l’ordre au Tp1 et 25% au tp2 et 25% au tp3 ?


    Cet algo doit se réajuster tous les jours en fonction de la close de la veille


    #260949 quote
    Nicolas
    Keymaster
    Master

    Voici un premier jet, pas mal pour un Dimanche, à tester et valider point par point:

    Quelques points importants à comprendre avant de l’utiliser :

    • Le système utilise 4 contrats pour permettre les sorties partielles exactes (2 au TP1 = 50%, 1 au TP2 = 25%, 1 au TP3 = 25%). Adapte ce nombre si ton broker impose un minimum ou si tu veux trader en multiples de 4.
    • La close de 17h35 est capturée via OpenTime = 173500. Si ton graphique est en UTC et non en heure locale, tu devras ajuster cette heure (16h35 UTC en été, 15h35 en hiver selon le broker).
    // ============================================================
    // STRATEGIE DAX - NIVEAUX CARRE DE CLOSE 17H35 J-1
    // Timeframe chart : 5 minutes
    // Taille de position : 4 contrats (50% + 25% + 25%)
    // ============================================================
    
    
    DEFPARAM CumulateOrders = False
    
    
    // ------------------------------------------------------------
    // PARAMETRES
    // ------------------------------------------------------------
    SLpts     = 40    // Stop Loss en points
    TP1pts    = 40    // Prise de profit 1 (50% de la position)
    TP2pts    = 80    // Prise de profit 2 (25%)
    TP3pts    = 120   // Prise de profit 3 (25% restant)
    TStrigger = 10    // Trailing stop actif apres +10 pts de profit
    
    
    // ------------------------------------------------------------
    // CAPTURE DE LA CLOSE 17H35 DE LA VEILLE
    // Memorise la close de la bougie 17h35 une seule fois par jour
    // ------------------------------------------------------------
    IF OpenTime = 173500 AND OpenDay <> refDay THEN
        refClose = close
        refDay   = OpenDay
    ENDIF
    
    
    // Calcul des niveaux : sell = (sqrt(refClose) - 0.05)^2
    //                       buy  = (sqrt(refClose) + 0.05)^2
    IF refClose > 0 THEN
        sqrtRef   = sqrt(refClose)
        sellLevel = (sqrtRef - 0.05) * (sqrtRef - 0.05)
        buyLevel  = (sqrtRef + 0.05) * (sqrtRef + 0.05)
    ENDIF
    
    
    // ------------------------------------------------------------
    // MACD 12,26,9 SUR LE TIMEFRAME DU CHART (5 mn)
    // ------------------------------------------------------------
    myMacd = MACD[12,26,9](close)
    
    
    // MACD < 0 et decroissant sur 3 bougies consecutives
    macdBearish = (myMacd < 0) AND (myMacd < myMacd[1]) AND (myMacd[1] < myMacd[2]) AND (myMacd[2] < myMacd[3])
    
    
    // MACD > 0 et croissant sur 3 bougies consecutives
    macdBullish = (myMacd > 0) AND (myMacd > myMacd[1]) AND (myMacd[1] > myMacd[2]) AND (myMacd[2] > myMacd[3])
    
    
    // ------------------------------------------------------------
    // RESET DES FLAGS A LA FERMETURE DE CHAQUE POSITION
    // ------------------------------------------------------------
    IF NOT OnMarket THEN
        tp1Done     = 0
        tp2Done     = 0
        trailActive = 0
        trailSL     = 0
    ENDIF
    
    
    // ------------------------------------------------------------
    // PROFIT COURANT EN POINTS (mis a jour a chaque barre)
    // ------------------------------------------------------------
    IF LongOnMarket THEN
        currentProfit = close - PositionPrice
    ELSIF ShortOnMarket THEN
        currentProfit = PositionPrice - close
    ENDIF
    
    
    // Activation du trailing stop des que le trade est positif de 10 pts
    IF OnMarket AND currentProfit >= TStrigger * PointSize THEN
        trailActive = 1
    ENDIF
    
    
    // ------------------------------------------------------------
    // GESTION DE LA POSITION LONGUE
    // ------------------------------------------------------------
    IF LongOnMarket THEN
    
    
        // Trailing stop : le SL remonte avec le cours, jamais en arriere
        IF trailActive = 1 THEN
            IF trailSL = 0 THEN
                trailSL = PositionPrice + TStrigger * PointSize
            ENDIF
            trailSL = MAX(trailSL, close - TStrigger * PointSize)
            SET STOP PRICE trailSL
        ELSE
            // Stop loss fixe initial de 40 pts
            SET STOP PRICE (PositionPrice - SLpts * PointSize)
        ENDIF
    
    
        // TP1 : 50% = 2 contrats fermes a +40 pts
        IF tp1Done = 0 AND close >= PositionPrice + TP1pts * PointSize THEN
            SELL 2 CONTRACTS AT MARKET
            tp1Done = 1
        ENDIF
    
    
        // TP2 : 25% = 1 contrat ferme a +80 pts
        IF tp1Done = 1 AND tp2Done = 0 AND close >= PositionPrice + TP2pts * PointSize THEN
            SELL 1 CONTRACTS AT MARKET
            tp2Done = 1
        ENDIF
    
    
        // TP3 : 25% restant = 1 contrat ferme a +120 pts
        IF tp2Done = 1 AND close >= PositionPrice + TP3pts * PointSize THEN
            SELL 1 CONTRACTS AT MARKET
        ENDIF
    
    
    ENDIF
    
    
    // ------------------------------------------------------------
    // GESTION DE LA POSITION COURTE
    // ------------------------------------------------------------
    IF ShortOnMarket THEN
    
    
        // Trailing stop : le SL descend avec le cours, jamais en arriere
        IF trailActive = 1 THEN
            IF trailSL = 0 THEN
                trailSL = PositionPrice - TStrigger * PointSize
            ENDIF
            trailSL = MIN(trailSL, close + TStrigger * PointSize)
            SET STOP PRICE trailSL
        ELSE
            // Stop loss fixe initial de 40 pts
            SET STOP PRICE (PositionPrice + SLpts * PointSize)
        ENDIF
    
    
        // TP1 : 50% = 2 contrats fermes a -40 pts
        IF tp1Done = 0 AND close <= PositionPrice - TP1pts * PointSize THEN
            EXITSHORT 2 CONTRACTS AT MARKET
            tp1Done = 1
        ENDIF
    
    
        // TP2 : 25% = 1 contrat ferme a -80 pts
        IF tp1Done = 1 AND tp2Done = 0 AND close <= PositionPrice - TP2pts * PointSize THEN
            EXITSHORT 1 CONTRACTS AT MARKET
            tp2Done = 1
        ENDIF
    
    
        // TP3 : 25% restant = 1 contrat ferme a -120 pts
        IF tp2Done = 1 AND close <= PositionPrice - TP3pts * PointSize THEN
            EXITSHORT 1 CONTRACTS AT MARKET
        ENDIF
    
    
    ENDIF
    
    
    // ------------------------------------------------------------
    // ENTREES : declenchement au croisement des niveaux calcules
    // ------------------------------------------------------------
    IF sellLevel > 0 AND buyLevel > 0 AND NOT OnMarket THEN
    
    
        // SHORT : le close passe sous le niveau sell + MACD bearish
        IF close[1] >= sellLevel AND close < sellLevel AND macdBearish THEN
            SELLSHORT 4 CONTRACTS AT MARKET
            trailSL     = 0
            tp1Done     = 0
            tp2Done     = 0
            trailActive = 0
        ENDIF
    
    
        // LONG : le close passe au-dessus du niveau buy + MACD bullish
        IF close[1] <= buyLevel AND close > buyLevel AND macdBullish THEN
            BUY 4 CONTRACTS AT MARKET
            trailSL     = 0
            tp1Done     = 0
            tp2Done     = 0
            trailActive = 0
        ENDIF
    
    
    ENDIF
    

    Quelques remarques pratiques importantes :

    • Le premier jour de lancement, refClose sera à 0 et aucun trade ne se déclenchera. C’est voulu : il faut qu’une bougie 17h35 soit passée pour initialiser les niveaux.
    • Le trailing stop à 10 points est très serré sur le DAX. Si le trade atteint +10 pts et que le cours revient de 10 pts, il sort immédiatement. Tu peux ajuster TStrigger librement.
    • Les TP partiels sont exécutés au market sur la close de la bougie en backtest. En live ils s’exécuteront sur la prochaine ouverture disponible.
    • Après le TP1 il reste 2 contrats. Le SL et trailing continuent de protéger le reste de la position normalement puisque SET STOP PRICE s’applique à l’ensemble de la position ouverte.
    #260950 quote
    Lifen
    Participant
    Senior

    Quelle réactivité ! Un super grand merci Nicolas !! Je vais tester et reviendrai sans doute vers toi avec des questions ou des ajustements !! Bonne fin de dimanche

Viewing 3 posts - 1 through 3 (of 3 total)
  • You must be logged in to reply to this topic.

Stratégie Dax en fonction niveau close de la veille


ProOrder : Trading Automatique & Backtests

New Reply
Author
author-avatar
Lifen @lifen Participant
Summary

This topic contains 2 replies,
has 2 voices, and was last updated by Lifen
19 hours, 26 minutes ago.

Topic Details
Forum: ProOrder : Trading Automatique & Backtests
Language: French
Started: 05/10/2026
Status: Active
Attachments: No files
Logo Logo
Loading...