Arrêt système de trading par manque d’historique ?

Forums ProRealTime forum Français Support ProOrder Arrêt système de trading par manque d’historique ?

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

    Bonjour à tous,

    Mon système de Trading en UT 1 minute (sur compte réel complete IG) s’arrête de manière intempestive au bout d’un temps variable de plusieurs minutes ou dizaines de minutes). Le message retourné indique un nombre de données historiques insuffisant pour le calcul d’au moins un indicateur au cours de la dernière bougie. Mes indicateurs ne fonctionnent que sur des périodes inférieures à 300 et j’ai pris soin d’ajouter l’instruction DEFPARAM Preloadbars = 10000 en tête de code ! C’est donc comme si cette instruction ne fonctionnait pas…

    Merci bcp pour votre aide.

    Marc

    #141898

    Même si les indicateurs ont une période de 300 unités maximum, tu cherches peut être à trouver des infos qui remontent plus loin dans le passé ? Fais-tu des boucles ? Sans avoir lu le code, je ne pourrai être plus précis.

    #141926

    Bonjour Nicolas,

    Merci pour ton retour. Voici quelques précisions.

    Système de trading en Timeframe 1 minutes sur compte réel IG. Le système fonctionne parfaitement en backtest.

    Les seuls indicateurs utilisés sont les suivants :

    • un canal de Donchian à 300 périodes (celui de PRT) et un autre de période plus petite
    • Un ATR 14 périodes pour le placement des Stops
    • Un indicateur perso (appelé par un Call par le programme) pour détecter des patterns de chandeliers (pinbar, avalement,…). Au maximum donc, seule la dernière bougie est testée (pinbar) ou les deux dernières (avalement).
    • Un indicateur perso pour confirmer la tendance (simplement la valeur du Close par rapport à une moyenne mobile simple de 30 périodes)

    Pour les entrées en position, lorsque par exemple un rebond de la dernière bougie en PinBar est détecté, je fais effectivement une boucle, en général sur les 40 bougies précédentes, pour tester le contexte passé du prix par rapport au Donchian. Ainsi et sauf erreur, nous nous situons sur la bougie 340 en arrière dans le “pire” des cas. Donc loin des 10000 bars préloadées.

    Si le contexte passé est OK et que nous sommes bien dans les conditions de trading fixées (par exemple le bon créneau horaire) j’ouvre une position.

    Je ne comprends vraiment pas l’origine de cet arrêt du système (pour raison de données historiques insuffisantes).  La dernière fois, il s’est produit plusieurs heures après le lancement …

    J’espère que les précisions ci-dessus, t’éclaireront davantage pour m’aider à trouver la solution. Je t’en remercie.

    Marc

     

     

    #141965

    En données 1-minute le problème pourrait venir d’une simple bougie manquante dans l’historique, je pense que ça pourrait venir de ton indicateur de figures de chandeliers : éviter les divisions avec des bougies fantômes, s’assurer d’abord que la bougie est présente ou plutôt utiliser quelque-chose comme :

    si tu utilises la valeur du High-Low, fait comme ceci :

    cela permettant de remplacer le high-low manquant par la valeur d’1 point.

     

    #141980

    Merci Nicolas. Je comprends, mais n’est-ce pas le même historique qui est utilisé par les backtests et par Proorder ?

    Pour info, le dernier arrêt du système (toujours pour données historiques insuffisantes) s’est produit cette nuit à 2h08, juste après un Marubozu haussier (2 bougies) sur l’EURUSD en M1. Celui-ci avait été détecté par le code suivant (mais je ne sais si le plantage est lié à cette détection ou s’il s’agit d’une coïncidence) :

    Seuls les prix d’ouverture et de cloture sont utilisés avec l’instruction Range en plus…

    #141984

    Donc la nuit il y a des bougies manquantes en effet, c’est une piste, cette bougie existe-t’elle ? Une image peut être ?

    #142001

    La bougie existe bien (cf. image en pièce jointe).

    Le souci, c’est que j’ai également des arrêts en pleine journée.

     

    #142044

    Pas glop tout ça :/

    Avant de passer au niveau supérieur de support (par l’envoi d’un ticket via la plateforme), je te conseille toutefois de vérifier si il ne peut y avoir, à aucun moment, une division par zéro dans tes calculs (dans la stratégie et dans l’indicateur). Même si le message d’erreur ne s’y rapporte pas, ça pourrait aider.

    #142050

    Merci Nicolas. Je vais passer l’ensemble du code en revue pour vérifier ce point. Je te tiens au courant 😉

    #142192

    Bonjour Nicolas,

    J’ai passé tout le code en revue : pas de division par zéro… Pour calculer la taille de position en fonction du niveau de Stop et du risque souhaité, je fais des divisions par PipSize et par PipValue. Est-il possible que ces deux grandeurs retournent zéro ?

    Je ne pense cependant pas que l’arrêt du système provienne de là, car il se produit également avant l’entrée en position (juste après la détection du pattern) et donc avant le calcul de la taille de position.

    Vraiment pas évident à trouver… Aurais-tu d’autres pistes d’investigation à me suggérer ? Merci !

    #142208

    Je serai ravi de t’aider davantage, mais sans avoir lu le code en entier, je ne vois rien à ajouter. Tu peux toutefois essayer de passer par le support via la plateforme, tu devrais obtenir une réponse. Tient nous au courant.

    #142608

    Bonjour Nicolas,

    Je suis toujours en attente d’une réponse à la demande que j’ai postée  via la plateforme. Je te tiens au courant dès que j’ai un retour…

    1 user thanked author for this post.
    #143031

    Bonjour Nicolas,

    Toujours pas de réponse du support Plateforme, mais mes investigations m’on conduit au constat suivant : il semble que les arrêts du programme soient liés à la présence d’une fonction Call toute simple (2 paramètres en entrée : Période de la moyenne mobile et indice de la bougie) pour identifier la tendance (voir code ci-dessous) :

    En supprimant cet appel dans le programme et en testant simplement directement dans le code, comme ci-dessous, le système ne semble plus planter

    Le problème est que de cette manière les performances de la stratégies sont sensiblement moins bonnes ??? Je ne vois vraiment pas pourquoi. Cela devrait revenir au même qu’avec la fonction Call…

    Si tu as un éclairage, ça serait top. Merci !

    #143368

    Bonjour à tous,

    Bien que je n’ai pas encore obtenu de réponse de la plateforme et si cela peut aider les uns ou les autres qui seraient confrontés à la même situation 😉 je confirme que c’est le simple appel à la fonction toute simple décrite plus haut, qui provoque systématiquement (tôt ou tard) l’arrêt du système via ProOrder.

    J’ignore la raison, mais pour ma part, j’ai contourné le problème en supprimant ce Call dans la stratégie et en codant directement dans le programme l’identification de la tendance…

    #143382

    Merci beaucoup pour le retour, désolé je n’avais pas vu ton message du 31 Août. Ta valeur “i”, quelle est sa valeur maximale quand tu CALL l’indicateur ?

    Mais je pense que ton problème vient sans aucun doute du CalculateOnLastBars qui n’est pas utile du tout au regard du code de l’indicateur et qui doit en effet posait un problème en lecture d’historique avec ProOrder.

    Je vais reboucler cette info pour analyser et éventuellement éviter ce genre de phénomène.

    Tu vois qu’avec un partage de code, on arrive à comprendre plus vite… Si tu vais partagé ce petit bout de code plus tôt, j’aurai immédiatement eu la puce à l’oreille avec ce defparam.. 🙂

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

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