Empêcher les SL et TP sur la bougie d'entrée

Viewing 15 posts - 1 through 15 (of 23 total)
  • Author
    Posts
  • #7656 quote
    Doctrading
    Participant
    Master

    Bonjour,

    Je cherche désespérément à faire en sorte que mon backtest ne puisse pas prendre ni le SL, ni le TP, sur la bougie d’entrée.

    Malgré la commande :

    IF barindex - tradeindex >= 1 THEN
    Set stop loss xx
    Set target profit xx
    ENDIF
    

    Ca ne fonctionne pas, car si la bougie d’entrée est grande et que les 2 sont touchés, c’est encore le TP qui compte même si c’est évidemment perdant.

     

    Merci pour votre aide.

    Voici le code complet (que je publierai dans la librairie une fois qu’il sera corrigé). Il s’applique sur l’EUR/USD en graphes M15.

     

    Defparam cumulateorders = false
    
    REINV = 0
    
    IF REINV = 0 THEN
    n = 8
    ELSIF REINV = 1 THEN
    capital = 10000 + strategyprofit
    n = (capital / 10000)*8
    ENDIF
    
    IF dayofweek = 1 THEN
    Ht = DHigh(2)
    Bs = DLow(2)
    C = DClose(2)
    ENDIF
    
    IF dayofweek >=2 and dayofweek < 6 THEN
    Ht = DHigh(1)
    Bs = DLow(1)
    C = DClose(1)
    ENDIF
    
    
    Pivot = (Ht + Bs + C) / 3
    //Res3 = Pivot + ((Ht - Bs)*2)
    Res2 = Pivot + Ht - Bs
    //Res1 = (2 * Pivot) - Bs
    //Sup1 = (2 * Pivot) - Ht
    Sup2 = Pivot - (Ht - Bs)
    //Sup3 = Pivot - ((Ht - Bs)*2)
    
    
    
    Ctime = time > 070000 and time < 180000
    Czone = Close > Sup2 and Close < Res2
    
    IF Ctime and Czone THEN
    buy n shares at Sup2 limit
    sellshort n shares at Res2 limit
    ENDIF
    
    // STOP LOSS & TAKE PROFIT
    xx = 0.0020
    IF barindex - tradeindex >= 1 THEN
    Set stop loss xx
    Set target profit xx
    ENDIF
    
    
    IF time >= 210000 THEN
    IF longonmarket THEN
    sell at market
    ENDIF
    IF shortonmarket THEN
    exitshort at market
    ENDIF
    ENDIF
    
    #7657 quote
    Nicolas
    Keymaster
    Master

    Et en plaçant le stoploss à la bougie d’entrée et le takeprofit à la suivante ?

    #7663 quote
    Doctrading
    Participant
    Master

    Bonjour,

    Oui, par exemple, je n’ai pas trouvé comment faire.

    #7694 quote
    Nicolas
    Keymaster
    Master

    Ce sont des ordres LIMIT, je n’avais pas vu. Si tu places ton instruction SET STOP LOSS au même moment que ton ordre LIMIT est envoyé au courtier, je pense que le SL sera inscrit à ce moment là.

    Ensuite avec :

    IF barindex - tradeindex >= 1 THEN
     Set target profit xx
    ENDIF

    ça devrait le faire.

    Avec des réserves toutefois, il faut que je vérifie si le tradeindex commence quand l’ordre est lancé au marché où si c’est au moment où l’ordre limite est placé. C’est une excellente question ..

    #7706 quote
    Doctrading
    Participant
    Master

    Merci pour ta réponse.
    Le problème, c’est que c’est exactement ce que j’ai écrit (cf mon code plus haut), etc an e fonctionne pas.
    C’est pour cela que je me creuse encore la tête…

    Je peux très bien faire :

    IF barindex - tradeindex = 2 THEN
    sell at market
    ENDIF

    et ça fonctionne, mais bizarrement ça ne fonctionne pas avec les ordres stop.

    Bonne soirée.

    #7717 quote
    eba973
    Participant
    New

    Bonsoir,

    Et si tu essaies ça:

    IF OnMarket THEN
    Set stop loss xx
    Set target profit xx
    ENDIF

    Bonne soirée

    #7720 quote
    Nicolas
    Keymaster
    Master

    Non moi je voulais faire ça plutôt :

    IF Ctime and Czone THEN
     buy n shares at Sup2 limit
     sellshort n shares at Res2 limit
     xx = 0.0020
     Set stop loss xx
    ENDIF
    
    IF barindex - tradeindex >= 1 THEN
     Set target profit xx
    ENDIF

    C’est pas tout à fait pareil puisqu’on place bien le stoploss à l’ouverture du trade ou plutôt lors du placement de l’ordre LIMIT.

    Le problème est qu’on veut ensuite placer le take profit sur l’ordre si il a au moins une barre d’ancienneté, mais je ne sais pas si le tradeindex s’incrémente si l’ordre LIMIT n’a pas déclenché par contre, car si oui alors ça ne fonctionnera pas.

    #7748 quote
    Doctrading
    Participant
    Master

    @ eba973 :

    Merci pour ta proposition.

    Mais le problème est le même

     

    @  Nicolas :

    Je vais essayer, je vous tiens au courant. Et si le code fonctionne bien il ira en librairie bien sûr

    Bonne journée

    #7755 quote
    Doctrading
    Participant
    Master

    Ça ne marche pas mieux… je donne ma langue au chat.
    C’est vraiment bizarre !

    Ça devrait pourtant fonctionner…

    #7760 quote
    Nicolas
    Keymaster
    Master

    Pourtant avec un petit programme simple:

    defparam cumulateorders = false
    
    BUY 1 SHARE AT 1.1310 LIMIT
    
    GRAPH tradeindex

    Le graph retourne 0 tant que l’ordre n’est pas exécuté (ici sur eurodol le 16 Mai à partir de 10h00).

    tradeindex.jpg tradeindex.jpg
    #7786 quote
    Doctrading
    Participant
    Master

    Bizarre que sur ce graph ça reste coincé à la même valeur (que je suppose être “1”)

    #7787 quote
    Doctrading
    Participant
    Master

    En fait, lorsque je lance mon bakctest avec la fonction “graph tradeindex”, la valeur de ce dernier ne fait qu’augmenter, et ne revient jamais à zéro.
    Le problème vient donc de là.

    De plus, il n’augmente pas de 1 en 1, mais de façon non linéaire.

    cf capture d’écran, fenêtre du milieu.
    Une idée ?

    Merci

    bug-tradeindex.png bug-tradeindex.png
    #7797 quote
    Nicolas
    Keymaster
    Master

    Je crois que tu n’as pas saisi TRADEINDEX

    Non c’est pas bizarre justement ! c’est très bien. ça signifie que: l’ordre LIMIT est placé (et donc n’est pas au marché), alors le système nous retourne que le tradeindex n’existe pas (et donc à 0). Par contre dés que l’ordre s’exécute et passe donc au marché, alors le tradeindex s’incrémente au barindex où l’ordre a été effectivement placé au marché.

    Il est logique que ta courbe de tradeindex monte, puisqu’elle reflète le barindex de l’ordre en cours (si TRADEINDEX sans (n) derrière) et que le barindex est le x-éme numéro de la barre depuis le début de l’historique affiché.

    Sur mon image, le premier tradeindex est à 0 car il n’y a jamais eu d’ordre.

    Donc si on résume, le fait de placer ton stoploss au courtier quand tu lances l’ordre doit pouvoir l’inscrire dans son carnet à ce moment là. Ensuite, on attend quelques bars (1 ou plusieurs à toi de voir) et on place le takeprofit. Ce qui en toute logique devrait éviter les TP/SL sur la même barre. La difficulté ici étant les ordres LIMIT. Sur une stratégie d’ordres directement au marché, cela pourrait nous faire avancer sur le problème des backtests erronées à cause des TP/SL immédiat au lancement de l’ordre. Qu’en penses-tu ?

    #7823 quote
    Doctrading
    Participant
    Master

    J’ai compris, je pensais que tradeindex se remettait toujours à zéro après chaque trade… Je ne lis pas beaucoup les notices ! lol

    Par contre le problème est toujours le même, je ne comprends vraiment pas pourquoi.
    Merci pour ton aide.
    Si je parviens à résoudre ce problème avec ton aide, je pourrai mettre en ligne 2 stratégies très performantes sur les points pivot… pour peu que le problème résolu ne casse pas trop la performance du backtest.

    Je mets pourtant :

    IF barindex - tradeindex > 1 THEN
    set target profit 0.0020
    ENDIF

    par exemple.

    Et pourtant, Même en supprimant le stop loss par exemple, j’ai encore des prises de profit sur la même barre.

    #7824 quote
    Doctrading
    Participant
    Master

    Je pense avoir contourné le problème avec, par exemple pour un take profit :

    xx = 0.0012
    IF barindex - tradeindex >= 1 THEN
    sell at tradeprice + xx limit
    exitshort at tradeprice - xx limit
    ENDIF

    Et évidemment, le backtest devient mauvais… encore du travail !

    A bientôt

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

Empêcher les SL et TP sur la bougie d'entrée


ProOrder : Trading Automatique & Backtests

New Reply
Author
author-avatar
Doctrading @doctrading Participant
Summary

This topic contains 22 replies,
has 4 voices, and was last updated by Be-n
6 years, 9 months ago.

Topic Details
Forum: ProOrder : Trading Automatique & Backtests
Language: French
Started: 05/21/2016
Status: Active
Attachments: 2 files
Logo Logo
Loading...