Bonjour Nicolas.
Je cherche à comparer – d’abord visuellement – plusieurs stratégies d’entrée en position Longue (en l’occurrence, actuellement, sur le Future Dax en 5 minutes, mais ça peut servir plus largement)
(Hichimoku Kijun/Tenkan, Trend Impulse Filter, Ehler’s MAMA & FAMA, et Donchian complexifié…)
pour voir lesquelles sont les plus prometteuses, leurs points faibles, et pourquoi pas, les combiner.
Pour ce faire, je crée des indicateurs 1 / 0, pour indiquer les périodes on l’on est en position avec ces différentes stratégies.
J’ai réussi sans problème pour les 3 premières, mais je bute sur la 4è (Donchian complexifié)
Il y aurait 2 conditions possibles pour entrer Long, et une seule pour sortir.
Je bute sur la programmation des 2 conditions pour entrer Long :
- Donchian typique : on définit un canal haut et un canal bas
CanalHi = Highest[PeriodHi](high) et CanalLo = Lowest[PeriodLo](low)
- Entrée en position sur Condition 1 OU sur Condition 2 validée.
- Condition 1 :
Clôture au-dessus de CanalHi[1]
Cela devrait donner quelque chose comme :
close crosses over CanalHi[1]
- Condition 2 :
– 2 moyennes mobiles comme filtres : MMcourte = exponentialaverage[3](close) et MMlongue = exponentialaverage[20](close)
(les périodes seraient à ajuster, mais on verra plus tard)
– Sous-condition 2/1 : MMCourte croise à la hausse MMLongue.
On garde alors en mémoire le plus-haut de la barre pour laquelle se produit ce croisement.
– Sous-condition 2/2 : une fois la sous-condition 2/1 validée, on attend qu’une nouvelle bougie clôture au-dessus de ce plus-haut enregistré.
Si c’est validé, on entre long
Si on fait un nouveau plus-haut sans clôturer au-dessus du plus-haut enregistré (= mèche), c’est le plus haut des 2 plus hauts qui sert de nouvelle référence, et on entre long sur clôture plus haute que le plus-haut de référence
(je pense qu’on devrait mettre à ce niveau une boucle… mais je ne sais pas pour combien de barres – sans doute pour une durée maximale = PeriodHi)
- Mais ce qui complique les choses, c’est qu’entre temps, la Condition 1 peut se trouver validée => entrée en position
… ce qui entraine l’abandon de la surveillance de la Condition 2
- Sortie de position : Donchian classique
Close crosses under CanalLo[1]
Je cherche pour le moment à créer un indicateur qui prenne la valeur 1 quand on est en position, et qui repasse à 0 quand on sort.
Pourrais-tu m’aider à programmer cela ?
Merci par avance pour ton aide.
Désolé pour la réponse tardive, cette demande est-elle toujours d’actualité ?
Bonsoir Nicolas. Merci pour ta réponse… tardive !
A vrai dire, ça m’intéresserait bien. ne serait-ce que pour me pencher sur le code et apprendre comment faire les choses proprement !
Si tu as le temps de regarder ça, merci par avance…
En effet, il y a quelques sujets qui date du confinement, qui n’ont pas été traité, on a eu une sacré affluence à cette période, difficile de tout voir et tout traiter ! Je vais m’y plonger.
voilà un premier jet en stratégie de trading automatique :
DEFPARAM CumulateOrders = False
Periodhi=50
periodlo=50
CanalHi = Highest[PeriodHi](high)
CanalLo = Lowest[PeriodLo](low)
MMcourte = exponentialaverage[3](close)
MMlongue = exponentialaverage[20](close)
//Condition 1 :
//Clôture au-dessus de CanalHi[1]
if not longonmarket and close crosses over CanalHi[1] then
buy at market
crossbar=0
crosshigh=0
endif
//Condition 2 :
//- Sous-condition 2/1 : MMCourte croise à la hausse MMLongue.
//On garde alors en mémoire le plus-haut de la barre pour laquelle se produit ce croisement.
if not longonmarket and mmcourte crosses over mmlongue then
crossbar=barindex
crosshigh=high
endif
//- Sous-condition 2/2 : une fois la sous-condition 2/1 validée, on attend qu’une nouvelle bougie clôture au-dessus de ce plus-haut enregistré.
//Si c’est validé, on entre long
if not longonmarket and barindex>crossbar and crossbar>0 then
//Si on fait un nouveau plus-haut sans clôturer au-dessus du plus-haut enregistré (= mèche), c’est le plus haut des 2 plus hauts qui sert de nouvelle référence, et on entre long sur clôture plus haute que le plus-haut de référence
if close<crosshigh then
crosshigh=max(crosshigh,high)
endif
if close crosses over crosshigh then
buy at market
endif
endif
if longonmarket and close crosses under canallo[1] then
sell at market
endif
graphonprice crosshigh coloured(200,200,0)