Bonjour,
J’ai une question qui j’imagine est simple à résoudre. Proorder ne peut pas calculer ma commande ci-jointe d’ordre valable sur plusieurs périodes, parce que c’est une boucle infinie…
Je ne sais pas trop pourquoi?
Merci pour votre aide!
if time = 092500 then
Maxbox = highest[17](High)
endif
if close > maxbox THEN
price = close - 5
periode = barindex
endif
while BARINDEX - periode < 10 do
BUY 2 CONTRACT AT price limit
wend
En effet, puisque ta variable “periode” ne sera jamais renseigné. Dans ton test à la ligne 5, tu cherches à savoir si Close est plus haut que le plus haut, hors ça n’est pas possible car il devient le plus haut par définition. Il faut donc refaire cette condition avec la valeur du plus haut de la barre précédente, celle-ci étant figé dans le temps, elle ne changera plus et la condition pourra alors être vrai:
if close > maxbox[1 ] THEN
...
..
.
super. merci pour ton aide Nicolas! je vais revoir tout ca.
Je crois que le test à la ligne 5 se passe bien car la valeur la plus élevée le détermine à 9 h 25 et à la ligne 5 il vérifie si un breakout se produit.
Bien vu Roberto! Dans ce cas, utilise plutôt un bloc conditionnel pour éviter la boucle While / Wend:
if BARINDEX - periode < 10 then
BUY 2 CONTRACT AT price limit
endif
Dans que la condition de la ligne 1 sera testée vrai, on replacera un nouvel ordre LIMIT à chaque nouvelle barre (puisqu’il expirera après seulement 1 période).
Merci pour vos retours!
La stratégie est effectivement de prendre une position à l’achat si le plus haut atteint entre 8h00 et 9h25 est dépassé dans la journée. Stratégie utilisée sur le Dax en UT 5 minutes, limitée à un ordre par jour, ordre valable sur la journée uniquement.
La stratégie fonctionne bien, 80% de taux de succès (en rajoutant quelques conditions de croisement de moyennes mobiles et tendance à la hausse).
J’essaie d’optimiser la stratégie en rajoutant un price limit pour optimiser le prix d’achat, après que les conditions aient été réalisées. Et j’essaierai aussi de tester un achat stop au dessus du niveau de prix atteint au moment de la réalisation des conditions, pour s’assurer de la confirmation du break out.
Pour l’achat limite, j’utilise le code suivant (simplifié), avec optimisation des variables sur le niveau de prix limite et le nombre de périodes pendant lequel l’ordre doit rester valable:
// Définition des paramètres du code
DEFPARAM CumulateOrders = False // Cumul des positions désactivé
// 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 = 092500
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 = 213000
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
if time = 092500 then
Maxbox = highest[17](High)
endif
// Conditions pour limiter à un ordre par jour
Jour = barindex - intradaybarindex
if tradeindex(1) < Jour then
achat = 1
elsif tradeindex(1) >= Jour then
achat = 0
endif
if close > maxbox and timeEnterBefore AND timeEnterAfter and not daysForbiddenEntry and achat = 1 THEN
price = close - n
periode = barindex
achat = 2
endif
If achat = 2 and barindex - periode < m then
BUY 2 CONTRACT AT price limit
endif
Mais je ne suis pas sûr que le code soit bon. En tout cas, la stratégie n’est pas optimisée et les résultats du backtest un peu bizarres.
Qu’en pensez vous?
Merci!
Donc tu optimises les variables n et m ? Qu’appelles-tu des résultats un peu bizarres ?
Oui j’optimise les variables n et m. L’optimisation donne un n à 0, donc prix = close, quelle que soit la période considérée (jusqu’à 50 périodes après réalisations des conditions), et des résultats toujours inférieurs à la stratégie sans price limit (76% de taux de succès vs 81%), ce qui est bien sûr possible. Voir attachment.
mais penses tu que le code est ok?

Aussi, je ne suis pas sûr de procéder comme il faut pour attacher une image. Je suis passer par l’icone “share your code”, et ensuite copier-coller.
Je ne vois rien de choquant dans le code. n=0 signifierai que tu rentres au marché et donc plus besoin d’ordre conditionnel LIMIT dans ce cas. Mais je ne pense pas qu’en réel cela marcherait aussi “bien”. En effet, l’ordre ne serait pas placé car soumis à l’écart minimum et donc rejeté.
L’image est trop petite, il n’est pas utile de cliquer sur “insert into content”, l’image sera attaché en dessous de ton post.
oui bien sûr, avec n=0, je ne mettrai plus d’ordre LIMIT mais au marché.
Merci pour ton retour