Je m’explique : je cherche à backtester la prise de position lors d’un kumo twist( ichimoku).
Or le kumo twist se forme 26 jours dans le futur. Le backtest doit donc porter sur une position ouverte 26 jours avant l’apparition du signal …
Je m’arrache les cheveux sur cette question : comment coder cette prise de position 26 jours AVANT le signal ?
Impossible de trouver une solution. Merci de votre aide !
Et bons trades !
Michel
Le twist apparaît 26 périodes décalés visuellement mais les informations sont bien entendu calculées et connues en temps réel.
Le code ci-dessous remonte les croisements “futurs”:
tenkan=(highest[9](high)+lowest[9](low))/2
kijun=(highest[26](high)+lowest[26](low))/2
SpanA=(tenkan+kijun)/2
SpanB=(highest[52](high)+lowest[52](low))/2
up = SpanA crosses over SpanB
dn = SpanA crosses under SpanB
Bonjour et merci de votre réponse. J’avais bien réussi à identifier les croisements de Kumo, et j’ai un screener qui me les liste chaque jour, ce qui m’est très utile pour mes prises de position.
La problème est que je souhaite backtester cette méthode pour en vérifier l’efficacité (très bonne pour l’instant !) sur des titres variés et sur un historique important.
En fait, j’ouvre une position aujourd’hui, sur la base d’un Kumo twist qui s’affiche dans 26 périodes. dans Probacktest, quand j’essaie de programmer un backtest sur cette méthode, il faut donc identifier le Kumo twist (facile), mais déclarer l’ouverture de position 26 jours avant ce signe … et c’est là que je coince complètement, l’ouverture de position pouvant se faire le jour du déclenchement du twist, ou ultérieurement, mais jamais avant…
J’espère être clair, mais n’hésitez pas à questionner si ce n’est pas le cas.
Vous êtes nombreux a être coincé dans des failles temporelles quand on essaie de coder ichimoku, avant ou après, pendant on ne sait plus .. le code que j’ai donné ci-avant teste le croisement du nuage que tu vois dans le futur (à droite du prix), et ce croisement est bien détecté sur la barre courante avec le kumo du jour.
Si tu le vois dans le futur, c’est parce que le kumo est décalé vers la droite, mais c’est bien celui d’aujourd’hui !
Oui, j’ai bien compris le principe du twist, et je te confirme que je sui bien plongé dans une faille temporelle digne d’Isaac Asimov ; -)
J’utilise un code quasiment similaire au tien (mais je ne m’intéresse qu’aux twists haussiers). Il fonctionne très bien et je scanne le marché avec un screener chaque sois pour détecter les twists, qui apparaissent projetés dans 26 périodes.
Cela marche très bien, j’ai même créé un indicateur PRT qui fait apparaitre le twist, et le jour de son déclenchement (26 périodes porécédentes). Sur l’exemple ci joint (Alpha Mos) on voit cet indicateur qui affiche un trait vertical bleu le jour du twist et un rouge le jour où le twist est apparu. On voit bien l’intérêt de prendre position le jour où on voit le twist (à moins de 2€).
Donc tout cela fonctionne très bien, mais j’aimerais backtester ce système de trading… et là ça se complique, car je n’arrive pas, en programmant un Probacktest, à faire en sorte que la position soit prise 26 périodes AVANT l’apparition du signal (le twist).
Le second exemple (Backtest sur Genomic Vision) montre bien mon problème…
J’espère être suffisamment clair, ce n’est pas évident à expliquer.
Voici le code que j’utilise pour le BT :
//********************************************************************************************
//BACKTEST SUR SYSTEME KUMO TWIST
//Principe : achat d'une position de 500 € au moment du twist du kumo (à +21 périodes)
//stop :
//objectif :
//********************************************************************************************
// - 1 - définitions Ichimoku :
TWIST = 0
CROISEMENT = 13
c1 = highest[1] (high[1])
Tenkan = (highest[9](high)+lowest[9](low))/2
Kijun = (highest[26](high)+lowest[26](low))/2
SSpanA = (tenkan[26]+kijun[26])/2
SSpanB = (highest[52](high[26])+lowest[52](low[26]))/2
// CROISEMENT à l'achat SSA > SSB
If SSpanA crosses over SSpanB then
TWIST = 1
CROISEMENT = SSpanA
ENDIF
// - 2 - Conditions pour ouvrir une position acheteuse
IF NOT LongOnMarket AND TWIST THEN
BUY 500 cash roundeddown AT market
ENDIF
// Conditions pour fermer une position acheteuse
SET TARGET %PROFIT 100
// - 3 - Stops et objectifs : entrez vos stops et vos objectifs ici
Set stop %trailing 20
// Ne fonctionne pas car impossible de prendre position 26 jours AVANT le déclenchement du Twist ...
Je ne sais pas comment indiquer que twist doit être twist [-26]…!
Tu détectes un événement du passé, donc tu prends position trop tard. Tu utilises un offset de 26 périodes (il n’y en a pas dans mon code plus haut).
Mais j’aimerai mieux comprendre.
En temps réel, on détecte un twist qui s’affiche dans le futur du prix, ok ? (voir image, détection faîte avec le code que j’ai donné)
- tu veux ouvrir un ordre le jour de la détection ? (sur la grosse bougie rouge)
- ou attendre que le prix passe sur le croisement visuel (soit attendre 26 chandeliers) ? (sur le croisement des deux lignes)
Oui le 1 est exactement ce que je souhaite faire : je prends position le jour où le twist est détecté, donc le jour de la grosse bougie rouge dans ton exemple.
C’est ce que je pratique aujourd’hui en réel mais que je ne parviens pas à backtester.
Dans mon image d’exemple Alpha Mos, si j’avais attendu 26 périodes après le déclenchement du twist pour prendre position, je loupais toute la hausse …
Je pense donc que cette stratégie est payante, mais j’aimerais affiner cette impression par des séries de backtests sur de nombreux titres pour avoir une vision statistique de ce système de trading, qui (pour l’instant) s’avère assez efficace.
ok, donc rien de neuf, tu dois utiliser le code que j’ai donné plus haut à la place de tes définitions, car comme indiqué tu cherches les twists 26 périodes avant la bougie actuelle, alors qu’on veut celle de la bougie actuelle, merci.
tenkan=(highest[9](high)+lowest[9](low))/2
kijun=(highest[26](high)+lowest[26](low))/2
SpanA=(tenkan+kijun)/2
SpanB=(highest[52](high)+lowest[52](low))/2
Le code que j’utilise est exactement le même que le tien…
Il fonctionne très bien pour un screener de marché mais pas du tout en backtesting, sur le module probacktest, qui déclenche les prise de position le jour du twist et non 26 périodes auparavant comme cela se passerait dans la réalité.
En tous cas merci pour tes réponses rapides et cet échange interessant.
Désolé j’ai répondu trop vite ! les deux codes ne sont pas similaires !
Je teste ton code rapidement et te donne les résultats.
Oui, ça fait 3 fois que j’essai de le faire comprendre 🙂
Alors mille excuses, je viens de tester ton code de définition de l’ichimoku et cela fonctionne parfaitement. On voit sur l’exemple ci joint que la prise de position est bien réalisée 26 périodes avant le twist !
Désolé de ne pas avoir compris plus vite, et un très grand merci pour ton aide précieuse et rapide !
A moi les joies du backtesting maintenant !!!