Récupérer informations de bougies en particulier

Viewing 15 posts - 1 through 15 (of 26 total)
  • Author
    Posts
  • #163886 quote
    JiPaLou
    Participant
    New

    Bonjour,

    J’ai créé un indicateur qui me fait ressortir des bougies en particulier.

    J’ai également fait apparaitre sur ces bougies des infos : high/low/pips pour info et pcque j’en aurais besoin ultérieurement.

    Vous pouvez voir ça sur la capture d’écran en PJ, sur de l’AUDUSD.

    J’aimerais maintenant parcourir uniquement ces bougies là afin de savoir si le cours actuel se situe dans une de ces bougies, et récupérer les informations de celle ci… (sur la capture d’écran on veut donc récupérer les infos de la bougie à gauche, avec une flèche rouge)

    Dans le but de faire apparaitre ça dans l’affichage mais aussi de placer des ordres de manière automatique (ça c’est l’étape d’après)…

    Merci beaucoup de votre aide ! 🙂

    audusd.png audusd.png
    #163899 quote
    Nicolas
    Keymaster
    Master

    Je te suggère de remplir un tableau avec ces données puis de faire une boucle dans celles-ci pour vérifier ta condition.

    Par exemple, si ta condition pour garder en mémoire un high s’appelle “c1”, on remplit un nouveau tableau (variable) que j’ai appelé $ihigh, puis j’augmente la colonne du tableau et ainsi de suite, à la fin tu auras toutes ces infos à dispo quand tu veux dans ton code pour en faire ce que tu veux..

    if c1 then 
     $ihigh[index] = high
     index=index+1
    endif

    Pour récupérer la valeur qui se trouve dans les colonnes du tableau, procède comme ceci :

    for i = index downto 0 
     var = $ihigh[i] //valeur qui se trouve dans la colonne i 
     //je peux utiliser la variable var pour en faire ce que je veux ... 
    next
    JiPaLou thanked this post
    #163932 quote
    JiPaLou
    Participant
    New

    Top, merci bien, ca marche nickel en adaptant à mon code.

    Me reste maintenant à réussir à passer des ordres notamment.

    On peut passer de manière auto des Buy Stop & Sell Stop avec un Take Profit et un Stop Loss associé ?

    Et autre question : il y a une commande qui cloture tous les ordres ouverts ?

    #163939 quote
    Nicolas
    Keymaster
    Master

    On peut passer de manière auto des Buy Stop & Sell Stop avec un Take Profit et un Stop Loss associé ?

    Oui avec SET TARGET PROFIT et SET STOP LOSS

    il y a une commande qui cloture tous les ordres ouverts ?

    SELL pour les achats et EXITSHORT pour les VAD

    #163946 quote
    JiPaLou
    Participant
    New
    // LONG
    BUY 1 SHARE AT Haut LIMIT
    SET STOP %LOSS 1
    SET TARGET %PROFIT 1
    
    // SHORT
    SELLSHORT 1 SHARE AT Bas STOP
    SET STOP %LOSS 1
    SET TARGET %PROFIT 1

    Ca serait qqe chose comme ça ?

    Où “Haut” est le haut de la bougie et “Bas” le bas de la bougie

    Pcque visiblement ça donne pas gd chose, je ne vois pas de résultat dans le backtest… :/

     

    J’aurais aimé mettre une somme directement : SET STOP $LOSS 100 mais visiblement c’est interdit, ça empeche d’ouvrir plusieurs ordres en meme temps si c’est le cas

    #163949 quote
    Nicolas
    Keymaster
    Master

    L’instruction SET STOP $LOSS 100 n’est pas interdite 🙂

    Pour ouvrir plus d’un ordre la fois, il faudra ajouter cette ligne en tête de code :

    defparam cumulateorders=true

    Les variables Haut et Bas sont elles bien renseignées ?

    Attention également, les ordres conditionnels ne durent qu’une seule bougie, si les conditions sont toujours réunies, il faut les replacer encore et encore.

    JiPaLou thanked this post
    #163950 quote
    JiPaLou
    Participant
    New

    Merci, je vais creuser ça un peu plus 🙂

    #164221 quote
    JiPaLou
    Participant
    New

    J’ai l’impression que les SL/TP ne sont pas bien pris en compte car qd je regarde le détail les ordres d’entrée/sortie se font au même moment.

    La date et l’heure sont exactement identiques pour les ordres Achats Entry & Exit / Vente Entry & Exit …

    Mon code :

    defparam cumulateorders=true
    
    // Sauvegarde des donnés des bougies qui m'intéressent dans un Tableau
    if (high < high[1] and low > low[1]) or (abs(close-open)/close < 0.00125) then
    $Haut[index] = high
    $Bas[index] = low
    $Bar[index] = barindex
    index=index+1
    endif
    
    // Derniere bougie
    // => on parcourt le Tableau
    if(islastbarupdate) then
    for i = index downto 0
    Haut = $Haut[i]
    Bas = $Bas[i]
    Bar = $Bar[i]
    amplitude = (Haut - Bas) / pipsize
    age = barindex-Bar
    if close < Haut and close > Bas then
    // LONG
    BUY 1 SHARE AT Haut LIMIT
    SET STOP $LOSS 100
    SET TARGET $PROFIT 100
    // SHORT
    SELLSHORT 1 SHARE AT Bas STOP
    SET STOP $LOSS 100
    SET TARGET $PROFIT 100
    break
    endif
    next
    endif
    

    Les SL/TP sont ils bien positionnés comme ça ?

    Je voudrais :

    • un BUY STOP au niveau de ma variable HAUT avec TP +50€ et SL -50€
    • un SELL STOP au niveau de ma variable BAS avec TP -50€ et SL +50€

     

    Est-ce qu’il parcourt ce code uniquement en entrée de bougies ? Faut-il lui préciser qqe chose pour qu’il le parcourt régulièrement au sein d’une même bougie ?

     

    De plus, la sortie/annulation des ordres en cours est-elle automatique en changeant de bougie, ou faut-il prévoir qqe chose du style (pour du 4H) :

    // Sortie
    if (time=005900 or time=045900 or time=085900 or time=125900 or time=165900 or time=205900) AND onmarket then
    sell at market
    exitshort at market
    endif
    
    #164230 quote
    Nicolas
    Keymaster
    Master

    islastbarupdate n’est pas indispensable.

    Le résultat me semble correct, on replace des ordres conditionnels sans arrêt à chaque bougie, qu’on soit au marché au non. Si l’un des 2 ordres conditionnels est activé (le prix le touche), alors l’ordre contrarien est automatiquement fermé.

    Par ailleurs dans ta boucle, tu places l’ordre correspondant à la première condition trouvé, puis tu la quittes (break), donc tu utilises toujours la bougie la plus récente inscrite dans le tableau. Dans ce cas, un tableau était inutile, des variables simples auraient suffit.

    #164244 quote
    JiPaLou
    Participant
    New

    D’une maniere plus generale, comment fonctionne le code du Backtest ?

    Le code est parcouru à la fin de chaque bougie ? Et les actions de placement d’ordre sont exécutées à l’ouverture de la bougie suivante ?

    Si c’est bien le cas, alors est-il possible de parcourir ce code en cours de bougie ?

    #164246 quote
    Nicolas
    Keymaster
    Master

    Le code est parcouru à la fin de chaque bougie ? Et les actions de placement d’ordre sont exécutées à l’ouverture de la bougie suivante ?

    OUI

    voir ces exemples, on utilise un timeframe plus petit pour lire le code qui nous intéresse à la fermeture d’une bougie d’une UT inférieure (60 fois si on utilise le TF 1sec avec une stratégie basée en 1 minute par exemple)

    Echelle de temps multiples

    https://www.prorealcode.com/topics-tag/mtf/

    Première approche sur le multi timeframe avec ProRealTime

    #164311 quote
    turame
    Participant
    Master

    Je profit de ce sujet pour poser une question connexe. J’ai exactement le même code que celui de Nicolas, qui me permet de remplir un tableau de valeurs et de pouvoir piocher dedans. Le problème est que lorsque je lance la stratégie, elle s’arrête en cours de route en mettant un message d’erreur du genre : Le tableau ne peut pas contenir plus de 10.000 valeurs. Comment régler le problème ?

    Merci d’avance

    #164331 quote
    Nicolas
    Keymaster
    Master

    @turame

    Chaque tableau (variable) peut contenir 1.000.000 de valeurs/colonnes. Cette limite a été défini en fonction du maximum d’historique possible (1M d’unités). Je ne comprends pas le message d’erreur que tu obtiens, pourrais-tu me faire une copie d’écran stp ?

    #164342 quote
    turame
    Participant
    Master

    Voici la capture d’écran

    Capture-erreur.jpg Capture-erreur.jpg
    #164356 quote
    Nicolas
    Keymaster
    Master

    Ok donc bien plus de 1 million de valeurs ont été stockés dans 1 seul et même tableau, tu n’as plus qu’à trouver le moyen de le limiter 🙂 Soit tu utilises plusieurs variables, soit tu recommences à partir de zéro quand tu arrives à X colonnes dans le tableau, soit tu changes ta façon d’indexer tes valeurs dans ton tableau.

    Je ne connais pas ton projet, mais je ne pense pas que tu aies besoin de conserver toutes ces données constamment ?

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

Récupérer informations de bougies en particulier


ProOrder : Trading Automatique & Backtests

New Reply
Author
author-avatar
JiPaLou @jipalou Participant
Summary

This topic contains 25 replies,
has 3 voices, and was last updated by Nicolas
4 years, 11 months ago.

Topic Details
Forum: ProOrder : Trading Automatique & Backtests
Language: French
Started: 03/12/2021
Status: Active
Attachments: 2 files
Logo Logo
Loading...