Arrêt de prise de positions après exécution stoploss

Viewing 12 posts - 1 through 12 (of 12 total)
  • Author
    Posts
  • #61138 quote
    Lorenzo47
    Participant
    Average

    Bonsoir,

    ProOrder est vraiment un outil incroyable, et malgré ma très très faible expérience en codage, j’en perçois déjà toute la puissance.

    J’ai beau fouiller le forum aussi bien que les manuels, impossible de trouver une réponse à ma question. Je ne sais pas si c’est possible mais sans aucun doute quelqu’un va m’éclaircir à ce sujet 🙂

    Je travaille sur un système de trading basé sur du scalping, et qui dit scalping dit STOP LOSS fréquemment atteint. Je souhaiterai savoir si il possible de programmer que lorsque qu’un STOPLOSS est exécuter 1 fois (et donc sortie avec perte) la machine attende (x)minutes avant de recommencer à prendre position.

    C’est la façon de je trade manuellement mais je sais pas comment “lui apprendre” ni même si cela est réalisable.

    Merci d’avance pour vos réponses

    Cordialement

    Lorenzo

    #61166 quote
    Nicolas
    Keymaster
    Master

    Oui c’est possible, quelques sujets:

    arrêt d’une stratégie pendant x périodes après une perte

    comment empecher le systéme de reprendre position après un stop

    et certainement encore beaucoup d’autres dans le forum anglophone.

    Si tu es toujours en difficulté, fait le nous savoir et on essaiera de t’aider un peu plus 🙂 Bon courage.

    #61199 quote
    Lorenzo47
    Participant
    Average

    Tout d’abord merci beaucoup de m’aider. C’est vraiment super gentil de prendre de votre temps

    Effectivement ça coupe bien le trading, mais ne le reprends pas par la suite… D’après ce que je comprends si il vérifie la condition “barindex-mybar>2” alors il “autorisetrading  = 1” pas de problème. Mais s’il ne vérifie pas la condition, alors “autorisetrading = 0” et là tout s’arrête sans jamais reprendre. Je suppose qu’il faut le faire “re tester” jusqu’à ce qu’il la vérifie mais je avis encore avoir besoin de votre aide ici.

    PS : je peux publier le code dans l’état actuel si je ne suis pas assez clair dans l’explication de mes difficultés de débutant

    IF not onmarket[1] AND positionperf(1)<0 THEN
    mybar = barindex[1]
    ENDIF
    
    IF barindex-mybar>2 THEN
    autorisetrading = 1
    else
    autorisetrading = 0
    
    ENDIF
    
    IF autorisetrading THEN
    
    // Conditions pour ouvrir une position acheteuse
    #61200 quote
    Nicolas
    Keymaster
    Master

    En effet, puisque les lignes 1 à 3 vont remettre mybar à une valeur qui ne permettra jamais à la ligne 5 d’être vrai. Dans ce cas, il faut que cette condition ne soit vérifié qu’une seule fois juste après une fermeture d’ordre, tel quel:

    IF onmarket[1] and not onmarket AND positionperf(1)<0 THEN
     mybar = barindex[1]
    ENDIF
    #61222 quote
    Lorenzo47
    Participant
    Average

    Merci beaucoup c’est impeccable!

    Pour ma curiosité et compréhension personnelle pour la suite je me permet de poser une question peut être un peu bête 🙂

    La ligne 1,

    IF onmarket[1] and not onmarket AND positionperf(1)<0 THEN

    Je comprends le “if not on market” mais je ne comprends pas pourquoi le “if on market” et encore moins pourquoi “[1]” est accolé à la suite. Pourquoi faudrait-il qu’une position soit déjà ouverte sur le marché alors qu’on ne souhaite pas se repositionner après une perte ? Et n’est-ce pas contradictoire qu’il faille qu’une position soit à la fois ouverte et à la fois fermée ?

    Je me suis égaré à cet endroit.. Je n’arrive pas à trouver de logique dans tout ça mais sans aucun doute il y en a une car ça fonctionne à merveille! Il faut vraiment que je m’habitue à cette tournure d’esprit pour que la machine me comprenne.

    Merci beaucoup, et en espérant avoir de moins en moins besoin de vous

    #61225 quote
    Nicolas
    Keymaster
    Master

    [1] signifiant une barre auparavant, soit si on était au marché dans la barre d’avant qu’on ne l’est plus dans celle-ci, alors … Cela afin de faire le test une seule fois juste après une fermeture. Le soucis de ton code initial était celui-ci: la variable mybar était sans arrêt remis à jour avec une nouvelle valeur, de ce fait la condition sur les barres révolues (à la ligne 5), pour ré-autoriser le trading n’était jamais vérifié vrai.

    #61296 quote
    Lorenzo47
    Participant
    Average

    Merci beaucoup, c’est beaucoup plus clair.

    Bonne soirée

    #61890 quote
    Lorenzo47
    Participant
    Average

    Bonsoir,

    J’ai pas mal avancé depuis mais je suis tombé face une nouvelle énigme… Je pense connaître l’origine du problème mais je suis incapable de corriger.

    Donc, l’algorithme se coupe bien et se relance bien après x périodes en cas de perte sauf si le Stop Loss est exécuté lors de la même période que celle de l’ouverture de la position coupée. D’après ce que je comprends du “bug” (photo jointe) : s’il exécute le Stop Loss durant la même période où il a ouvert la positon il ne peut pas vérifier

    if on market[1]

    puisqu’à la période précédente on n’était pas au marché donc il réouvre une nouvelle position.

    Dites moi ce que vous en pensez mais je pour moi le problème vient de là… J’ai essayé avec (pour lui faire tester sur la bougie en cours)

    IF onmarket[1] OR onmarket AND not onmarket AND positionperf(1)<0 THEN
    mybar = barindex[1]
    ELSIF onmarket[1] AND positionperf(1)<0 THEN
    mybar = barindex[1]
    ENDIF

    ou encore avec (pour ne pas qu’il ne se bloque sur le fait qu’on soit de nouveau sur le marché)

    IF onmarket[1] OR onmarket AND positionperf(1)<0 THEN
    mybar = barindex[1]
    ELSIF onmarket[1] AND positionperf(1)<0 THEN
    mybar = barindex[1]
    ENDIF

    Bizarrement ces deux codes alternatifs m’ont fait gagner plus de 1200$ supplémentaires en Backtest (avec 1 contrat USD!) sur les 3 dernier jours (je trouve ça énorme!) mais ça n’a pas du tout aider le “principal” problème. Il va falloir que je comprenne pourquoi j’ai un tel résultat totalement par hasard.. Je n’aime pas ça du tout quand c’est du hazard! Donc plutôt que de “bidouiller” encore très longtemps  avec mes connaissances encore limitées, je préfère demander de l’aide aux spécialistes en matière de codage 😉

    Merci par avance (encore une fois)

    Enchainement-Stop-Loss.jpeg Enchainement-Stop-Loss.jpeg
    #61985 quote
    Nicolas
    Keymaster
    Master

    Tu peux aussi regarder du côté de TRADEINDEX et voir pour créer une condition de comparaison avec BARINDEX. Je te laisse cogiter 🙂

    #62062 quote
    Lorenzo47
    Participant
    Average

    Okay merci pour la piste, je vais aller cogiter 🙂 🙂

    #62065 quote
    Lorenzo47
    Participant
    Average
    IF onmarket[1] AND not onmarket AND positionperf(1)<0 THEN
    mybar = barindex[1]
    ENDIF
    
    IF (barindex-mybar)>10 AND (barindex-tradeindex(1))>10 THEN
    autorisetrading = 1
    ELSE
    autorisetrading = 0
    ENDIF
    
    IF autorisetrading THEN

    Je pense avoir trouvé 😉 Si j’ai bien compris, TRADEINDEX c’est le BARINDEX d’une position exécutée (dans mon cas, le BARINDEX de ma dernière position) ?

    #62137 quote
    Nicolas
    Keymaster
    Master

    Oui ! c’est bien ça ! TRADEINDEX(N), indique le barindex du trade N.

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

Arrêt de prise de positions après exécution stoploss


ProOrder : Trading Automatique & Backtests

New Reply
Author
author-avatar
Lorenzo47 @lorenzo47 Participant
Summary

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

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