TP1 sur support avec secours (DAX)

Viewing 15 posts - 1 through 15 (of 25 total)
  • Author
    Posts
  • #28738 quote
    Toto le Heros
    Participant
    Veteran

    Bonjour,

    Je cherche à crééer un code PRT dont le concept est le suivant : prendre 1 point sur le miniDAX future via achat limite sur un rebond sur support, avec dans le cas où l’ordre est exécuté mais le sens continue à la baisse une 2è prise d’ordre d’achat limite sur un second support de secours pour parvenir globalement à prendre le point recherché.

    Afin d’avoir de la réactivité, je fais tourner mon code en UT=1seconde

    Par exemple :

    DAX au-dessus de 12 150. 1er support identifié = 12 149. Support de secours identifié = 12 139.

    Le principe est le suivant : ordre achat limite placé sur 12 149 avec TP=1, de sorte à ce que dès que le marché atteint ce niveau, un ordre d’achat est placé à 12 149. A partir de là, plusieurs scénarios possibles :

    1- Le marché remonte. La vente est possible et se produit à 12 150. Le programme s’arrête (on tente le 1er passage uniquement).

    2- Le marché descend mais jamais jusqu’à 12 139, il finit par remonter et revient dans le scénario 1. Tout doit se passer comme dans le scénario 1.

    3- Le marché descend et touche 12 139. Dans ce cas présent, il convient de réajuster l’ordre de vente à 12 150 (placé automatiquement via le TP1) de sorte à ce que globalement, la vente des 2 positions prises à 12 149 et 12 139 rapporte au moins 1 point. On a donc dans notre cas présent 2 positions globalement situées à 12 144. Le miniDAX quotant par pas de 1, on va donc souhaiter placer un ordre limite pour ses 2 positions à 12 145.

    4- Biensur, il se peut que le marché continue de descendre et on serait bien avisés de prévoir un STOP LOSS.

     

    J’ai développé et testé en Paper Trading le code suivant.

    Malheureusement, seul le scénario 1 fonctionne. Dès le scénario 2, je ne parviens pas à faire ensemble que mon TP=1 soit maintenu, tout se passe comme si en se rapprochant de 12 139, mon TP est modifié à 6 avant même que 12 139 ne soit touché…

    Seriez-vous en mesure de me conseiller svp en m’indiquant les sources de problèmes dans mon code svp ? D’avance merci.

    Je précise par ailleurs que je souhaiterais faire en sorte que si le RSI est < à 32, il ne soit pas possible au système de prendre le 1er ordre d’achat… Ca ne fonctionne pas dans mon code malheureusement.

    Cordialement,

    Thomas

    DEFPARAM CumulateOrders=true
    
    PIJ=12149
    SECOURS=12139
    ONCE TP=1
    
    MEDIUM=(PIJ+SECOURS)/2
    ARRONDIMEDIUM=(ROUND(MEDIUM))+1
    
    IF ONMARKET = 0 AND ONMARKET[1]=1 THEN
    QUIT
    ENDIF
    
    IF ONMARKET = 1 AND Open<=(PIJ-3) THEN
    IF COUNTOFPOSITION=2 THEN
    SELLSHORT 1 CONTRACT AT (ARRONDIMEDIUM) LIMIT
    ELSE
    TP=ARRONDIMEDIUM-SECOURS
    BUY 1 CONTRACT AT (SECOURS) LIMIT
    ENDIF
    ENDIF
    
    IF Open>=PIJ then
    BUY 1 CONTRACT AT (PIJ) LIMIT
    
    IF RSI(14)[1]<32 THEN
    QUIT
    ENDIF
    ENDIF
    
    // Stops et objectifs : entrez vos stops et vos objectifs ici
    SET TARGET PROFIT TP
    #28845 quote
    Nicolas
    Keymaster
    Master

    Si j’ai bien compris la stratégie:

    1/ j’achète un support si RSI>32, TP 1 point

    2/ prix descend, je moyenne mon premier achat avec un deuxième au support suivant, TP au prix moyen d’ouverture des 2 ordres + 1 point

    Est-ce bien cela ?

    Par contre, ce que je n’ai pas compris c’est l’utilisation de l’instruction QUIT (qui arrête complétement une stratégie) et de SELLSHORT (dans le cas de ce dernier, pour vendre un ordre d’achat il faut utiliser SELL. L’instruction SELLSHORT initie une position de VAD pour mémoire).

    #28866 quote
    Toto le Heros
    Participant
    Veteran

    Bonjour Nicolas,

    Merci de ta réponse. C’est exactement cela.

    L’idée de l’instruction QUIT est de ne prendre que le premier passage, puisqu’il a la meilleure probabilité de passage.

    Ah oui, j’ai pu mélangé SELL et SELLSHORT suivant mon besoin.

    Je vais essayer d’améliorer. Ton supportcommentaires est/sont le(s) bienvenu(s).

    Merci

    Cordialement,

    Thomas

    #28921 quote
    Toto le Heros
    Participant
    Veteran

    J’ai modifié comme suit, mais tout se passe comme si le système ignorait la partie du programme à partir du moment où la première position est prise. Il n’y a pas de pose de 2nd ordre limite d’achat en attente…

    DEFPARAM CumulateOrders=true
    
    PIJ=12109
    SECOURS=12099
    ONCE TP=1
    
    MEDIUM=(PIJ+SECOURS)/2
    ARRONDIMEDIUM=(ROUND(MEDIUM))+1
    
    IF ONMARKET = 0 AND ONMARKET[1]=1 THEN
    QUIT
    ENDIF
    
    IF ONMARKET = 1 THEN
    IF COUNTOFPOSITION=2 THEN
    SELL 1 CONTRACT AT (ARRONDIMEDIUM) LIMIT
    ELSE
    TP=ARRONDIMEDIUM-SECOURS
    BUY 1 CONTRACT AT (SECOURS) LIMIT
    ENDIF
    ENDIF
    
    IF Open>=PIJ then
    BUY 1 CONTRACT AT (PIJ) LIMIT
    
    IF RSI(14)[1]<32 THEN
    QUIT
    ENDIF
    ENDIF
    
    // Stops et objectifs : entrez vos stops et vos objectifs ici
    SET TARGET PROFIT TP
    #28936 quote
    Nicolas
    Keymaster
    Master

    Bon je vais tout recoder selon ma propre analyse de la situation 🙂

    niveau1 = 12109 
    niveau2 = 12099
    
    //1er trade
    if not longonmarket and alreadytraded=0 and rsi[14]>32 then 
     BUY 1 contract at niveau1 limit 
    endif
    
    //2eme trade
    if longonmarket and positionperf<0 then 
     BUY 1 contract at niveau2 limit
     alreadytraded=1
    endif
    
    //objectif si 1 trade
    if countoflongshares=1 then 
     set target pprofit 1
    endif
    
    //objectif si 2 trades
    if countoflongshares=2 then
     sell at positionprice+1*pointsize
    endif 

    (non testé, merci de bien vouloir faire tes propres tests !)

    #28943 quote
    Toto le Heros
    Participant
    Veteran

    Ok, je vais tester ceci.

    Par ailleurs mes ennuis viennent au moins partiellement du fait que je renseigne par habitude TAILLE POSITION MAX à 1 lors de la validation de la stratégie…

    Je poursuis mes investigations et reviens vers toi.

    Merci

    #28946 quote
    Toto le Heros
    Participant
    Veteran

    Peux-tu checker dans ton code ce qu’est “pointsize” stp ?

    Cette ligne n’est pas acceptée chez moi :

    sell at positionprice+1*pointsize
    #28949 quote
    Nicolas
    Keymaster
    Master

    c’est une coquille de syntaxe, la ligne devrait être:

    sell at positionprice+1*pointsize STOP
    #28950 quote
    Toto le Heros
    Participant
    Veteran

    Ok je checke. Merci.

    #28954 quote
    Toto le Heros
    Participant
    Veteran

    Retour suite 1er test.

    Support : 12 114 / Secours : 12 104.

    J’ai tout de suite été dans le scénario où le 1er support lâche, et on va chercher le 2è support.

    Tout va bien sur la première partie. 2è achat limite déclenché. (Je n’ai pas pu voir si le 1er achat est bloqué si RSI<32 ; à suivre).

    En revanche, sur le secours, il y a 2 achats et une clôture des 3 positions (pratiquement instantané).

    Mon relevlé d’ordres donne:

    15:14:19 ACHAT LIMITE 12 114

    15:37:11 ACHAT LIMITE 12 104

    15:37:12 ACHAT LIMITE 12 104

    15:37:12 -3 VENTE STOP 12103…

    #28956 quote
    Nicolas
    Keymaster
    Master

    On fait du debugging en direct 🙂

    En effet, le code ouvre plusieurs positions dans le cas du 2ème trade à la suite, dans ce cas il faudrait modifier le code comme ceci:

    niveau1 = 12109 
    niveau2 = 12099
    
    //1er trade
    if not longonmarket and alreadytraded=0 and rsi[14]>32 then 
     BUY 1 contract at niveau1 limit 
    endif
    
    //2eme trade
    if longonmarket and positionperf<0 and countoflongshares=1 then 
     BUY 1 contract at niveau2 limit
     alreadytraded=1
    endif
    
    //objectif si 1 trade
    if countoflongshares=1 then 
     set target pprofit 1
    endif
    
    //objectif si 2 trades
    if countoflongshares=2 then
     sell at positionprice+1*pointsize STOP
    endif 
    #28959 quote
    Toto le Heros
    Participant
    Veteran

    Je teste et te tiens informé. Merci

    #28960 quote
    Toto le Heros
    Participant
    Veteran

    Bon déjà le cas classique obtention TP1 direct fonctionne bien. Poursuite du test en-cours.

    #28977 quote
    Toto le Heros
    Participant
    Veteran

    Le marché étant plutôt haussier ce soir, les rebonds se succèdent… sans mettre en péril le test de support… Je poursuis mais sans grand espoir pour ce soir sans doute.

    Pour passer le temps, j’ai fait ce code “inverse” qui fait la même chose pour une résistance.

    Peut-être me suis-je trompé, mais j’ai obtenu à peu près la même chose que lors du test de support qui a échoué précédemment.

    Ici avec 12 118 et 12 126 comme résistances, j’ai eu :

    17:33:55 1 VENTE LIMIT @12 118

    17:35:08 1 VENTE LIMIT @12126

    17:35:09 2 ACHAT STOP @12 128

    Mais peut-être me suis-je trompé dans l’instruction positionprice en particulier. Je joins le code testé.

    A+ MERCI BCP et surtout EXCELLENT WE !

    niveau1 = 12118
    niveau2 = 12126
    
    //1er trade
    if not shortonmarket and alreadytraded=0 and rsi[14]<68 then
    SELLSHORT 1 contract at niveau1 limit
    endif
    
    //2eme trade
    if shortonmarket and positionperf<0 and countofshortshares=1 then
    SELLSHORT 1 contract at niveau2 limit
    alreadytraded=1
    endif
    
    //objectif si 1 trade
    if countofshortshares=1 then
    set target pprofit 1
    endif
    
    //objectif si 2 trades
    if countofshortshares=2 then
    exitshort at positionprice-1*pointsize STOP
    endif
    #29033 quote
    Toto le Heros
    Participant
    Veteran

    Voici un code légèrement modifié qui répond à mes attentes il me semble. Je l’ai testé en back-test. A confirmer lundi en réel. J’ai rajouté un petit calcul au départ car je suis sur le miniDAX avec un pas de 1 point et je souhaite être toujours positif (péché mignon peut-être)…

    niveau1 = 12109
    niveau2 = 12099
    
    ecart=abs(niveau1-niveau2)
    ecartabs=ROUND(ecart/2)
    if ecart/2=ecartabs then
    constante=1
    else
    constante=0
    endif
    
    //1er trade
    if not longonmarket and alreadytraded=0 and rsi[14]>32 then
    BUY 1 contract at niveau1 limit
    endif
    
    //2eme trade
    if longonmarket and positionperf<0 and countoflongshares=1 then
    BUY 1 contract at niveau2 limit
    alreadytraded=1
    endif
    
    //objectif si 1 trade
    if countoflongshares=1 then
    set target pprofit 1
    endif
    
    //objectif si 2 trades
    if countoflongshares=2 then
    sell at positionprice+constante LIMIT
    endif
Viewing 15 posts - 1 through 15 (of 25 total)
  • You must be logged in to reply to this topic.

TP1 sur support avec secours (DAX)


Support ProOrder

New Reply
Author
Summary

This topic contains 24 replies,
has 2 voices, and was last updated by Nicolas
8 years, 10 months ago.

Topic Details
Forum: Support ProOrder
Language: French
Started: 03/16/2017
Status: Active
Attachments: No files
Logo Logo
Loading...