Je tiens à apporter également de nouveaux éléments… le ELSE !
J’avais déjà remarqué ça mais le ELSE ne fonctionne tout simplement pas sur Prorealtime, il est préférable d’éclater un gros IF avec ELSE en plusieurs IF, ce qui est vraiment pas génial pour une lecture globale…
// Cumul des positions désactivé
DEFPARAM CumulateOrders = false
Morning = 010000
Evening = 220000
// Limitation bons jours et bonnes heures
// Disparition du ELSE en deux IF
IF ((CurrentTime > Morning) OR (CurrentTime < Evening)) THEN
trading = 1
ENDIF
IF ((CurrentTime < Morning) OR (CurrentTime > Evening)) THEN
trading = 0
ENDIF
// Ni le lundi matin avant Morning ni le vendredi après Evening :
IF ((CurrentDayOfWeek = 1) AND (CurrentTime < Morning)) OR ((CurrentDayOfWeek = 5) AND (CurrentTime > Evening)) THEN
trading = 0
ENDIF
IF (trading = 1) then
BUY 1 CONTRACTS AT MARKET
ENDIF
IF (trading = 0) then
SELL AT MARKET
ENDIF
//GRAPH CurrentTime
GRAPH trading
Avec le code sans le ELSE on voit clairement que sur l’image en pièce jointe les positions respectent déjà plus le script.
Mais ce n’est pas tout hélas, Nicolas je te parlais de Noël et autres jours fériés, on le voit très clairement ici… le tableau présent dans l’image avec les nombres de barres.
Le lundi 25 Mai 2015, jour férié en France, l’ordre est resté sur 41 heures, il a donc dépassé les 23h00 du lundi initialement prévu dans le script, aucune logique…
Le mercredi 24 Décembre 2014, Noël férié le 25, même chose, l’ordre a dépassé la journée, pour clôturer le 26 à 23h00, soit 41 heures aussi.
Etc… il y’a un problème de clôture dans le script sans doute, mais il y’a surtout un problème du côté de Prorealtime et l’interprétation des jours. Dès qu’on touche un férié, ou une séance un peu “bizarre” ou disons écourté ou autre, le système plante.
Je suis désolé d’insister là-dessus, mais c’est une base fiable qu’il nous faut, les Backtests se plantent, et pire… si on lance un script avec des conditions pareilles bonjour les dégâts dans certaine situation.