Bonjour,
Je teste actuellement le code ci-dessous pour la compréhension et étudier les comportements de ProOrder
La stratégie est très simple, ordre d’achat ou de vente sur franchissement de la MME30 sur UT 30 minutes puis TP 4 points plus tard sur le DAX.
Cela a très bien fonctionné sur une bougie le premier jour du lancement puis j’ai constaté des anomalies (de mon point de vu de novice).
En effet, sur la première capture on peut constater qu’il y a une grande bougie (l’avant dernière) qui aurait dû déclencher un achat, hors il n’y en a pas eu sur celle-ci mais sur la seconde qui n’est pas concernée !!
La première bougie de cette capture aurait également dû déclencher un ordre d’achat ?
Ma question est : est-ce que le close de la bougie n’est évalué qu’une fois celle-ci clôturée ? (je comprends que oui mais…)
Ce qui m’intéresse c’est de capter le moment ou le « close » en cours(ou prix du moment avant clôture) de la bougie 30 minutes traverse la MM.
L’idée étant plus tard de “mesurer” cette bougie en cours pour en déduire la force du mouvement…
Si je descends dans une UT inférieure ce ne se sera plus le même signal ??
Je souhaiterais que le prix du moment de la bougie 30 soit pris pour déclenchement du signal d’achat.
Comme dans le code faire référence à des bougies d’UT différentes ?
Il y a-t-il un moyen de palier à ce problème ?
Pourtant, sur la capture 2 on peut voir que cela a bien fonctionné, l’ordre de short et le TP ont été exécutés sur la même bougie 30 minutes ( ce qui invaliderait ce
que je pensais comprendre plus tôt, dans ce cas la fin de la bougie n’a pas été attendu et la fermeture de la position a eu lieu correctement dans la même bougie.
Je suis un peu dérouté par ces comportements…
Merci de votre aide !
oops, j’ai oublié le 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 = 070000
// Annule tous les ordres en attente et ferme toutes les positions à l'heure "FLATAFTER"
DEFPARAM FLATAFTER = 171500
// n -> MM principale
// tsp -> trailing stop
// sl -> stoploss
n = 30
sl = 4
//tsp = 2
// 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
indicator1 = ExponentialAverage[n](close)
c1 = (close CROSSES OVER indicator1)
IF c1 AND not daysForbiddenEntry THEN
BUY 1 CONTRACT AT MARKET
ENDIF
// Conditions pour ouvrir une position en vente à découvert
indicator2 = ExponentialAverage[n](close)
c2 = (close CROSSES UNDER indicator2)
IF c2 AND not daysForbiddenEntry THEN
SELLSHORT 1 CONTRACT AT MARKET
ENDIF
// Stops et objectifs
SET STOP pLOSS sl
SET TARGET pPROFIT 4
En effet le code ne sera lu qu’une seule fois par bougie au Close et toutes les 30 minutes donc en timeframe M30.
Les ordres sont ensuite lancées à l’ouverture suivante (Open).
OK, merci pour cette rapide réponse mais alors pourquoi sur l’exemple que je mentionne l’ordre a été exécuté sur la même bougie ?
Il faut donc décomposer la bougie M30 en unité inférieures pour obtenir l’effet escompté ?
Bien entendu le TP est inscrit dans le carnet d’ordres du courtier et il l’exécutera de son côté, indépendamment du code, à l’instar d’une position manuelle par exemple.