Erreur ProOrder au lancement: un indicateur utilisé manque d’historique

Viewing 15 posts - 1 through 15 (of 17 total)
  • Author
    Posts
  • #72962 quote
    Lorenzo47
    Participant
    Average

    Bonjour à tous,

    Comme me l’a conseillé Nicolas hier soir, j’ouvre aujourd’hui un nouveau sujet à propos d’un message d’erreur lorsque j’essaie de lancer un algorithme en réel. J’ai en réalité 2 algorithmes complémentaires qui doivent se synchroniser via un indicateur ProBuilder qui simule les prises de position du premier algortihme (code principal).

    Voilà le message d’erreur affiché par ProOrder quelques secondes après que j’ai mis en marche mon code :
    “Votre système de trading a été arrêté car au moins un indicateur utilisé manque d’historique pour être calculé. Merci d’augmenter la quantité d’historique pré-chargée au démarrage du système en utilisant l’instruction DEFPARAM (ex : DEFPARAM Preloadbars = 2000).”

    Très bien, seulement dans mon code je n’appelle jamais plus de quelques barres d’historique (20 exactement pour l’HistoricVolatility dans le code ProBuilder) or, j’ai une ligne DEFPARAM PRELOADBARS = 1000 qui devrait être largement suffisante… De plus à l’affichage de ce message d’erreur j’ai bien évidemment essayer de modifier le nombre de barres à précharger (jusqu’à plusieurs milliers) mais cela n’a rien changé.

    Je ne comprends pas ce qui pose problème surtout que je n’ai aucun problème en Backtest. Pourquoi ? Pour moi, de mon côté, tout fonctionne exactement comme je l’ai codé en BackTest sauf que je ne peux pas le lancer sur le marché.. Un peu frustrant (rire).

    Si quelqu’un pouvait m’éclairer et me permettre de lancer cette stratégie cela serait génial!

    Merci par avance pour votre temps passé sur nos questions qui parfois, faut il l’avouer, ne nécessitent qu’un peu de bon sens et d’observations.

    PS : Je vous joins aussi l’indicateur ProBuilder que j’ai crée pour simuler le code principal bien qu’il ne soit surement pas d’un grand intérêt car, comme je l’ai déjà stipulé plus haut, il n’appelle pas plus de 20 d’historique. Mais tout est là. Encore merci pour votre aide.

     

    // Defparam
    DEFPARAM CumulateOrders = false
    DEFPARAM PRELOADBARS = 1000
    
    // Targets and stop
    TPMain = 0.0006
    SLMain = 50
    TP = ((SLMain-0.5)-(10000*PendingLevel))
    
    // Settings
    PSize = 1
    PendingLevel = 0.0025
    LevelExit = 0.0005
    
    // Indicator
    myLong, myShort = CALL "Indicator"(close)
    
    // If still on market after Main's exit
    IF OnMarket THEN
    
    // Main's long
    IF ShortOnMarket AND (myLong = 0) AND (myLong[1] <> 0) THEN
    EXITSHORT AT MARKET
    ENDIF
    
    // Main's short
    IF LongOnMarket AND (myShort = 0) AND (myShort[1] <> 0) THEN
    SELL AT MARKET
    ENDIF
    ENDIF
    
    // Do not allow to take position after SLMain exit
    IF NOT OnMarket AND OnMarket[1] THEN
    
    IF ShortOnMarket[1] AND Low[1] < (x - (SLMain/10000)) THEN
    ENDIF
    
    IF LongOnMarket[1] AND High[1] > (y - (SLMain/10000)) THEN
    ENDIF
    
    ELSE
    // Long
    IF Not OnMarket AND (myLong <> 0) AND High < (myLong + TPMain) THEN
    SELLSHORT PSize CONTRACTS AT (myLong - PendingLevel) Stop
    x = myLong
    ENDIF
    
    // Short
    IF Not OnMarket AND (myShort <> 0) AND Low > (myShort - TPMain) THEN
    BUY PSize CONTRACTS AT (myShort + PendingLevel) Stop
    y = myShort
    ENDIF
    
    IF OnMarket THEN
    
    // Long closing
    IF ShortOnMarket THEN
    EXITSHORT AT (x - LevelExit) stop
    
    // Long agressive sellshort
    IF (High[1] < (x + TPMain)) THEN
    SELLSHORT PSize CONTRACTS AT (myLong - PendingLevel) Stop
    ENDIF
    
    ENDIF
    
    // // Short closing
    IF LongOnMarket THEN
    SELL AT (y + LevelExit) stop
    
    // Short agressive buy
    IF (Low[1] > (y - TPMain)) THEN
    BUY PSize CONTRACTS AT (myShort + PendingLevel) Stop
    ENDIF
    ENDIF
    ENDIF
    ENDIF
    
    // Set TP
    SET TARGET pPROFIT TP
    
    // Main's target and stop
    TPMain = 0.0006
    SLMain = 0.0050
    
    // Settings
    MyVolat = 0.08
    Spread = 0.00003
    SwitchOn = 095000
    SwitchOff = 180000
    
    // Indicators settings
    ParabolicSAR = SAR[0.02,0.02,0.2]
    MyVolatility20 = HistoricVolatility[20]
    
    // Conditons to start
    VolatilityConditions = (MyVolatility20[1] > MyVolat)
    TradingTimes = Time > SwitchOff OR Time < SwitchOn
    
    IF VolatilityConditions THEN
    allows = 1
    ELSE
    allows = 0
    ENDIF
    
    IF (x <> 0) OR (y <> 0) THEN
    
    // Long loop
    IF (x <> 0) THEN
    IF (High[1] > (x + TPMain + Spread)) THEN
    x = 0
    
    
    // Agressive opening
    TradingTimes = Time > SwitchOff OR Time < SwitchOn
    
    IF TradingTimes THEN
    x = 0
    y = 0
    
    ELSE
    IF allows THEN
    
    // Long agressive opening
    c1 = (ParabolicSAR[1] > High[1])
    c2 = (High > (ParabolicSAR[1]-Spread))
    
    IF c1 AND c2 THEN
    x = ParabolicSAR[1]
    ENDIF
    
    // Short agressive opening
    c3 = (ParabolicSAR[1] < Low[1])
    c4 = (Low < (ParabolicSAR[1]+Spread))
    
    IF c3 AND c4 THEN
    y = ParabolicSAR[1]
    ENDIF
    ENDIF
    ENDIF
    
    ELSE
    y = 0
    ENDIF
    
    ELSE
    IF (High[1] > (y + SLMain)) THEN
    x = 0
    y = 0
    ENDIF
    ENDIF
    
    // Short loop
    IF (y <> 0) THEN
    IF (Low[1] < (y - TPMain - Spread)) THEN
    y = 0
    
    // Agressive opening
    TradingTimes = Time > SwitchOff OR Time < SwitchOn
    
    IF TradingTimes THEN
    x = 0
    y = 0
    
    ELSE
    IF allows THEN
    
    // Long agressive opening
    c1 = (ParabolicSAR[1] > High[1])
    c2 = (High > (ParabolicSAR[1]-Spread))
    
    IF c1 AND c2 THEN
    x = ParabolicSAR[1]
    ENDIF
    
    // Short agressive opening
    c3 = (ParabolicSAR[1] < Low[1])
    c4 = (Low < (ParabolicSAR[1]+Spread))
    
    IF c3 AND c4 THEN
    y = ParabolicSAR[1]
    ENDIF
    ENDIF
    ENDIF
    
    ELSE
    x = 0
    ENDIF
    
    ELSE
    IF (Low[1] < (x - SLMain)) THEN
    x = 0
    y = 0
    ENDIF
    ENDIF
    
    ELSE
    
    IF TradingTimes THEN
    x = 0
    y = 0
    
    ELSE
    IF allows THEN
    
    // Long opening
    c1 = (ParabolicSAR[1] > High[1])
    c2 = (High > (ParabolicSAR[1]-Spread))
    
    IF c1 AND c2 THEN
    x = ParabolicSAR[1]
    ENDIF
    
    // Short opening
    c3 = (ParabolicSAR[1] < Low[1])
    c4 = (Low < (ParabolicSAR[1]+Spread))
    
    IF c3 AND c4 THEN
    y = ParabolicSAR[1]
    ENDIF
    ENDIF
    ENDIF
    ENDIF
    
    RETURN x as "Long", y as "Short"
    #72963 quote
    Nicolas
    Keymaster
    Master

    Test rapide à faire, avant d’aller plus loin:

    1. remplacer HistoricVolatility par un autre indicateur lambda (juste pour “voir”)
    2. faire un defparam preloadbars=0, même si cela paraît étrange 🙂
    #73012 quote
    Lorenzo47
    Participant
    Average

    Merci @Nicolas pour cette réponse rapide. Je viens de tester en remplacent la volatilité par un RSI[14] qui doit être supérieur à 0 pour démarrer le trading, avec DEFPARAM PreLoadBars = 0  mais sans succès. J’ai la toujours la même erreur…

    Ça ne m’étonne pas trop mais je suis curieux de connaître ton avis sur ce résultat. 🙂

    #73026 quote
    Nicolas
    Keymaster
    Master

    Ok, PRT-CFD/IG ou PRT software ? Le problème est apparu quand ?

    #73027 quote
    Lorenzo47
    Participant
    Average

    @Nicolas

    Je suis avec PRT-CFD chez IG. Le problème vient d’apparaître car ce code est mon “petit dernier” que je comptais bien tester cette semaine en réel avec 1 mini contrat.

    #73028 quote
    Nicolas
    Keymaster
    Master

    Bon, j’ai écarté tout ce à quoi je pouvais penser comme potentiel problème “invisible”.. Il faudrait lancer un ticket support sous la plateforme (CTRL+M) et mettre en référence ce topic. Merci.

    Lorenzo47 thanked this post
    #73029 quote
    Lorenzo47
    Participant
    Average

    @Nicolas

    D’accord, donc si je comprends bien, le problème ne vient donc pas de mon code ? En tout cas pas de quelque chose qui dépend de moi ?

    Je vais donc faire ça, et je te tiendrais informé des avancées en espérant en avoir rapidement… J’ai hâte de voir ce code tourner en réel 🙂

    Merci pour tout, c’est toujours génial de pouvoir compter sur toi ou sur la communauté de ce forum en général! Bonne soirée ou journée en fonction de l’endroit où tu te trouves 🙂

    #73030 quote
    Lorenzo47
    Participant
    Average

    @Nicolas, j’ai oublié de te demander, mais peut-être pourrais tu si tu en as le temps, essayer de faire tourner ces codes chez toi en démo et me dire si ils marchent en attendant la réponse de PRT que je viens de contacter via la plateforme. Même si je ne vois pas pourquoi cela fonctionnerai mieux…

    #73088 quote
    Nicolas
    Keymaster
    Master

    J’ai oublié de demander, sur quel instrument et unité de temps est lancé le programme ?

    #73091 quote
    Lorenzo47
    Participant
    Average

    Très honnêtement, je ne suis pas encore sûr du TimeFrame pour l’instant.. Il est toujours en période de test pour savoir où j’obtient les meilleurs résultats. Mais en ce qui concerne le problème lui-même j’ai testé presque toutes les périodes et le problème reste identiques : à l’ouverture de la bougie où le code doit démarrer il est presque instantanément bloqué. (J’ai testé 1s, 1min, 10min, 1H, 2H, 4H)

    Pour l’instrument je l’ai prévu pour de l’Euro/USD  (en fonction des résultats je pourrais éventuellement adapter de futurs versions pour d’autres instruments)

    #74740 quote
    Lorenzo47
    Participant
    Average

    Bonjour @Nicolas,

    Cela fait maintenant plus de 2 semaines que j’ai contacté PRT, mais à part IG m’ayant informé qu’ils avaient transmis le code aux développeurs je n’ai aucune nouvelle supplémentaire… J’avoue être un peu impatient de pouvoir tester ce code et le faire évoluer afin de l’optimiser au maximum, chose qui nous passionne tous plus ou moins je suppose 🙂

    En sais tu plus sur les délais habituels car cela m’inquiète un peu ?

    #74744 quote
    Nicolas
    Keymaster
    Master

    J’essai d’obtenir des infos et je reviens dés que possible.

    #75098 quote
    Lorenzo47
    Participant
    Average

    @Nicolas

    D’accord, c’est très gentil merci beaucoup.

    #76082 quote
    Lorenzo47
    Participant
    Average

    Bonjour @nicolas,

    J’ai reçu ce matin la réponse de PRT m’indiquant sans grande précision que le problème ne pourrait être résolu avant la prochaine MAJ prévue pour Septembre 2018. Je trouve cette réponse non satisfaisante et relativement cavalière, d’autant plus qu’il aura fallu les relancer 3 fois, attendre plus d’un mois pour obtenir une “non-réponse”. En fait il me confirme la  fiabilité “relative” de ProRealTime, en effet je conçois un code, j’y passe du temps pour le résultat suivant : mes positions gagnantes en Backtest ne peuvent être prise en réel à cause d’un bug ProRealTime.

    Évoluant dans un monde financier sérieux et étant partenaire d’IG.com, j’attendais de leur part une attitude plus professionnelle à savoir soit une solution alternative, soit la reconnaissance de mon travail car si j’ai bel et bien mis le doigt sur un bug qui les aidera à améliorer leur plateforme ils pourraient faire comme Apple qui rémunère de manière importante les personnes les aidant à détecter les failles de leur OS pour les corriger car eux ont compris que pour tout logiciel ou code la fiabilité, et donc la crédibilité, est la chose la plus importante.

    En résumé je trouve que face à cette situation ProRealTime n’est pas à la hauteur de ses concurrents, qu’il me prive de gains potentiels significatifs et que dans le milieu de la finance et du trading où la priorité est d’être réactif face aux enjeux financiers importants. Malgré qu’il présente une interface et des fonctions simpliés très prometteuses, Prorealtime a encore beaucoup de chemin à parcourir avant d’être reconnu comme un logiciel professionnel de référence et fiable à toute épreuve.

    Si tu as le moyen de leur faire parvenir ce message, je t’en serais très reconnaissant car je n’ai aucun moyen de les contacter directement. Je crois beaucoup en ProRealTime, mai je trouve leur réaction légère face à ce bug. J’en viens à douter de la confiance que l’on peut accorder à une plateforme sur laquelle nous investissons nos fonds en réel alors qu’ils ne sont pas capable de fournir ne serait-ce qu’une simple explication lorsqu’un bug dont ils sont pleinement responsables apparaît. Que ce serait-il passé si ce bug été apparu durant un trade et qu’une somme importante avait été perdue ?

    En tout cas merci pour le temps et l’intérêt que tu as consacré à ce sujet, et à m’aiguiller dans les procédures.

    Amitiés

    Lorenzo

    #112547 quote
    Edmond
    Participant
    Veteran

    Bonjour,

    Sait-on s’il y a eu des évolutions sur ce genre de soucis?

    J’ai moi aussi des erreurs de ce type pour 3 systèmes qui marchaient bien jusqu’à ce que j’y ajoute des filtres tels que le repulse ou l’adx sur l’ut principale de ces stratégies (5min), mais aussi en multitimeframe sur plusieurs ut différentes. J’ai aussi ce type de filtres sur d’autres stratégies sans que cela pose problème.

    La V11 notamment permettra-t-elle d’augmenter la quantité d’historique préchargée ?

Viewing 15 posts - 1 through 15 (of 17 total)
  • You must be logged in to reply to this topic.

Erreur ProOrder au lancement: un indicateur utilisé manque d’historique


ProOrder : Trading Automatique & Backtests

New Reply
Author
author-avatar
Lorenzo47 @lorenzo47 Participant
Summary

This topic contains 16 replies,
has 3 voices, and was last updated by Edmond
6 years, 4 months ago.

Topic Details
Forum: ProOrder : Trading Automatique & Backtests
Language: French
Started: 06/12/2018
Status: Active
Attachments: No files
Logo Logo
Loading...