Echelle de temps multiples

Viewing 14 posts - 1 through 14 (of 14 total)
  • Author
    Posts
  • #82036 quote
    Trendbyme
    Participant
    Junior

    Bonjour,

    Je souhaiterais introduire dans un Pr0Order des conditions multiples incluant des échelles de temps différentes

    Dans l’exemple ci-dessous je voudrais par exemple que l’indicateur1 soit à 5minutes, puis faisant partie de la même condition d’achat que l’indicateur2 soit à 10minutes…

    // Conditions pour ouvrir une position acheteuse

    c1 = (close >= close)

    indicator1 = MACD[9,26,12](close) =>10mn

    indicator2 = MACD[9,26,12](close) =>5mn

    c2 = (indicator1 > 0) & (indicator2 > 0)

    Auriez-vous une idée pour écrire cela ?

    Merci

    Stéphane

    #82039 quote
    Nicolas
    Keymaster
    Master

    Cela ressemble beaucoup à ce que j’ai posté ici: https://www.prorealcode.com/topic/ouverture-immediate-position/#post-81939  (pour référence)

    Mais aurait besoin de quelques adaptations :

    defparam cumulateorders=false
    
    timeframe(10 minutes,updateonclose)
    macd10 = MACD[12,26,9](close)
    
    timeframe(5 minutes,updateonclose) //or timeframe(default) on a 5 minutes TF
    macd5 = MACD[12,26,9](close)
    
    condition = macd10>0 and macd5>0
    
    if not longonmarket and condition then
     buy at market
    endif
    #82346 quote
    Trendbyme
    Participant
    Junior

    Bonjour Nicolas,

    Merci de cette réponse. J’obtiens

    DEFPARAM CumulateOrders = False // Cumul des positions désactivé
    
    // Conditions pour ouvrir une position acheteuse
    TIMEFRAME(1 Minute,updateonclose)
    indicator1, ignored, ignored, indicator2 = CALL "INDICATEUR HG"
    c1 = (indicator1 > indicator2)
    
    TIMEFRAME(2 Minute,updateonclose)
    indicator1, ignored, ignored, indicator2 = CALL "INDICATEUR HG"
    c2 = (indicator1 > indicator2)
    
    IF c1 and c2 THEN
    BUY 4 SHARES AT MARKET
    ENDIF
    
    // Conditions pour fermer une position acheteuse
    indicator3, ignored, ignored, ignored = CALL "INDICATEUR HG"
    c1 = (indicator3 < 0)
    
    IF c1 THEN
    SELL AT MARKET
    ENDIF

     

    Mais au lancement j’ai un message d’erreur qui m’indique “Tous les Timeframes appelés dans le code doivent être dans la même base que celle de l’unité de temps du graphique (temps, xvolume ou xticks)

    Ce qui n’est pas par définition possible si mon objectif est de déclencher un ordre à la validation conditionnelle d’un même siganl portant sur 2 ou N échelle de temps.

    Auriez-vous un éclairage supplémentaire ?

    Merci.

    #82348 quote
    Trendbyme
    Participant
    Junior

    Re-bonjour,

    Je modifie mon code après avoir trouvé le topic sur le  “Timeframe” avec la fonction “Timeframe (default” mais cela ne change pas mon message d’erreur

    “Tous les Timeframes appelés dans le code doivent être dans la même base que celle de l’unité de temps du graphique (temps, xvolume ou xticks)

    Une aide est donc toujours espérée… merci 🙂

    // Définition des paramètres du code
    DEFPARAM CumulateOrders = False // Cumul des positions désactivé
    
    // Conditions pour ouvrir une position acheteuse
    TIMEFRAME(1 Minute,updateonclose)
    indicator1, ignored, ignored, indicator2 = CALL "INDICATEUR HG"
    c1 = (indicator1 > indicator2)
    
    timeframe(default)
    indicator1, ignored, ignored, indicator2 = CALL "INDICATEUR HG"
    c2 = (indicator1 > indicator2)
    
    IF c1 and c2 THEN
    BUY 4 SHARES AT MARKET
    ENDIF
    
    // Conditions pour fermer une position acheteuse
    indicator3, ignored, ignored, ignored = CALL "INDICATEUR HG"
    c1 = (indicator3 < 0)
    
    IF c1 THEN
    SELL AT MARKET
    ENDIF
    #82372 quote
    Nicolas
    Keymaster
    Master

    Merci d’utiliser le bouton “insert PRT code” pour poster du code dans le corps d’un message.

    En effet, il faut que le timeframe “1 minute”, soit un timeframe multiple de celui qui est utilisé pour lancer la stratégie (le timeframe “default”).

    Par ailleurs on ne peut pas mélanger les timeframes en volumes/ticks avec des unités de temps en “vrai” temps: 1min, 15 minutes, etc..

    #82390 quote
    schneiderj
    Participant
    Average

    Bonjour,

     

    je me permet de venir poster dans ce message car j’ai exactement le même problème.

    Je définis 2 indicateurs avec une échelle 1 heure et 10 mn. L’échelle de base est la minute (celle du graphique avec les cours). J’achète sur la base de ces trois indicateurs, puis je vérifie que la position est gagnante avec une échelle de 15 secondes, ce qui donne ceci en abrégée:

    // Définition des paramètres du code
    DEFPARAM CumulateOrders = False // Cumul des positions désactivé
    
    timeframe(1 hour, updateonclose)
    Once MoyenneFlag1H = 0
    ...
    
    timeframe(10 Minute, updateonclose)
    Once MoyenneFlag10mn = 0
    ...
    
    timeframe(default)
    Once MoyenneFlag1mn = 0
    
    // Passage d'un ordre long
    Once NbreContrat = 2
    Once Contrat = 0
    Once CoursMax = 0
    
    if MoyenneFlag1H > 0 Then
    if MoyenneFlag10mn > 0 Then
    if MoyenneFlag1mn = 1 Then
    Buy NbreContrat Contract at Market
    Contrat = 1
    CoursMax = TradePrice
    EndIf
    EndIf
    EndIf
    
    // Nous avons un contrat long, recherche d'un retournement pour vendre
    TimeFrame(15 second)
    Once PerteRelative = PerteMax/(NbreContrat * 10000)
    
    If Contrat = 1 Then
    If Close > CoursMax Then
    CoursMax = Close
    ElsIf CoursMax < Close Then
    If Close < (CoursMax * PerteRelative) Then
    Sell at Market
    EndIf
    Endif
    EndIf
    

    Le problème doit donc venir du timeframe 15 secondes. Est-il possible d’éviter cette contrainte ?

     

    Merci

    #82422 quote
    Nicolas
    Keymaster
    Master

    Le timeframe qui cadence la lecture du code est toujours celui le plus petit, donc le 15 secondes dans ce dernier cas. Donc le timeframe default est le 15 secondes et c’est sur cette unité de temps que la stratégie doit être backtesté / tradé. 1 minute étant un multiple de 15 secondes, il ne devrait donc ne plus y avoir de problème.

    #82443 quote
    schneiderj
    Participant
    Average

    Je te remercie pour ta réponse. Si je comprends bien l’unité par défaut doit donc être l’unité (de temps par exemple) la plus petite et les autres des multiples de cette unité.

    Donc si par hazard je prenais une utilité de base égale à 25 secondes (!!), je ne pourrait pas avoir un timeframe sur une minute. Est-ce correcte ?

    #82468 quote
    Nicolas
    Keymaster
    Master

    Tu as bien compris le principe. Mais 15 secondes <-> 1 minute est bien possible, puisque 60/15 = 4, un multiple entier.

    #82473 quote
    schneiderj
    Participant
    Average

    Merci

    #203861 quote
    julian_hdp
    Participant
    New

    Bonjour,

    Savez-vous si depuis 2018 on peut maintenant mélanger les unités de temps conventionnelles et les ticks?

    Par ailleurs, savez-vous si nous pourrons prochainement utiliser proorder en ticks? Ce serait un vrai plus pour les systèmes automatiques.

    Merci.

    #203864 quote
    Nicolas
    Keymaster
    Master

    Non, il n’est pas possible d’utiliser les UT en ticks dans ProOrder, il n’y a par ailleurs pas de projet à ce propos, désolé.

    julian_hdp thanked this post
    #203867 quote
    julian_hdp
    Participant
    New

    OK, c’est bien dommage, j’imagine que cela intéresserait nombre de scalper!

    #203868 quote
    Nicolas
    Keymaster
    Master

    copier/coller d’une réponse récente que j’ai faite à ce sujet:

    Je suis désolé mais il n’y a aucune évolution prévue pour cela. Déjà évoqué ici et là sur le forum, le problème principal est la reproductibilité des graphiques, en effet les représentations en ticks n’étant pas ‘officiel’, c’est à dire non distribué par le courtier et généré à la volée par la plateforme, selon votre choix de X ticks. Pour mémoire on peut très bien créé des graphiques en 26 ticks par exemples ou en 133, peu importe, c’est une liberté incroyable offerte par la plateforme.

    Mais gérer l’ensemble de ces graphiques “personnels” sur les serveurs ProOrder nécessiterait de stocker ces données pour les milliers d’utilisateurs qui utilisent le trading automatique, c’est énorme. Sans compter les éventuels soucis de reproductibilité entre vos graphiques sur votre ordinateur et ceux qui seraient créé sur des serveurs distants. Puisqu’il ne s’agit de graphiques non officiel, quid des éventuels problèmes de trading rencontrés ? Bref, ce serait très compliqué pour un utilisateur qui veut savoir pourquoi la bougie de 13:42:12s sur son graphique GMT+4 en 208 ticks n’a pas provoqué un ordre chez son courtier alors que son BT lui indique que c’est bien le cas.

    Trading automatique sur des graphiques en ticks

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

Echelle de temps multiples


ProOrder : Trading Automatique & Backtests

New Reply
Author
author-avatar
Trendbyme @morecash Participant
Summary

This topic contains 13 replies,
has 2 voices, and was last updated by Nicolas
3 years, 2 months ago.

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