Horaires de trading

Viewing 10 posts - 16 through 25 (of 25 total)
  • Author
    Posts
  • #95643 quote
    SuperMike
    Participant
    Senior

    Roberto un grand merci à toi !
    Ca semble très bien marché tout cela 🙂

    Par contre je bug sur plusieurs points, si pour ma culture tu pouvais m’éclairer, notamment au sujet du OR, car en mettant le AND tu demandes à ce que les deux conditions soient vraies en même temps ?

    IF ((CurrentTime > Morning) AND (CurrentTime < Evening)) THEN
    trading = 1
    ENDIF

    Du coup en supprimant ces lignes, cela veut-il dire que le système sait automatiquement que le weekend on ne trade pas ?

    IF ((CurrentDayOfWeek = 1) AND (CurrentTime < Morning)) OR ((CurrentDayOfWeek = 5) AND (CurrentTime > Evening)) THEN
    trading = 0
    ENDIF

    Merci encore pour tout !

    #95644 quote
    SuperMike
    Participant
    Senior

    Par contre Nicolas, même en modifiant le script, la question des jours fériés est toujours là…

    #95645 quote
    fifi743
    Participant
    Master

    supermike

    pour les jours féries j’utilise

    IF (Month = 5 AND Day = 1) OR (Month = 12 AND (Day = 24 OR Day = 25 OR Day = 26 OR Day = 30 OR Day = 31)) or( Day >29 and Day <=31) THEN
    DayTrading = 0
    ELSE
    DayTrading = 1
    ENDIF
    #95655 quote
    robertogozzi
    Moderator
    Master

    Oui, elles DOIVENT être vraies dans les deux cas, sinon cela ne fonctionnera pas. Les 100000 heures sont > Morning AND < Evening et ça marche,. En utilisant OR , au lieu de cela, il suffit qu’une seule des deux conditions soit vraie. Les 000000 heures le seraient également parce que < Evening, ou les 23 parce qu’elles sont > Morning, avec des résultats erronés!

    En ce qui concerne la deuxième question, la ligne ci-dessus permet de s’assurer que les opérations NE sont PAS effectuées avant 010001, ni après 215959, quel que soit le jour. Le week-end est fermé. Cependant, votre ligne ne dit pas de NE PAS effectuer d’opérations le week-end, mais les lundis et vendredis aux heures déjà établies, vous n’en avez donc pas besoin. Pour empêcher les opérations du week-end de s’ouvrir, quelle que soit l’heure, vous devez indiquer:

    IF OpenDayOfWeek < 1  OR OpenDayOfWeek > 5 THEN
       trading = 0
    ENDIF

    Faite attention qu’OpenDayOfWeek est le jour où la bougie est ouverte, alors que DayOfWeek et CurrentDayOfWeek (ils sont équivalents) est le jour où la bougie se ferme pour laquelle la bougie du jeudi est renvoyée à 5 car elle se ferme déjà vendredi et vendredi soir toujours 5 parce que le trading s’arrête et que DayOfWeek n’est pas mis à jour.

    #95678 quote
    SuperMike
    Participant
    Senior

    Messieurs c’est pas mal comme échange je trouve !

    On va réussir au final à sortir un code qui pourra servir à tous 🙂

    Du coup pour résumer nous avons ce code qui semble fonctionner :

    // Cumul des positions désactivé
    DEFPARAM CumulateOrders = false
     
    Morning = 010000
    Evening = 210000
     
    trading = 0
    
    // Limitation bons jours
    IF ((CurrentTime > Morning) AND (CurrentTime < Evening)) THEN
    trading = 1
    ENDIF
    
    // Limitation aux jours ouverts de la semaine
    IF OpenDayOfWeek < 1  OR OpenDayOfWeek > 5 THEN
    trading = 0
    ENDIF
    #97509 quote
    SuperMike
    Participant
    Senior

    Bonjour à tous,

    Je reviens vers vous car je bloque sur un point, je tente de mettre des horaires différents, avec un système qui démarre à partir de 23h05, et clôture à 22h45.

    Je fais cela afin d’éviter l’overnight, et voilà ce que j’obtiens :

     

    Morning = 230500
    Evening = 224500
     
    trading = 0
    
    // Horaires
    IF ((CurrentTime > Morning) AND (CurrentTime < Evening)) THEN
    trading = 1
    ENDIF

    Malheureusement rien ne se produit, il faut seulement que je modifie Morning par 000000

    J’ai comme l’impression que le code n’accepte pas le fait que morning soit plus élevé que Evening.

    Des idées ?

    #97511 quote
    robertogozzi
    Moderator
    Master

    La ligne 7 devrait se lire comme suit:

    IF not ((CurrentTime > Evening) AND (CurrentTime < Morning)) THEN
    #97542 quote
    SuperMike
    Participant
    Senior

    Merci Roberto, même si j’avoue ne pas comprendre la subtilité, car pour moi cela revient à la même chose, non ?

    #97544 quote
    robertogozzi
    Moderator
    Master

    Dans votre ligne

    IF ((CurrentTime > 230500) AND (CurrentTime < 224500)) THEN

    les conditions ne seront jamais vraies car il n’y a pas de temps qui puisse être à la fois> 230500 et <224500, testez une fois sur une feuille de papier, comme 180000, 224000, 230500, 235500, 000000, ….. ou autre.

    Au lieu de cela, je vérifie d’abord qu’elles se situent dans la plage 224501 – 230459, puis j’inverse la condition en plaçant NOT avant le test afin que les temps soient valides en dehors de cette plage.

    #97596 quote
    SuperMike
    Participant
    Senior

    Merci Roberto pour l’explication 🙂

Viewing 10 posts - 16 through 25 (of 25 total)
  • You must be logged in to reply to this topic.

Horaires de trading


ProOrder : Trading Automatique & Backtests

New Reply
Author
Summary

This topic contains 24 replies,
has 5 voices, and was last updated by SuperMike
6 years, 10 months ago.

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