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 !
Par contre Nicolas, même en modifiant le script, la question des jours fériés est toujours là…
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
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.
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
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 ?
La ligne 7 devrait se lire comme suit:
IF not ((CurrentTime > Evening) AND (CurrentTime < Morning)) THEN
Merci Roberto, même si j’avoue ne pas comprendre la subtilité, car pour moi cela revient à la même chose, non ?
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.
Merci Roberto pour l’explication 🙂