Programmation Trailing stop évolutif avec resserrement du pas

Forums ProRealTime forum Français Support ProOrder Programmation Trailing stop évolutif avec resserrement du pas

Viewing 15 posts - 1 through 15 (of 15 total)
  • #131242

    Bonjour à tous, je suis nouveau sur le forum et  je souhaiterais utiliser une stratégie de trading qui utiliserait un trailing stop évolutif qui serait de plus en plus serré au fur et à mesure que la valeur du titre augmente.

    En gros si le cours d’achat est C0, que le cours à l’instant t est C(t),

    Si mon trailing stop à l’ouverture est de X0, (c’est à dire que ma position est vendue au départ pour un cours à C0-X0)

    et que le plus haut depuis l’ouverture de ma position en cours est H(t),

    le trailing stop X(t) que je souhaiterais programmer est le suivant :

    X(t) = a(t)*X0

    avec a(t) = (C0 – X0)/(H(t)-X0) compris entre 1 et 0, et tend vers 0 lorsque le plus haut du cours augmente.

    Pensez-vous qu’on peut programmer un tel trailing stop sur ProBacktest?

    Merci de vos réponses, Eddy

    #131330

    Donc en gros, plus on s’éloigne du prix d’achat, plus le pas du trailing stop diminue. Avec la formule que tu proposes, on voit la valeur de a (ligne blanche) qui en effet diminue avec le temps et vient vers 0.

    Je l’utilise ensuite comme facteur pour faire varier le pas du trailing stop du début (ici à 30 points).

    La ligne rouge sur le graphique du prix affiche le seuil du stoploss qui donc diminue avec le temps. Je pense ne pas avoir fait d’erreur.

    #131459

    Super Merci Nicolas! Je vais tester ce trailing stop je l’utilise en manuel pour l’instant dans le jeu ABC bourse et ça donne de bons résutats : Exemple achat hier de Genfit à l’ouverture à 5.04 et revente sur trailing stop avec resserrement du pas à 8.18 ! (60% en intraday bon c’est pas tous les jours que ça arrive hein!)

    Bonne journée Eddy

     

    #131683

    Bonjour Nicolas, j’ai programmé le trailing stop avec ton programme, mais j’ai du le modifier car je l’utilise sur des actions, mais le programme ne donne pas ce que je sohaite, le trailng stop n’est pas bien calculé et les sorties ne se font pas notamment à la vente : Est-ce que tu pourrais jeter un oeil dessus si tu as le temps? Ici trailing stop pour la VADE d’actions:

     

    Bonne journée Nicolas

    #131684

    Bonjour, localisation du bouton “insert prt code” pour les nouveaux dans image ci-jointe. Pas besoin de reposter pour cette fois, je vais reformater le code ci-dessus. Merci de penser à utiliser le bouton pour insérer du code dans les prochains posts.

    #131690

    Merci du rappel Noobywan, c’est vrai je suis newbie 😉

    J’avais fait une petite erreur (c’est lt et non ht la variable en ligne 13)

    Mais ça ne change pas mes résultats qui sont toujours étranges,

    Merci!

     

     

    #131695

    Il ne faut pas utiliser l’instruction set stop ptrailing, mon code est un trailing stop à lui tout seul qui utilise un ordre conditionnel de type STOP, il faut donc l’utiliser tel que conçu.

    #131719

    Bonjour Nicolas je me suis donc largement inspiré de ton code pour tester sur quelques actions, et à vrai dire, ça réagit pas comme j’aimerais, (j’ai peut être fait une erreur de programmation? ci dessous le code)

    Je souhaiterais que le trailing stop se mette à jour dès la prise de position et ce n’est pas le cas :

    Exemple sur Biomerieux (cf Copie d’écran ci joint)

    1. Signal d’achat le 23 Mars sur grande Bougie verte : clôture à 94,6
    2.  Achat le 24 Mars à l’ouverture à 120, le Stop initial doit normalement mis 5,05 euros sous ce cours (correspond à l’ATR du 23/Mars) donc à 114,95 euros
    3. Le cours monte à 125.1 => le stop remis à jour aurait du être placé, d’après notre formule à 120,25 => après baisse du cours depuis ce plus haut, le stop aurait du s’enclencher et la perte aurait dû normalement être de : 0,25€
    4. Mais au lieu d’être déclenché le jour même du 24 Mars, le code n’a déclenché le stop que le lendemain, et à la valeur de 89,5 qui semble correspondre à un stop loss qui aurait été défini par rapport au cours de cloture du 23 Mars (pas de prise en compte du plus haut récent de 125, et déclenchement trop tardif)! Cela génére une perte de 30,5 € par action sur 2 journées au lieu des 0,25€ en intraday dans la stratégie que je souhaiterais programmer.

    Quelle modification seraient à apporter du coup, y a t’il une erreur de code? CI dessous le backtest tel que je l’ai programmé en s’inspirant de ton code, merci d’avance!

     

    #131732

    Grâce à l’instruction GRAPHONPRICE tu pourras débugger ta variable et voir comment elle est calculé :

     

    #131761

    Bonjour Nicolas

     

    J’ai mis ton instruction dans le code mais ça n’affiche rien (cf code ci dessous)…

    J’ai peut être une idée : peut être faudrait il gérer en 2 timeframe :

    L’achat à l’open (timeframe daily) suite à signal à la cloture jour précédent,

    la gestion de la position en timeframe 30 minutes avec des stops qui se remettent à jour toutes les 30 minutes,

    J’ai essayé mais je coince aussi sur la programmation.

    Ce serait possible de faire un skype pour essayer d’y voir plus clair?

    C’est dommage que je n’arrive pas à programmer le système que j’ai dans la tête et qui semble bien marcher en manuel…

     

    #131765

    Si ça n’affiche rien, c’est que le calcul de ton trailing stop n’est pas correct, d’où l’utilité de cette instruction pour débugger ! 🙂

    C’est peut être que la valeur que tu calcules est trop petite pour coller à celle du prix, dans ce cas tu peux aussi utiliser GRAPH à la place. Sinon CTRL+D pour avoir la palette des informations des valeurs affichées sur l’écran.

    L’assistance privé est facturée, je ne peux pas Skyper avec chacun des 30000 membres du forum et ça ne participe pas à aider la communauté toute entière, je préférerai qu’on continue à discuter ici de ton problème.

    Je pense que tu devrais repartir de zéro en reprenant mon code et en y intégrant ta stratégie.

    #131771

    OK Nicolas, je vais essayer de réutiliser ton code, mais je ne comprends pas tout ton code ci dessous:

    pourrais tu m’expliquer à quoi correspond ton instruction :

    once trailingstop=30 que je n’ai pas réutilisé faute de compéhension

    et que veut dire pointsize dans ton expression trailingstop*pointsize?

    J’ai cru comprendre que pointsize c’était pour le forex, mais je trade les actions…

     

     

    #131781

    En fait je donne une valeur au pas du trailing stop, soit 30 points sous le prix d’ouverture de l’ordre. Pour convertir 30 points dans la valeur d’1 point pour l’instrument présent, je le multiplie par la valeur constante de ce qu’est un point. Par exemple pour le forex, 0.0010 c’est 10 points/pips, donc si je fais 10*0.0001 (0.0001 qui est la valeur du point), alors je peux me permettre d’utiliser le même code pour tous les sous-jacents, d’où l’universalité du code, comme ici pour toi avec les actions.

    Il y a une petite coquille dans mon code, lors de l’ouverture de l’ordre le stoploss ne sera pas mis, il faudra attendre 1 chandelier, donc il faut le placer aussi tout de suite à l’ouverture :

    Donc à chaque calcul du nouveau pas, on utilise la valeur la plus haute du stoploss calculé grâce à la ligne “newtrailing = max(newtrailing,close-(trailingstop*pointsize)*a)”

    #131838

    Merci Nicolas,

    Tes conseils pour tester mes indicateurs  avec la commande GRAPHONPRICE m’ont été très utiles, du coup j’ai réussi à mettre au point ce que je voulais, mais j’ai dû utiliser 2 time frames : le daily pour les signaux et le 10 minutes pour gérer les positions.

    Car si j’ai bien compris, le stop ne peut se mettre à jour qu’une fois : à l’ouverture de la barre (donc une seule fois dans la journée lorsqu’on est en UT daily) => donc nécessité pour moi d’une UT 10min pour faire varier les stops dans la journée avec suffisamment de précision.

    J’ai encore un problème à régler cependant : lorsque la position est clôturée par stop en cours de journée, le système relance des achats sur les barres suivantes, car il doit surement considérer que le signal daily est encore valable…! Alors que je souhaiterais clôturer la position pour le restant de la journée et ce jusqu’à ce qu’un nouveau signal daily arrive. (même pas forcément le jour suivant donc).

    J’ai essayé de gérer ça en ajoutant une condition sur le temps dans le signal l’ordre d’achat qui ne doit se faire qu’à l’ouverture du jour :

    oh = openhour
    C1 = (Trend > 0) and (signal > 0) and (oh <= 0910000)

    Mais ça ne fonctionne pas, malgré cette condition le système continue à acheter en cours de journée lorsque la position précédente est soldée. (cf copie d’écran)

    Pourrais tu m’orienter encore là dessus pour résoudre ce problème? Après je pense que mon système sera bien programmé!

     

     

     

    #132079

    Tu peux faire une différence entre le BARINDEX et le TRADEINDEX par exemple pour comparer les signaux avec les numéros des chandeliers.

     

Viewing 15 posts - 1 through 15 (of 15 total)

Create your free account now and post your request to benefit from the help of the community
Register or Login