objectif journalier et ordres cumulés

Viewing 12 posts - 1 through 12 (of 12 total)
  • Author
    Posts
  • #54454 quote
    Eric78
    Participant
    Junior

    Bonjour, 

    nouveau sur le site et en trading, je cherche à coder deux paramètres que je voudrais rajouter à ma stratégie. 

    1- fixer un objectif de gain journalier (indépendamment du take profit de chaque trade) et ne plus prendre de positions une fois qu’il est atteint (avec éventuellement un stop suiveur pour profiter d’une bonne tendance) 
     
    2- pour les “cumulateorder” fixer un nombre maximum d’ordres cumulés. Par exemple maximum trois ou quatre ordres.
     
    merci à vous
    Eric
    #54457 quote
    Nicolas
    Keymaster
    Master

    1/ Concernant les objectifs journaliers, tu trouveras sans nul doute un tas de posts à ce sujet dans les forums du site (en utilisant la fonction de recherche dans le menu sous ton avatar). Sinon, il y a ce post du blog dans lequel un code “tout prêt” est disponible pour fixer à la fois l’objectif de gain journalier et aussi celui des pertes  acceptées : Objectif de gain et perte journalières

    Tu trouveras aussi dans le blog des codes de trailing stop complet à copier/coller dans les stratégies. 

    2/ On peut limiter le nombre de positions au marché en les testant avec COUNTOFPOSITION par exemple:

    //limitation à 5 ordres cumulés
    if countofposition<5 and ConditionAchat then 
     buy 1 contract at market 
    endif 

     

     

    Bodaris thanked this post
    #54815 quote
    Eric78
    Participant
    Junior

    Merci pour votre réponse et merci beaucoup pour les ordres cumulés, ça fonctionne.

    pour l’objectif journalier je n’arrive pas trouver la bonne formule. 

    je voudrais qu’il soit calculé en points (pas en euros). et qu’il soit indépendant des take profit des trades.

    Voici ce que j’ai fait mais ça ne fonctionne pas. Auriez-vous un conseil. 

    Merci à vous

    // —parameters
    MaxDailyProfit=100*pipsize //Max daily profit allowed (in point)

    // first time we launch the code, the trading is allowed
    once TradeAllowed=1

    // reset the current state of the strateygprofit each new day
    If intradaybarindex=0 then
    MyProfit=STRATEGYPROFIT
    TradeAllowed=1
    endif

    // test if the strategyprofit of the day is currently above the daily profit allowed If
    StrategyProfit >= MyProfit+MaxDailyProfit then
    sell at market
    exitshort at market
    TradeAllowed=0
    endif

    #54899 quote
    Eric78
    Participant
    Junior

    Bonjour, 

    je m’excuse de revenir encore avec ma question mais j’ai beau parcourir le forum je ne trouve pas de solution. 

    je souhaite programmer un objectif de gain journalier en points (par exemple 50 points)
    indépendant des take profit ou des stop loss des trade et indépendant du nombre de trade. 

    avec éventuellement un stop suiveur lié à cet objectif journalier.

    j’arrive à le faire stoper aux 50 points mais il reprends des position après.
    Quand je rajoute Notradeallowed il ne prend plus aucune position.

    voici le code que j’essaie où  il ne prends aucune position. Je ne comprends pas pourquoi

    // Définition des paramètres du code
    DEFPARAM CumulateOrders = TRUE // 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 = 080000
    // Annule tous les ordres en attente et ferme toutes les positions à l'heure "FLATAFTER"
    DEFPARAM FLATAFTER = 220000
    
    // Paramètres
    once TradeAllowed=1
    
    if intradaybarindex=0 then
    TradeAllowed=1
    MyTarget = 50
    endif
    
    // Conditions pour ouvrir une position acheteuse
    indicator1 = WilderAverage[2](totalPrice)
    c1 = (close > indicator1)
    indicator2 = WilderAverage[2](totalPrice)
    c2 = (close[1] > indicator2[1])
    indicator3 = WilderAverage[2](totalPrice)
    indicator4 = Average[55](close)
    c3 = (indicator3 > indicator4)
    
    if TradeAllowed then
    IF c1 AND c2 AND c3 THEN
    BUY 1 CONTRACT AT MARKET
    ENDIF
    
    // Conditions pour fermer une position acheteuse
    indicator5 = Average[29](close)
    c4 = (close CROSSES UNDER indicator5)
    
    IF c4 THEN
    SELL AT MARKET
    ENDIF
    
    // Conditions pour ouvrir une position en vente à découvert
    indicator6 = WilderAverage[2](totalPrice)
    c5 = (close < indicator6)
    indicator7 = WilderAverage[2](totalPrice)
    c6 = (close[1] < indicator7[1])
    indicator8 = Average[55](close)
    c7 = (close < indicator8)
    
    
    if TradeAllowed then
    IF c5 AND c6 AND c7 THEN
    SELLSHORT 1 CONTRACT AT MARKET
    ENDIF
    
    // Conditions pour fermer une position en vente à découvert
    indicator9 = Average[29](close)
    c8 = (close CROSSES OVER indicator9)
    
    IF c8 THEN
    EXITSHORT AT MARKET
    ENDIF
    
    // profit journalier atteint : coupe toutes les positions et ne plus en prendre de la journée.
    SET TARGET pProfit MyTarget
    sell at market
    exitshort at market
    TradeAllowed=0
    ENDIF
    ENDIF
    

     

    #54944 quote
    Nicolas
    Keymaster
    Master

    Je ne peux pas répondre plus précisément pour le moment mais je viens de trouver 2 pistes:

    https://www.prorealcode.com/topic/objectif-journalier-en-point/#post-47455

    https://www.prorealcode.com/topic/pause-suite-a-limite-atteinte/

    Concernant ton code, tu devrais vérifier les imbrications IF/THEN/ENDIF, je pense qu’il y a un soucis.

    #55104 quote
    Eric78
    Participant
    Junior
    Bonjour,merci pour vos réponses et excusez-moi de revenir à la charge. Car ça paraît simple, mais j’ai eu beau chercher dans le manuel probuilder et sur les pistes que vous m’avez suggérées, impossible de trouver quelque chose qui fonctionne. Pourriez-vous m’éclairer et m’aider à trouver la solution. Voici ce que je souhaite faire (pour l’indice dax) :
    Je souhaiterais coder un objectif de gain journalier en points,
    indépendant du nombres de trades et indépendant du stoploss et take profit de chaque trade.
    Par exemple si l’objectif du jour, de 50 points, est atteint par la stratégie : on sort de position pour la journée (sans attendre la fin d’une bougie).
    Et la stratégie ne reprends pas de position avant le lendemain.
    Bien cordialement.
    Voici ce que j’ai fait mais ça ne marche pas du tout.
    // Définition des paramètres du code
    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 = 080000
    // Annule tous les ordres en attente et ferme toutes les positions à l'heure "FLATAFTER"
    DEFPARAM FLATAFTER = 220000
    dayprofitmax = 50 // EN POINTS ?
    daylossmax = 50 // EN POINTS ?
    
    if intradaybarindex=0 then
    trading=1
    lastdayprofit=strategyprofit
    endif
    
    // Conditions pour ouvrir une position acheteuse
    indicator1 = WilderAverage[2](totalPrice)
    c1 = (close > indicator1)
    indicator2 = WilderAverage[2](totalPrice)
    c2 = (close[1] > indicator2[1])
    indicator3 = WilderAverage[2](totalPrice)
    indicator4 = Average[11](close)
    c3 = (indicator3 > indicator4)
    
    IF c1 AND c2 AND c3 THEN
    BUY 1 CONTRACT AT MARKET
    ENDIF
    
    // Conditions pour fermer une position acheteuse
    indicator5 = Average[11](close)
    c4 = (close CROSSES UNDER indicator5)
    IF c4 THEN
    SELL AT MARKET
    ENDIF
    
    // Conditions pour ouvrir une position en vente à découvert
    indicator6 = WilderAverage[2](totalPrice)
    c5 = (close < indicator6)
    indicator7 = WilderAverage[2](totalPrice)
    c6 = (close[1] < indicator7[1])
    indicator8 = Average[11](close)
    c7 = (close < indicator8)
    
    IF c5 AND c6 AND c7 THEN
    SELLSHORT 1 CONTRACT AT MARKET
    ENDIF
    
    // Conditions pour fermer une position en vente à découvert
    indicator9 = Average[11](close)
    c8 = (close CROSSES OVER indicator9)
    IF c8 THEN
    EXITSHORT AT MARKET
    ENDIF
    
    if trading=1 and (strategyprofit > lastdayprofit+dayprofitmax or strategyprofit < lastdayprofit-daylossmax) then
    trading=0
    sell at market
    exitshort at market
    endif
     
    #55670 quote
    Nicolas
    Keymaster
    Master

    Entre 2 bougies il ne peut rien se passer puisque le code n’est lu qu’une seule fois par barre, à sa fermeture. Cela devrait changer avec la mise à jour que l’on attend tous, dans le courant de l’année prochaine.

    Donc, au mieux on pourrait placer un takeprofit adapté en fonction des profits déjà réalisés et fermés pour correspondre à un gain journalier de 50 points. Mais il faudra quoiqu’il arrive attendre une lecture du code pour indiquer à la stratégie qu’il faut s’arrêter complètement.

    #55693 quote
    Eric78
    Participant
    Junior

    Merci pour votre réponse. Merci de m’avoir accordé un peu de votre temps. Je comprends mieux pourquoi je n’arrivais pas à trouver…
    Donc ce n’est pas possible pour le moment, c’est bien embêtant.

    Cela dit un stoploss et un takeprofit se font déjà au milieu d’une bougie. Donc il se passe bien quelque chose en dehors des barres.
    J’attends avec impatience la nouvelle mise à jour…

    Alors, je ne voudrais pas abuser, mais comment faire pour placer un take profit adapté en fonction des profits déjà réalisés.
    Puisqu’ils peuvent être calculés à chaque bougie. 

    De tout ce que j’ai déjà essayé voici ce qui s’en rapproche mais ça ne s’arrête pas où je voudrais.
    Je ne comprends d’ailleurs pas pourquoi ça s’arrête quand ça s’arrête ni pourquoi ça ne s’arrête pas quand ça ne s’arrête pas…

    Le maxdailyprofit ne correspond ni aux points ni aux € qui apparaissent sur la courbe des gains.

    Cordialement
     
    Eric
    // DAX M10
    DEFPARAM CumulateOrders = TRUE // Cumul des positions
    DEFPARAM FLATBEFORE = 080000
    DEFPARAM FLATAFTER = 220000
    
    // ---parameters
    MaxDailyProfit= 15 //Max daily profit allowed (in money)
    MaxDailyLoss=150 //Max daily loss allowed  (in money)
    
    // first time we launch the code, the trading is allowed
    once TradeAllowed=1
    
    // reset the current state of the strateygprofit each new day
    If intradaybarindex=0 then
    MyProfit=STRATEGYPROFIT
    TradeAllowed=1
    endif
    
    If StrategyProfit>=MyProfit+MaxDailyProfit or Strategyprofit<=MyProfit-MaxDailyLoss then
    EXITSHORT AT MARKET
    TradeAllowed=0
    endif
    // Ouvrir une position Short 
    if TradeAllowed=1 and close < Average[3](close) AND Average[3](close)< Average[5](close) and Average[5](close) < Average[19](close) THEN
    SELLSHORT 1 SHARES AT MARKET
    ENDIF
    // Sortie short
    IF close crosses over Average[9](close) THEN
    exitshort AT MARKET
    ENDIF
    
    SET STOP pLOSS 21
    SET TARGET pProfit 71

     

     

    #55704 quote
    Nicolas
    Keymaster
    Master

    Les ordres se coupent en gain ou en perte avec les niveaux de prix indiqués en Takeprofit et stoploss, parce qu’ils sont inscrits dans le carnet du courtier. Là c’est indépendant du code bien entendu. 

    Je regarderai demain le problème mentionné, si jamais j’oubliai, merci de répondre à nouveau au sujet. 

    #56022 quote
    Eric78
    Participant
    Junior
    Bonjour Nicolas, Je reviens vers vous pour savoir si vous avez eu le temps de regarder mon code. Je vous remercie par avance de l’attention que vous y portez. Cordialement Eric
    #56040 quote
    Nicolas
    Keymaster
    Master
    Voilà le code ajusté. J’ai ajouté un takeprofit automatique en argent ($profit), calculé suivant l’objectif quotidien et le profit/perte déjà connu de la journée en cours. Cela semble fonctionner correctement, merci de vérifier et de faire un retour.
    // DAX M10
    DEFPARAM CumulateOrders = TRUE // Cumul des positions
    DEFPARAM FLATBEFORE = 080000
    DEFPARAM FLATAFTER = 220000
    
    // ---parameters
    MaxDailyProfit= 15 //Max daily profit allowed (in money)
    MaxDailyLoss=150 //Max daily loss allowed  (in money)
    
    // first time we launch the code, the trading is allowed
    once TradeAllowed=1
    
    // reset the current state of the strateygprofit each new day
    If intradaybarindex=0 then
    MyProfit=STRATEGYPROFIT
    DailyProfit=0
    TradeAllowed=1
    endif
    
    //compute live daily profit & automatic takeprofit
    dailyprofit = strategyprofit-myprofit
    autotakeprofit = MaxDailyProfit-dailyprofit
    
    If StrategyProfit>=MyProfit+MaxDailyProfit or Strategyprofit<=MyProfit-MaxDailyLoss then
    EXITSHORT AT MARKET
    TradeAllowed=0
    endif
    // Ouvrir une position Short
    if TradeAllowed=1 and close < Average[3](close) AND Average[3](close)< Average[5](close) and Average[5](close) < Average[19](close) THEN
    SELLSHORT 1 SHARES AT MARKET
    ENDIF
    // Sortie short
    IF close crosses over Average[9](close) THEN
    exitshort AT MARKET
    ENDIF
    
    SET STOP pLOSS 21
    SET TARGET $Profit autotakeprofit
    
    //graph dailyprofit
    //graph autotakeprofit coloured(100,52,69)
    //graph tradeallowed
    automatic-takeprofit.png automatic-takeprofit.png
    #56101 quote
    Eric78
    Participant
    Junior
    Bonjour, merci pour le code. Je l’ai testé et malheureusement ça ne marche pas très bien. ça semble fonctionner pour le maxdailyloss. Mais pour le maxdilyprofit ça ne marche pas du tout. Par exemple si je le mets à 40, il y a une bougie où je suis à 60 de profit puis la suivante où je suis à 110 puis la suivante où je suis à 130 et ça ne s”arrête toujours pas. Puis parfois ça s’arrête et je ne sais pas pourquoi. cordialement
Viewing 12 posts - 1 through 12 (of 12 total)
  • You must be logged in to reply to this topic.

objectif journalier et ordres cumulés


ProOrder : Trading Automatique & Backtests

New Reply
Author
author-avatar
Eric78 @eric78 Participant
Summary

This topic contains 11 replies,
has 2 voices, and was last updated by Eric78
8 years, 2 months ago.

Topic Details
Forum: ProOrder : Trading Automatique & Backtests
Language: French
Started: 12/01/2017
Status: Active
Attachments: 1 files
Logo Logo
Loading...