Faisabilité de ce type d’automatisation ?

Viewing 15 posts - 1 through 15 (of 15 total)
  • Author
    Posts
  • #235834 quote
    MG22
    Participant
    New
    #235836 quote
    JS
    Participant
    Senior

    Bonjour,

    Essayez ceci…

    DefParam CumulateOrders=False
    
    //Timeframe(5 minutes)
    
    If OpenTime=090000 then
    TodayOpening=Close
    If (TodayOpening-PreviousPrice)/PreviousPrice*100>0.5 then
    Buy 1 contract at Market
    ElsIf (TodayOpening-PreviousPrice)/PreviousPrice*100<-0.5 then
    SellShort 1 contract at Market
    EndIf
    EndIf
    
    If OpenTime=100000 then
    PreviousPrice=CurrentPrice
    CurrentPrice=Close
    EndIf
    
    Set Stop pLoss 100
    Set Target pProfit 300
    Iván González thanked this post
    #235842 quote
    JS
    Participant
    Senior

    Éditer:

    « TodayOpening=Close » devrait être « TodayOpening=Open » (le « Open » à 09:00)

    « CurrentPrice=Close » devrait être « CurrentPrice=Open » (le « Open » à 10:00)

    #235843 quote
    MG22
    Participant
    New
    Un grand merci à toi @JS , je test cela dans la journée et te fais un retour !
    #235846 quote
    MG22
    Participant
    New
    <span class=”bbp-author-name”>JS</span> encore un grand merci car la base du code fonctionne, et j’ai des premier echantillons sur le probacktest. Par contre les entrées auto ne se font pas à l’endroit que j’aimerais. Actuellement avec le code l’entrée se fait à 9:05 donc fin de clôture de la bougie de 9:00 … j’aimerais pour ma part que l’entrée se fasse juste après 9:00 dès que le bot à pu calculer la variation. Un example visuel sera plus parlant je pense (piece jointe) :
    • Cloture de 10:00 le 25/07 se fait à 39856
    • Open de 9:00 le 26:07 se fait à 40082
    –>soit une variation de +0.56%, le bot doit donc long instantanement au marché avec 100pts de SL / 300pts de TP car nous sommes au dessus des 0.5% de variation demandée pour entrer en position.   PS : J’ai essayé le code avec et sans ton edit et je n’ai pas vu de difference dans les prises de positions sur le backtest
    #235856 quote
    JS
    Participant
    Senior

    Salut,

    Une position est ouverte « normalement », sur le « Ouvert » de la barre suivante (09:05), vous pouvez ajuster ce moment en utilisant « multi time (MTF) ». Vous pouvez alors effectuer le calcul dans un laps de temps de 5 minutes, et le placement des commandes dans un laps de temps de, par exemple, 1 minute. Une fois l’ordre exécuté, le « Stop Loss » et le « Take Profit » respectifs seront liés à l’ordre…

    Le graphique en question doit être ouvert dans le laps de temps le plus bas (ici 1 minute)…

    DefParam CumulateOrders=False
    
    Once Long=0
    Once Short=0
    
    Timeframe(5 minutes)
    If NOT OnMarket then
    Long=0
    Short=0
    EndIf
    
    If OpenTime=090000 then
    TodayOpening=Open
    If (TodayOpening-PreviousPrice)/PreviousPrice*100>0.5 then
    Long=1
    ElsIf (TodayOpening-PreviousPrice)/PreviousPrice*100<-0.5 then
    Short=1
    EndIf
    EndIf
    
    If OpenTime=100000 then
    PreviousPrice=CurrentPrice
    CurrentPrice=Open
    EndIf
    
    TimeFrame(1 minutes)
    If Long then
    Buy 1 contract at Market
    ElsIf Short then
    SellShort 1 contract at Market
    EndIf
    
    Set Stop pLoss 100
    Set Target pProfit 300
    #235858 quote
    MG22
    Participant
    New
    Malheureusement le code V2 ne fonctionne pas, j’ai un message d’erreur en me mettant sur une chart 1 minute. Penses-tu qu’il existe un moyen de rentrer vraiment à l’open de 9:00 (dès l’apparition de la candle) sans attendre la cloture M1 ?  Mes datas sont faites sur une entrée precise à 9:00 et non à 9:01. Je vais tenter de mailer le support prorealcode pour voir ce qu’ils en disent également. En tout cas merci bcp pour tes retours JS
    #235860 quote
    robertogozzi
    Moderator
    Master
    Vous ne pouvez pas utiliser le même nom de variable dans des périodes différentes. Commentez ou supprimez les lignes 3 et 4.
    #235862 quote
    JS
    Participant
    Senior

    L’algo fonctionne bien ici, quel type de message d’erreur obtenez-vous ?

    Comme le calcul a lieu à 09h00 (Open), votre position ne peut jamais être ouverte exactement à 09h00 …

    #235864 quote
    MG22
    Participant
    New
    Ok je vais tenter en supprimant les lignes 3/4.  Oui je conçois que l’open de 9:00 donne l’information pour le calcul et ensuite la prise de decision, rentrer 10/20 secondes après 9:00 serait possible ? Voici le message que j’obtiens :
    #235866 quote
    JS
    Participant
    Senior

    Vous pouvez réduire le délai de la « seconde » à au moins 1 seconde, mais cela affectera la quantité de données « backtest » que vous pouvez utiliser…

    Par exemple, si vous souhaitez utiliser 10 secondes, remplacez la deuxième période par 10 secondes… « TimeFrame (10 seconds) »

    #236031 quote
    MG22
    Participant
    New
    bonjour JS, effectivement en 10 seconds j’ai beaucoup moins d’occurences sur le graphique. (mais ce sera plus proche des datas que j’ai relevé manuellement). Pour faire fonctionner le code V2 je suis obligé d’effacer la ligne 6 pour qu’il fonctionne, cela n’a pas d’incidence sur le reste ?   Car j’ai observé des erreurs de calcul de variation, certaines fois le robot à une variation inferieur a -0.5 donc devrait short mais il prend un long. Peut-etre est-ce du au fait que j’ai effacé la ligne 6 :  Timeframe(5 minutes) En supprimant la ligne 3/4 comme indiqué plus haut le code ne voulais pas se lancer sur mon prorealtime. Belle soirée à toi Ps: j’ai egalement demandé de l’aide sur le forum anglais pour avoir un 2nd avis, je te tiendrai informé du résultat
    #236039 quote
    JS
    Participant
    Senior
    Salut, Par exemple, lorsque vous travaillez avec la version « Complete » de PRT, vous disposez d’un maximum de 200 000 unités de données historiques (données BackTest)… 200 000 * 10 s = 2 000 000 / (60 * 60 * 24) = 23 jours (Les données du BackTest dépendent de la période chronologique) Le code ci-dessous a été testé sur 200 kUnités…
    DefParam CumulateOrders=False
    
    Timeframe(5 minutes)
    
    If NOT OnMarket then
    Long=0
    Short=0
    EndIf
    
    If OpenTime=090000 then
    TodayOpening=Open
    If (TodayOpening-PreviousPrice)/PreviousPrice*100>0.5 then
    Long=1
    ElsIf (TodayOpening-PreviousPrice)/PreviousPrice*100<-0.5 then
    Short=1
    EndIf
    EndIf
    
    If OpenTime=100000 then
    PreviousPrice=CurrentPrice
    CurrentPrice=Open
    EndIf
    
    TimeFrame(10 seconds)
    If Long then
    Buy 1 contract at Market
    ElsIf Short then
    SellShort 1 contract at Market
    EndIf
    
    Set Stop pLoss 100
    Set Target pProfit 300
    
    #236060 quote
    MG22
    Participant
    New
    Encore merci pour ton temps JS. c’est vraiment très gentil ! Oui j’ai bien la version complete / Premium de ProRealtime avec 1M de données historique sur mon broker (SAXO). Je viens de tester le code V3 sur un graphique 10secondes, il semble bien fonctionner mise à part le fait que l’entrée en position se fasse à 9:05 (au lieu de 9:00:10 souhaité) Bien à toi
    #236062 quote
    JS
    Participant
    Senior

    Salut,

    Dans le code/backtest montré, toutes les positions ont été ouvertes à 09:00:10 … ?

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

Faisabilité de ce type d’automatisation ?


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
author-avatar
MG22 @mg22 Participant
Summary

This topic contains 14 replies,
has 3 voices, and was last updated by JS
1 year, 6 months ago.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 07/27/2024
Status: Active
Attachments: 6 files
Logo Logo
Loading...