Supertrend , TP , bougie

Viewing 15 posts - 1 through 15 (of 15 total)
  • Author
    Posts
  • #227020 quote
    Idunno
    Participant
    New

    Bonjour à tous,

    Je me permets de solliciter votre aide, j’apprends à coder sur la plateforme PRT.

    J’ai lu plusieurs posts dont celui de Nicolas sur chatgpt & le trading.

    J’ai essayé de créer le code ci-dessous (qui n’a pas vraiment de sens mais qui mixent plusieurs notions), cependant ca ne marche pas du tout

    Pourriez vous m’indiquer ce que je dois changer.

    STratégie :

    Si le prix cloture au-dessus du ST [3,10] alors prendre une position longue

    Si le prix cloture en-dessus du ST [3,10] alors prendre une position short

    Autres criteres sont :

    Stoploss de 100

    Taille de contrat 1

    Targetprofit est determiné par la taille de la bougie au moment de la cloture ; le TP est compris entre 10 et 15

    Si jamais une position était déjà en cours ,  sans atteinte du SL ni du TP , mais que le prix à la cloture croise le ST dans l’autre sens, alors fermer la position actuelle et rouvrir une autre

    J’ai reussi à taper ca, si qqun trouve une erreur je suis reconnaissant

    SET STOP pLOSS 100.0
    // Définir la valeur de stop loss
    stopLossValue = 100
    
    // Variables pour le suivi des positions et du profit
    inLongPosition = 0
    inShortPosition = 0
    currentrange = 0
    
    // Taille de la bougie
    currentrange = Range
    
    
    // Logique principale de la stratégie
    if close crosses under Supertrend[3,10] and not inShortPosition then
    // Vérifier la plage de take profit
    if currentrange  >= 10 and currentrange <= 15 then
    // Fermer la position acheteuse si en position acheteuse
    SELLSHORT   AT MARKET
    // Acheter une position vendeuse
    SELLSHORT AT MARKET
    inShortPosition = 1
    inLongPosition = 0
    endif
    endif
    
    if close crosses over Supertrend[3,10] and not inLongPosition then
    // Vérifier la plage de take profit
    if currentrange >= 10 and currentrange <= 154 then
    // Fermer la position vendeuse si en position vendeuse
    BUY  AT MARKET
    // Acheter une position acheteuse
    BUY AT MARKET
    inLongPosition = 1
    inShortPosition = 0
    endif
    endif
    
    // Vérifier les conditions de stop loss
    if inLongPosition and low <= (positionprice - stopLossValue) then
    // Fermer la position acheteuse si le stop loss est atteint
    SELL AT MARKET
    inLongPosition = 0
    endif
    
    if inShortPosition and high >= (positionprice + stopLossValue) then
    // Fermer la position vendeuse si le stop loss est atteint
    BUY  AT MARKET
    inShortPosition = 0
    endif
    
    // Vérifier les conditions de take profit
    if inLongPosition and high >= (positionprice + currentrange) then
    // Fermer la position acheteuse si le take profit est atteint
    SELL AT MARKET
    inLongPosition = 0
    endif
    
    if inShortPosition and low <= (positionprice - currentrange) then
    // Fermer la position vendeuse si le take profit est atteint
    BUY AT MARKET
    inShortPosition = 0
    endif
    
    #227107 quote
    Idunno
    Participant
    New

    Je crois que mon problème vient de la fonction que j appele pour calculer la taille de la bougie.

    J utilise range, car candlesize ne fonctionne pas

    Ou peut etre est ce ma facon dd manager la position dans le code+

    #227110 quote
    Idunno
    Participant
    New

    J’ai tenté de mofidier mon code :

    En modifiant la facon de calculer la taille de la bougie

    En mdifiant les conditions de sorties des positons

    Pour autant, cela ne marche toujours par
    Exemple, dans l’image en pj, j’ai un signal de 10 points à 09h00 mais rien ne se declenche

    
    SET STOP pLOSS 100.0
    // Définir la valeur de stop loss
    stopLossValue = 100
    
    // Variables pour le suivi des positions et du profit
    inLongPosition = 0
    inShortPosition = 0
    currentrange = 0
    
    // Taille de la bougie
    currentrange = close-Open 
    
    
    // Logique principale de la stratégie
    if close crosses under Supertrend[3,10] and not inShortPosition then
    // Vérifier la plage de take profit
    if currentrange  >= 0.5 and currentrange <= 20 then
    // Fermer la position acheteuse si en position acheteuse
    SELL   AT MARKET
    // Acheter une position vendeuse
    SELLSHORT AT MARKET
    inShortPosition = 1
    inLongPosition = 0
    endif
    endif
    
    if close crosses over Supertrend[3,10] and not inLongPosition then
    // Vérifier la plage de take profit
    if currentrange >= 0.5 and currentrange <= 20 then
    // Fermer la position vendeuse si en position vendeuse
    EXITSHORT AT MARKET 
    // Acheter une position acheteuse
    BUY AT MARKET
    inLongPosition = 1
    inShortPosition = 0
    endif
    endif
    
    // Vérifier les conditions de stop loss
    if inLongPosition and low <= (positionprice - stopLossValue) then
    // Fermer la position acheteuse si le stop loss est atteint
    SELL AT MARKET
    inLongPosition = 0
    endif
    
    if inShortPosition and high >= (positionprice + stopLossValue) then
    // Fermer la position vendeuse si le stop loss est atteint
    BUY  AT MARKET
    inShortPosition = 0
    endif
    
    // Vérifier les conditions de take profit
    if inLongPosition and high >= (positionprice + currentrange) then
    // Fermer la position acheteuse si le take profit est atteint
    SELL AT MARKET
    inLongPosition = 0
    endif
    
    if inShortPosition and low <= (positionprice - currentrange) then
    // Fermer la position vendeuse si le take profit est atteint
    BUY AT MARKET
    inShortPosition = 0
    endif
    
    #227143 quote
    Nicolas
    Keymaster
    Master

    Ce que tu cherches à coder peut être fait plus simplement, je n’ai cependant pas bien saisi ton message sur: “le TP est compris entre 10 et 15”, j’ai donc simplement utilisé un takeprofit de 15 points:

    // Paramètres du Supertrend
    Periode = 10 // Période du Supertrend
    Multiplicateur = 3 // Multiplicateur du Supertrend
    
    // Calcul du Supertrend
    Supertrend = Supertrend[Periode, Multiplicateur]
    
    // Conditions d'entrée
    Achat = close crosses over Supertrend
    Vente = close crosses under Supertrend
    
    // Exécution des ordres
    if Achat then
        buy 1 contract at market
        set stop ploss 100
        set target pprofit 15
    endif
    
    if Vente then
        sellshort 1 contract at market
        set stop ploss 100
        set target pprofit 15
    endif
    

    Cette stratégie achète (position longue) lorsque le prix croise au-dessus du Supertrend et vend à découvert (position courte) lorsque le prix croise en dessous du Supertrend. Pour chaque position, un stop loss est fixé à 100 points et un take profit à 15 points.

    #227166 quote
    Idunno
    Participant
    New

    Bonjour

    Merci pour ta réponse

    En fait, le targetprofit est determiné par la taille de la bougie qui clos en dessous ou au dessus du supetrend ; et donc si la taille de la bougie est compris entre 10 & 15 alors je rentre en position.

    Egalement, les conditions de sorties sont

    Atteinte du stoploss de 100 pts

    Supertrend renversé (je suis par exemple en position acheteuse, le TP et le SL de 100 points ne sont pas touchés mais le Supertrend passe en dessous du prix à la cloture de la bougie , je dois donc fermer la position existante et ouvrir une nouvelle position acheteuse)

    J’ai essayé de reproduire cela dans mon code , mais cela ne fonctionne pas

    Par exemple, imaginons sur une paire de devise EURJPY

    Bougie qui commence à 09 h 30 , clos à 10h00: La bougie clos en dessous du SUpertrend, aucune position ouverte , la bougie a une taille de 13 –> J’entre en position vendeuse avec un TP de 13 points et un SL 100 pts

    Entre 09h30 & 12h30 les prix évoluent faiblement sans toucher le TP ni le SL

    Bougie de 12h30 – 13h00 , la bougie clos au dessus du ST avec une taille de 14 , dans ce cas ,  je ferme la position vendeuse actuelle, j’ouvre une position acheteuse avec un TP de 14

     

    MErci par avance pour l’aide

    #227243 quote
    Nicolas
    Keymaster
    Master

    Pour adapter le code selon ta demande, il faut intégrer les conditions de taille de bougie et la gestion du stoploss et de l’ouverture d’une nouvelle position quand le Supertrend se renverse. Voici le code adapté :

    // Paramètres du Supertrend
    Periode = 10
    Multiplicateur = 3
    
    // Calcul du Supertrend
    St = Supertrend[Periode, Multiplicateur]
    
    // Calcul de la taille de la bougie
    TailleBougie = abs(high-low)
    
    // Conditions d'entrée
    Achat = close crosses over st and TailleBougie >= 10*pointsize and TailleBougie <= 15*pointsize
    Vente = close crosses under st and TailleBougie >= 10*pointsize and TailleBougie <= 15*pointsize
    
    // Exécution des ordres et gestion du stoploss et du renversement du Supertrend
    if Achat then
        buy 1 contract at market
        set stop ploss 100
        set target pprofit TailleBougie
    endif
    
    if Vente then
        sellshort 1 contract at market
        set stop ploss 100
        set target pprofit TailleBougie
    endif
    
    // Gestion de la fermeture de la position en cas de renversement du Supertrend
    if longonmarket and close crosses under st then
        sell at market
        if Vente then
            sellshort 1 contract at market
            set stop ploss 100
            set target pprofit TailleBougie
        endif
    endif
    
    if shortonmarket and close crosses over st then
        exitshort at market
        if Achat then
            buy 1 contract at market
            set stop ploss 100
            set target pprofit TailleBougie
        endif
    endif
    

    Ce code prend en compte la taille de la bougie pour définir le target profit, et aussi gère la fermeture et l’ouverture d’une nouvelle position quand le Supertrend se renverse, sans atteindre le stoploss ou le target profit initial.

    #227246 quote
    Idunno
    Participant
    New

    Bonjour

    Meci beaucoup pour ton aide

    Pas mal d’erreur dans mon code, j’y ai pourtant passé du temps mais je débute

    Encore merci

    #227255 quote
    Idunno
    Participant
    New

    Je reviens vers vous :

    J’ai testé le code, et en backtest et en réel il ne se lance pas.

    Je m’explique, je prends le NZDUSD 30 minutes aujourd’hui, la bougie de 15h30 cloture au dessus du ST avec une taille de bougie de 12.3

    Ouverture 0.60977

    Fermeture 0.61089

    Normalement, cela devrait ouvrir une position acheteuse mais rien ne s’est passé

    J’ai vérifié , le systeme etait bien lancé.

    Est ce qu’ily a une subtilité qui m’échappe?

    Merci par avance

    #227256 quote
    Idunno
    Participant
    New

    Je suis sur IG PRT

    #227266 quote
    Idunno
    Participant
    New

    Nicolas , j’essaye de trouver

    Ne serait ce pas dans le code à cet endroit qu’il y a une inversion Periode, Multiplicateur
    J’essaye de comprendre par moi-m$eme, mais je suis d”butant
    Merci par avance

    
    // Paramètres du Supertrend
    Periode = 10
    Multiplicateur = 3
    
    // Calcul du Supertrend
    St = Supertrend[Periode, Multiplicateur]
    #227307 quote
    Idunno
    Participant
    New

    J’ai reussi à trouver

    Dernier élément : le TP se calcule sur la 5eme decimale.

    Je suppose que je dois modifier cette ligne

    // Calcul de la taille de la bougie
    TailleBougie = abs(high-low)

    et la remplacer par

    // Calcul de la taille de la bougie
    TailleBougie = abs(high-low)*10
    #227404 quote
    Idunno
    Participant
    New

    Pour précision, j’utilise des lots “mini” dans IG PRT

    #227464 quote
    Idunno
    Participant
    New

    C’est bon, j’ai trouvé comment faire!;)

    #227486 quote
    Idunno
    Participant
    New

    Finalement, ma méthode de contournement ne marche pas.

    J’ai essayé de

    Modifier le take profit en faisant taillebougie*10

    Modifier le calcul de taille de la bougie

    Utiliser pipsize en lieu de pointsize

    Cela ne fonctionne pas, en fait, lorsque je trouve 10 pips par exemple  entre

    1.07562 & 1.07463

    Mais le code  dans le cadre d’une position short va me generer un objectif à 1.07462 alors que je m’attends à 1.07362

    Merci par avance pour votre aide

    #228396 quote
    Idunno
    Participant
    New

    Bonjour à tous

    Je me permet desolliciter votre aide de nouveau

    J’essaye toujours d’apprendre avec le code ;ici, je remarque que le code sur ce bloc

    1. La position va bien se fermer
    2. La nouvelle position ne s(ouvre pas et je ne comprends aps pourquoi ; j’ai joué sur les parametres pour mettre plusieurs contrtats ouverts en même temps mais rien n’y faitSi qqun aurait une solution je suis preneurMErci par avance
      // Gestion de la fermeture de la position en cas de renversement du Supertrend
      if longonmarket and close crosses under st then
          sell at market
          if Vente then
              sellshort 1 contract at market
              set stop ploss 100
              set target pprofit TailleBougie
          endif
      endif
       
      if shortonmarket and close crosses over st then
          exitshort at market
          if Achat then
              buy 1 contract at market
              set stop ploss 100
              set target pprofit TailleBougie
          endif
      endif

       

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

Supertrend , TP , bougie


ProOrder : Trading Automatique & Backtests

New Reply
Author
author-avatar
Idunno @idunno Participant
Summary

This topic contains 14 replies,
has 2 voices, and was last updated by Idunno
2 years ago.

Topic Details
Forum: ProOrder : Trading Automatique & Backtests
Language: French
Started: 01/29/2024
Status: Active
Attachments: No files
Logo Logo
Loading...