Probleme instruction Time en daily ?

Viewing 7 posts - 1 through 7 (of 7 total)
  • Author
    Posts
  • #219913 quote
    zilliq
    Participant
    Master

    Bonjour à tous,

    Avez vous connaissance d’un problème avec l’instruction TIME lorsque l’on fait un backtest en daily ?

    En effet, pour l’exemple, si je lance le code suivant sur Dax 1 heure il fonctionne parfaitement, mais si je suis en jour, il me renvoie zero. Je pense que cela a à voir avec le mode tick qui ne veut pas fonctionner

    Mais avez vous également ce problème ?

    Merci d’avance et bonne journée

    Zilliq

    // Définition des paramètres du code
    DEFPARAM CumulateOrders = False // Cumul des positions désactivé
    // Annule tous les ordres en attente et ferme toutes les positions à 0:00, puis empêche toute création d'ordre avant l'heure "FLATBEFORE".
    DEFPARAM FLATBEFORE = 090000
    // Annule tous les ordres en attente et ferme toutes les positions à l'heure "FLATAFTER"
    DEFPARAM FLATAFTER = 171500
    
    // Empêche le système de placer des ordres pour entrer sur le marché ou augmenter la taille d'une position avant l'heure spécifiée
    noEntryBeforeTime = 090000
    timeEnterBefore = time >= noEntryBeforeTime
    
    // Empêche le système de placer des ordres pour entrer sur le marché ou augmenter la taille d'une position après l'heure spécifiée
    noEntryAfterTime = 171500
    timeEnterAfter = time < noEntryAfterTime
    
    // Empêche le système de placer de nouveaux ordres sur les jours de la semaine spécifiés
    daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
    
    // Conditions pour ouvrir une position acheteuse
    c1 = (rsi[14] crosses over 50)
    
    IF c1 AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry THEN
    BUY 1 SHARES AT MARKET
    ENDIF
    
    // Conditions pour fermer une position acheteuse
    c2 = (rsi[14] crosses under 50)
    
    IF c2 THEN
    SELL AT MARKET
    ENDIF
    
    #219933 quote
    Nicolas
    Keymaster
    Master

    Le code est lu une seule fois à la clôture, donc on ne peut pas tester les conditions horaires que tu as codé.

    #219934 quote
    zilliq
    Participant
    Master

    Merci Nicolas

    Par contre comment cela à la cloture, car ce sont des conditions d’ouverture d’un trade ?

    Zilliq

    #219938 quote
    Nicolas
    Keymaster
    Master

    Je ne comprends pas la question venant de ta part 🙂

    On ne peut pas tester des conditions intraday dans un timeframe daily. C’est comme si sur un TF 5-minutes, on voulait tester des conditions à la seconde près (chose possible en utilisant le multi timeframe toutefois, mais c’est pas le sujet).

    Comme tu le sais, le code est lu une seule fois à la clôture de bougie et l’ordre envoyé à l’Open suivant. Donc à la clôture de bougie, on ne peut pas tester “timeEnterBefore AND timeEnterAfter”, puisque ces conditions se sont déroulés dans la bougie et donc dans le passé.

    #219943 quote
    zilliq
    Participant
    Master

    Merci Nicolas,

    Effectivement je ne me souvenais plus que malheureusement les conditions n’étaient testées qu’en fin de journée en daily

    C’est quand même dommage que cela ne soit pas testé en journée, à moins de passer en UT inférieure, mais avec des indicateurs sur une UT daily

    Passe une très bonne fin de journée

    #219995 quote
    Nicolas
    Keymaster
    Master

    Voici le code de la stratégie qui utilise le timeframe daily pour ta condition sur le RSI avec prise de position dans la bougie (et donc sans l’information définitive que le RSI aura bien croisé à la fin de journée).

    Tu peux tester cette stratégie dans tous les timeframes qu’il te plaira 🙂 Tu testeras si le RSI[14] a croisé le niveau 50, jusqu’à 86400 fois avec le timeframe 1 seconde.

    // Définition des paramètres du code
    DEFPARAM CumulateOrders = False // Cumul des positions désactivé
    // Annule tous les ordres en attente et ferme toutes les positions à 0:00, puis empêche toute création d'ordre avant l'heure "FLATBEFORE".
    DEFPARAM FLATBEFORE = 090000
    // Annule tous les ordres en attente et ferme toutes les positions à l'heure "FLATAFTER"
    DEFPARAM FLATAFTER = 171500
    
    timeframe(daily)
    irsi = rsi[14]
    
    timeframe(default)
    // Empêche le système de placer des ordres pour entrer sur le marché ou augmenter la taille d'une position avant l'heure spécifiée
    noEntryBeforeTime = 090000
    timeEnterBefore = time >= noEntryBeforeTime
    
    // Empêche le système de placer des ordres pour entrer sur le marché ou augmenter la taille d'une position après l'heure spécifiée
    noEntryAfterTime = 171500
    timeEnterAfter = time < noEntryAfterTime
    
    // Empêche le système de placer de nouveaux ordres sur les jours de la semaine spécifiés
    daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
    
    // Conditions pour ouvrir une position acheteuse
    c1 = (irsi crosses over 50)
    
    IF c1 AND timeEnterBefore AND timeEnterAfter AND not daysForbiddenEntry THEN
    BUY 1 SHARES AT MARKET
    ENDIF
    
    // Conditions pour fermer une position acheteuse
    c2 = (irsi crosses under 50)
    
    IF c2 THEN
    SELL AT MARKET
    ENDIF
    #220018 quote
    zilliq
    Participant
    Master

    Très bonne idée 😉

    Merci Nicolas et très bonne fin de journée

    Zilliq

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

Probleme instruction Time en daily ?


Support ProOrder

New Reply
Author
author-avatar
zilliq @zilliq Participant
Summary

This topic contains 6 replies,
has 2 voices, and was last updated by zilliq
2 years, 5 months ago.

Topic Details
Forum: Support ProOrder
Language: French
Started: 08/28/2023
Status: Active
Attachments: No files
Logo Logo
Loading...