Bonjour à tous,
Ci-joint un code (1 minute) -encore un 😉 – sur lequel je travaille actuellement. Il n’est vraiment pas compliqué ni long, et pourtant ma question est la suivante : vu la rédaction et la succession de mes instructions, pourquoi ce code ne déclenche-t-il pas un ordre régulièrement, c’est-à-dire dès que le système est “NOT ONMARKET” ? J’effectue des tests en réel sur un compte réel (d’où les petites positions) et je constate que parfois le système entre en position la minute suivant la clôture d’un trade (donc normal), d’autres fois il y a des plages mortes où il semble s’être mis en veille. Mon compte est chez IG, risque limité : cela vient-il de mon code ou alors du broker ? Pour le reste, le déclenchement des ordres (quand il a lieu) et le placement des stops est tout à fait exact.
Dois-je utiliser IntradayBarIndex ? TradeIndex ? pour affiner les conditions ?
Merci de vos retours.
DEFPARAM CumulateOrders = true
DEFPARAM FlatAfter = 215959
SET STOP %LOSS 0.15
HeureDebut = 090000
HeureFin = 215959
Plage = (time >= HeureDebut AND time <= HeureFin)
//====================================================
ch = close > open[7]
cb = close < open[7]
gaina = (close > TradePrice)
gainv = (close < TradePrice)
IF NOT ONMARKET AND ch AND Plage THEN
BUY 0.5 contract AT MARKET
ENDIF
IF gaina THEN
SELL AT MARKET
ENDIF
IF NOT ONMARKET AND cb AND Plage THEN
SELLSHORT 0.5 contract AT MARKET
ENDIF
IF gainv THEN
EXITSHORT AT MARKET
ENDIF
bonjour,
a c’est deux condition j’ajouterai du spread voici un exemple :
spread=3
gaina = (close > TradePrice-spread)
gainv = (close < TradePrice+spread)
Merci pour la suggestion fifi743 , mais :
- Quel serait le but de cet ajout ?
- Est-ce que cela répond à ma question ?
Merci pour ton retour.
le but est quand le trade ce ferme il soit en gain ou espérer
Ok , merci , mais les instructions des lignes 16 et 17 font clôturer toujours en gain ; sinon le trade est stoppé par le stop-loss (ligne 4)
Ou bien ta variable “spread=3” sert-elle à réduire l’effet du spread bid-ask fourni par le courtier ? Merci
la variable sert a finir positif quand ton trade n’a pas beaucoup de point
Merci beaucoup fifi743 pour cette petite astuce 😉
Toutefois, je pose à nouveau ma question : “vu la rédaction et la succession de mes instructions, pourquoi ce code ne déclenche-t-il pas un ordre régulièrement, c’est-à-dire dès que le système est “NOT ONMARKET” ? J’effectue des tests en réel sur un compte réel (d’où les petites positions) et je constate que parfois le système entre en position la minute suivant la clôture d’un trade (donc normal), d’autres fois il y a des plages mortes où il semble s’être mis en veille. (compte IG, risque limité : cela vient-il de mon code ou alors du broker ?)”
Est-ce que les conditions pour l’ouverte des ordres sont bien remplies ? (variables ch ou cb).
En risque limité, si tu as d’autres ordres simultanée sur le même sous-jacent, alors tu ne pourras pas ouvrir d’autres trades.
Par ailleurs, peut être que ton stoploss est trop prés du prix actuel.
Bonjour Nicolas,
Merci pour ton retour. J’ai déjà observé et vérifié les points que tu signales. Et en effet :
- les variables ch et cb sont bien respectées (j’ai même créé un petit indicateur graphique basique qui montre bien si close > ou < à open[7])
- je ne prends pas d’autres positions sur le sous-jacent (CAC) car je sais que cela va entraver le fonctionnement du système, notamment s’il veut vendre et que je suis déjà positionné à l’achat : en ce cas, le système se bloque et s’arrête, et il faut le redémarrer manuellement (si l’on est présent devant l’écran). Or le système ne s’arrête jamais, c’est juste qu’il ne lance pas d’ordre pendant un moment d’une durée indéterminable (aléatoire).
- le stoploss n’a pas l’air d’être trop près, car chez IG, le système se bloquerait également et s’arrêterait, et il faudrait là encore le redémarrer manuellement.
Je me suis demandé aussi si ce n’était pas la variable “Plage” qui gênait, mais après quelques tests, il semble que non non. Par ailleurs, il y a quelques rares moments où le système envoie quand même des ordres à la minute suivant une clôture de trade.
Bref, cela reste un peu énigmatique. C’est dommage, car de nombreuses opportunités de trades gagnants sont ainsi perdues.
D’un autre côté, je me demande toujours si PRT est capable (ou autorisé ?) de traiter une instruction du type :
IF condition1 THEN
SELL AT MARKET // clôture du trade en cours
BUY 1 CONTRACT AT MARKET // ouverture d’un nouveau trade dans la foulée
ENDIF
c’est-à-dire enchaîner 2 ordres de sens contraire ? Le compte risque limité le permet-il aussi ?
Merci encore et bonne journée à toi. Je reviendrai partager le code dès que ces difficultés seront résolues.
Es-tu déjà au marché lorsque tu remarques qu’un ordre ne passe pas ?
Non, toujours “flat” justement, et c’est ce qui occasionne des attentes (plus ou moins longues) incompréhensibles.
C’est curieux en effet.
Voilà les choses à vérifier avant de faire un rapport “technique” via la plateforme:
- vérifier la liste des ordres rejetés du courtier (via la liste dans la plateforme ou dans ton relevé courtier)
- indiquer une taille de lot de 1 pour voir si cela change le fonctionnement
Dans la demande de support, merci d’indiquer l’URL vers ce sujet pour une meilleur compréhension.
Merci.
J’ai effectué les tests sur le compte démo, qui supporte moins de contraintes qu’un compte limité; les vérifications ne donnent rien de significatif :
- Il ne s’agit pas d’ordres annulés/rejetés : c’est juste qu’aucun ordre n’est envoyé. Cela donne l’impression que le code n’est pas lu toutes les minutes (code en TF 1 mn), mais aléatoirement une minute de temps en temps.
- En particulier, le code ne semble pas être lu à la clôture d’une barre si un trade a été soldé pendant cette barre.
- Par ailleurs, mes tests montrent aussi que PRT ne semble pas savoir à la fois fermer un trade en fin de barre et en ouvrir un autre simultanément à la même fin de cette même barre ? En particulier ce qui m’intéresse, c’est de clôturer un LONG et rouvrir aussitôt un autre LONG : cela se rédige-t-il d’une manière particulière, ou bien est-ce une autre limite du système ? J’ai testé le groupe d’instructions suivant :
IF condition1 THEN
SELL AT MARKET // clôture du trade en cours
BUY 1 CONTRACT AT MARKET // ouverture d’un nouveau trade dans la foulée
ENDIF