Instruction TRADEPRICE et prix négatif

Forums ProRealTime forum Français Support ProOrder Instruction TRADEPRICE et prix négatif

Viewing 6 posts - 1 through 6 (of 6 total)
  • #88228

    Bonjour,

    J’ai un problème récurrent avec le code suivant:

     

     

    L’utilisation de (TRADEPRICE +/- une valeur) entraîne parfois (pas systématiquement) l’arrêt de mon système au motif:

    “Ce système de trading a été arrêté car il a essayé de placer un Stop ou une Limite avec un prix négatif. Merci d’ajouter des protections à votre code pour éviter la placement d’ordres possédant un prix négatif”

     

    Je ne n’identifie pas d’anomalie de prix au moment du rejet (cf la capture d’écran).

     

    En vous remerciant pour vos éclairages.

    #88232

    En graphant TRADEPRICE dans un backtest, tu te rendras compte que cette instruction renvoie également le prix d’ouverture de tes ordres STOP, normal puisque ce sont aussi des ordres classiques finalement et non des STOPLOSS “ordinaires”. Donc à l’ouverture d’un nouvel ordre, le tradeprice est toujours celui de l’un de tes derniers STOP, donc si tu es en dessus/dessous, il est possible que l’opération que tu effectue pour calculer tes niveaux de stop se retrouvent négatifs.

     

    #88237

    Merci pour ton retour Nicolas.

    J’avais compris que TRADEPRICE renvoyait le prix du dernier ordre exécuté, que ce soit un ordre d’achat, vente, stop ou limite.

    A la lecture de ta réponse je comprends que je me trompe et que ce n’est pas le cas puisque tu indique que “le tradeprice est toujours celui de l’un de tes derniers STOP“, donc même si le stop n’a pas été exécuté?

     

    Pourtant je constate que d’une manière générale le “(tradeprice – 0.00100) stop” place bien un stop 10 points sous le prix d’entrée LONG exécuté, et non pas en prenant pour référence le prix du dernier stop.

    Cela veut-il dire que parfois TRADEPRICE va renvoyer le dernier prix exécuté, donc le prix d’entrée en position, ou parfois le prix d’ouverture du dernier stop, et ce de manière aléatoire?

     

    De surcroit dans le cas présent le rejet intervient à la troisième bougie suite entrée en position, étrange qu’il ne se soit pas produit dès l’entrée en position…

     

    Quoiqu’il en soit et plus concrètement il semble que mon script actuel ne convienne pas car il n’est pas stable.

    Je souhaite placer un stop à X points sous chacune de mes entrées en position LONG ou SHORT, sans utiliser l’instruction SET STOP LOSS que j’utilise déjà comme stop garanti à la fin du code.

    Comment peut-on coder cela?

     

    #88244

    J’ai répondu peut-être un peu trop vite, et tu as raison puisque les instructions ONMARKET ont besoin de savoir qu’un ordre est déjà lancé, hors il faut donc une bougie révolue et par conséquent le TRADEPRICE devrait bien être celui de l’ordre au marché.

    Avec le code ci-dessous, j’ai bien ce comportement: (voir image)

     

    La variable “a” en rouge dans l’image, représentant le niveau de stop est toujours correctement placé et n’a pas de valeur négative, ce qui était à prévoir 🙂

    Je pense que dans la liste des ordres rejetés, tu dois avoir l’information du niveau de prix où tu as voulu placé un ordre, as-tu regardé ?

    Pour le moment, je ne comprends pas ce comportement, soit tu lances un ticket au support technique PRT, soit tu peux aussi éviter d’utiliser TRADEPRICE en enregistrant le prix du Close au moment où tu lances ton ordre et fait tes calculs de STOP en fonction de ce dernier, ainsi tu es sûr de la valeur.

    #88256

    Très bonne idée d’enregistrer le prix du close.

     

    Pour filtrer un TRADEPRICE négatif je pourrais aussi écrire

    Mais ton idée d’enregistrer le prix du close est meilleure 😉

    En reprenant ton exemple cela donnerait ceci, est-ce correct?

    #88261

    Oui pour ta première idée, mais ton calcul ne devrait pas être négatif de toute manière .. bref.

    Pour ton code d’exemple, c’est OK, à condition qu’il n’y ai pas de gap important entre le Close enregistré et l’Open suivant (les ordres sont ouverts à l’Open suivant). Même si ça résout le problème du code d’erreur, cela ne reste pas vraiment idéal je trouve.

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

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