Target profit rémanent ?

Viewing 10 posts - 1 through 10 (of 10 total)
  • Author
    Posts
  • #144364 quote
    Yvan63
    Participant
    Senior

    Bonjour,

    Je reviens vers vous pour un problème de TARGET PROFIT à présent !
    Dans le code ci-dessous, si j’active la routine de short (ShortON = 1), le target profit réservé au position short se retrouve actif pour les longs…
    Du coup le trailing stop n’est pas actif et les longs sont coupé au target profit qui ne devrait être actif pour les shorts ?
    Si on passe les short à 0 le trailing stop pour les longs fonctionne …

    // UT = 4 minutes
    
    DEFPARAM CumulateOrders = False // Cumul des positions désactivé
    //Annule tous les ordres en attente et ferme toutes les positions à 0:00, puis empêche toute création d'ordre avant l'heure "FLATBEFORE".
    DEFPARAM FLATBEFORE = 070000
    ////////// Annule tous les ordres en attente et ferme toutes les positions à l'heure "FLATAFTER"
    DEFPARAM FLATAFTER = 213000
    
    DEFPARAM Preloadbars = 3000
    
    ShortON = 1 // Short activé ?
    ONCE TSL = 1  // Use TSL?
    
    // Evite l'ouverture de WS
    Temps1 = time >= 150000 and time < 160000
    
    MME100 = Average[100,1](close)
    
    
    //// LONG ////
    
    c1 = high > MME100 and close > open
     
    c2 = close - open > 14// bougie de x point minimum
     
    c3 = high[1] < MME100 and open[1] < close[1]
     
    c4 = 1
     
    c5 = 1
    
    C13 = c1 and c2 and c3 and c4 and c5 and not Temps1 and NOT LongOnMarket
     
    IF C13  THEN
    BUY 1 CONTRACT AT MARKET
    SET STOP LOSS (close-low) // SL sous le plus bas de la bougie précédente
    
    ENDIF
    
    IF ShortON then
    ///// SHORT ////
    c6 = low < MME100 and close < open
     
    c7 = open - close > 14// bougie de x point minimum
     
    c8 = low[1] > MME100 and open[1] > close[1]
     
    c9 = 1
     
    c10 = 1
    
    C14 = c6 and c7 and c8 and c9 and c10 and not Temps1 and NOT ShortOnMarket
    
     
    IF C14  THEN
    Sellshort 1 CONTRACT AT MARKET
    SET STOP LOSS (close+high) // SL sur le plus haut de la bougie précédente
    SET Target Pprofit 10 // Pas de stop suiveur car mouvement de baisse trop rapide
    
    ENDIF
    
    EndIf
    
    
    // *****************************
    IF TSL = 1 THEN
    
    //trailing stop function
    trailingstart = 8 //trailing will start @trailinstart points profit
    trailingstep = 4 // trailing step to move the "stoploss"
    
    //reset the stoploss value
    IF NOT ONMARKET THEN
    newSL=0
    ENDIF
    
    //manage long positions
    IF LONGONMARKET THEN
    //first move (breakeven)
    IF newSL=0 AND close-tradeprice(1)>=trailingstart THEN
    newSL = tradeprice(1)+trailingstep
    ENDIF
    //next moves
    IF newSL>0 AND close-newSL>=trailingstep THEN
    newSL = newSL+trailingstep
    ENDIF
    Sell at newSL stop // Place un ordre de vente stop en guise de seuil de stopsuiveur
    //graph newSL coloured (0,255,255) as "newSL"
    ENDIF
    
    //manage short positions
    //IF SHORTONMARKET THEN
    ////first move (breakeven)
    //IF newSL=0 AND tradeprice(1)-close>=trailingstart THEN
    //newSL = tradeprice(1)-trailingstep
    //ENDIF
    ////next moves
    //IF newSL>0 AND newSL-close>=trailingstep THEN
    //newSL = newSL-trailingstep
    //ENDIF
    //Exitshort at newSL stop // Place un ordre d'achat stop en guise de seuil de stopsuiveur
    //graph newSL coloured (255,255,255) as "newSL SHORT"
    //
    //ENDIF
    
    ENDIF
    
    #144383 quote
    Nicolas
    Keymaster
    Master

    Je reproduis aussi cet effet, je cherche à comprendre et je reviens dés que possible 🙂

    #144384 quote
    robertogozzi
    Moderator
    Master

    Le code affiché:

    • il n'a jamais le stop suiveur pour les shorts, quelle que soit la valeur des variables
    • a toujours le TP pour les shorts
    • il n'a pas le TP pour les Longs au départ, mais seulement APRÈS qu'au moins un Short a été exécuté, car SET TARGET pPROFIT reste dans la mémoire ProOrder.
    Yvan63 thanked this post
    #144392 quote
    Nicolas
    Keymaster
    Master

    Il faut simplement reset le takeprofit, puisqu’en effet celui-ci restera actif à la cette valeur pour tous les ordres consécutifs.

    Ajoute la ligne :

    set target pprofit 0

    à la ligne 37, après ton achat, pour bien lui coller un TP nul.

    Yvan63 thanked this post
    #144440 quote
    Yvan63
    Participant
    Senior

    Cela ne fonctionne pas 🙁

    J’utilise la version 10.3 de PRT (pour information)

    Voici la nouvelle verison du code avec une petite optimisation mais qui reste le même sur globalement

    // UT = 4 minutes
    
    DEFPARAM CumulateOrders = False // Cumul des positions désactivé
    //Annule tous les ordres en attente et ferme toutes les positions à 0:00, puis empêche toute création d'ordre avant l'heure "FLATBEFORE".
    DEFPARAM FLATBEFORE = 081500
    ////////// Annule tous les ordres en attente et ferme toutes les positions à l'heure "FLATAFTER"
    DEFPARAM FLATAFTER = 213000
    
    DEFPARAM Preloadbars = 1000
    
    ShortON = 1 // Short activé ?
    ONCE TSL = 1  // Use TSL?
    
    // Evite l'ouverture de WS
    Temps1 = time >= 151500 and time < 160000
    
    MME100 = Average[100,1](close)
    
    
    //// LONG-1 //// Une bougie de part et autre de la EMA100
    
    c1 = high > MME100 and close > open
     
    c2 = close - open > 12// bougie de x point minimum
     
    c3 = high[1] < MME100 and open[1] < close[1] // bougie précédente verte également et inférieure à MME100
     
    c4 = 1
     
    c5 = 1
    
    C13 = c1 and c2 and c3 and c4 and c5 and not Temps1 and NOT LongOnMarket
     
    IF C13  THEN
    BUY 1 CONTRACT AT MARKET
    SET STOP LOSS (close-low) // SL sous le plus bas de la bougie précédente
    ENDIF
    
    //// LONG-2 //// Une bougie rebondit sur la MME100
    
    d1 = close > open // bougie verte
    
    d2 = open > MME100 and close > MME100
    
    d3 = open[1] > MME100 and close[1] > MME100
    
    d4 = low[1] < MME100 and low < MME100
    
    d5 = close[1] > open[1]
    
    D13 = d1 and d2 and d3 and d4 and d5 and not Temps1 and NOT LongOnMarket
    
    IF D13  THEN
    BUY 1 CONTRACT AT MARKET
    Set Target pprofit 0
    SET STOP LOSS (close-low) // SL sous le plus bas de la bougie précédente
    
    graph (close-low) coloured(255,255,255) as "SL"
    ENDIF
    
    IF ShortON then
    ///// SHORT ////
    c6 = low < MME100 and close < open
     
    c7 = open - close > 14// bougie de x point minimum
     
    c8 = low[1] > MME100 and open[1] > close[1]
     
    c9 = 1
     
    c10 = 1
    
    C14 = c6 and c7 and c8 and c9 and c10 and not Temps1 and NOT ShortOnMarket
    
    IF C14  THEN
    Sellshort 1 CONTRACT AT MARKET
    SET STOP LOSS (close+high) // SL sur le plus haut de la bougie précédente
    SET Target Pprofit 10 // Pas de stop suiveur car mouvement de baisse trop rapide
    
    ENDIF
    
    EndIf
    
    // *****************************
    IF TSL = 1 THEN
    
    //trailing stop function
    trailingstart = 8 //trailing will start @trailinstart points profit
    trailingstep = 4 // trailing step to move the "stoploss"
    
    //reset the stoploss value
    IF NOT ONMARKET THEN
    newSL=0
    ENDIF
    
    //manage long positions
    IF LONGONMARKET THEN
    //first move (breakeven)
    IF newSL=0 AND close-tradeprice(1)>=trailingstart THEN
    newSL = tradeprice(1)+trailingstep
    ENDIF
    //next moves
    IF newSL>0 AND close-newSL>=trailingstep THEN
    newSL = newSL+trailingstep
    ENDIF
    Sell at newSL stop // Place un ordre de vente stop en guise de seuil de stopsuiveur
    //graph newSL coloured (0,255,255) as "newSL"
    ENDIF
    
    //manage short positions
    //IF SHORTONMARKET THEN
    ////first move (breakeven)
    //IF newSL=0 AND tradeprice(1)-close>=trailingstart THEN
    //newSL = tradeprice(1)-trailingstep
    //ENDIF
    ////next moves
    //IF newSL>0 AND newSL-close>=trailingstep THEN
    //newSL = newSL-trailingstep
    //ENDIF
    //Exitshort at newSL stop // Place un ordre d'achat stop en guise de seuil de stopsuiveur
    //graph newSL coloured (255,255,255) as "newSL SHORT"
    //
    //ENDIF
    
    ENDIF
    
    Capture.png Capture.png
    #144450 quote
    Nicolas
    Keymaster
    Master

    Le fix que je t’ai indiqué fonctionne sur la version que tu as posté précédemment ! 🙄

    Dans ce dernier code, que je n’ai pas testé, rapidement je vois que la ligne 77 est incohérente, tu ajoutes 2 prix pour calculer ta taille de stoploss ! 😀

    Yvan63 thanked this post
    #144451 quote
    Yvan63
    Participant
    Senior

    C’est le même mode de calcul que pour les SL des longs, à la différence que je prends la somme du CLOSE et du HIGH pour le placer juste au dessus de la bougie baissière qui précède l’ordre de short  ??

    #144452 quote
    Nicolas
    Keymaster
    Master

    Exemple sur le DAX, si j’ajoute un Close (13226) et un High (13330), j’obtiens une valeur de stoploss de 26556 points ajouté à ton Close (puisque tu utilises SET STOP LOSS), donc un ordre sera placé à 39782 points. Je pense que c’est un peu … large ? 😆

    Yvan63 thanked this post
    #144453 quote
    Yvan63
    Participant
    Senior

    oops en effet, (close-high) est plus pertinent 😀

    J’ai trouvé ce qui n’allait pas dans ce deuxième code, il y a deux conditions distinctes d’achat, et je n’avais fait ta modif que sur une !!

    A présent ça fonctionne, merci !!!

    #144458 quote
    Nicolas
    Keymaster
    Master

    High-Close sinon tu auras encore un stoploss négatif comme au début.

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

Target profit rémanent ?


ProOrder : Trading Automatique & Backtests

New Reply
Author
author-avatar
Yvan63 @yvan63 Participant
Summary

This topic contains 9 replies,
has 3 voices, and was last updated by Nicolas
5 years, 5 months ago.

Topic Details
Forum: ProOrder : Trading Automatique & Backtests
Language: French
Started: 09/15/2020
Status: Active
Attachments: 1 files
Logo Logo
Loading...