Bonjour,
Ca fait quelque temps que j’utilise un screener pour détecter les débuts de tendance avec la stratégie de sortie du nuage Kumo de la chikou. Cependant je suis surpis des résultats retournés qui ne valident parfois pas les conditions que j’ai mis dans le screener. Voici le screener :
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
if isLastBarUpdate then
Chikou = close
ChikouPrev = prevclose
ABOVEKUMO=close > SSpanA and close > SSpanB
VALIDATECHIKOU=Chikou > SSpanA[26] and Chikou > SSpanB[26] and (ChikouPrev < SSpanB[27] or ChikouPrev < SSpanA[27])
else
prevclose = close
endif
screener[ABOVEKUMO and VALIDATECHIKOU]
Je me suis dit que j’avais fait des erreurs mais pourtant quand je transforme ce screener en indicateur et que je visualise chaque variable ainsi que les tests tout ce que je vois est correct. Quelqu’un a t’il une idée de ce que je fait mal ? Voici le code de mon indicateur :
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
if isLastBarUpdate then
Chikou = close
ChikouPrev = prevclose
ABOVEKUMO=close > SSpanA and close > SSpanB
VALIDATECHIKOU=Chikou > SSpanA[26] and Chikou > SSpanB[26] and (ChikouPrev < SSpanB[27] or ChikouPrev < SSpanA[27])
else
prevclose = close
endif
return Tenkan as "tenkan", Kijun as "kijun", SSpanA[26] as "SpanA", sspanb[26] as "spanb", chikou as "chikou", chikouprev as "chikouprev", abovekumo as "above", VALIDATECHIKOU as "VALIDATECHIKOU", ABOVEKUMO and VALIDATECHIKOU as "both"
isLastBarUpdate n’est pas instruction compatible avec ProScreener, il faudrait essayer sans (je n’ai pas testé).
Merci Nicolas,
Je vais tester cela tout de suite. Mais il n’y a pas moyen dans un screener de ne pas avoir la dernière barre si elle est en cours ?
Après avoir retiré les appels a isLastBar voici mon nouveau code :
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
ABOVEKUMO=close > SSpanA and close > SSpanB
VALIDATECHIKOU=close > SSpanA[26] and close > SSpanB[26] and (close[1] < SSpanB[27] or close[1] < SSpanA[27])
screener[ABOVEKUMO and VALIDATECHIKOU](SSpanB[26])
Cela ne marche toujours pas et je n’ai toujours pas les même valeurs que l’indicateur que j’ai modifié également :
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
ABOVEKUMO=close > SSpanA and close > SSpanB
VALIDATECHIKOU=close > SSpanA[26] and close > SSpanB[26] and (close[1] < SSpanB[27] or close[1] < SSpanA[27])
return Tenkan as "tenkan", Kijun as "kijun", SSpanA[26] as "SpanA", sspanb[26] as "spanb", abovekumo as "above", VALIDATECHIKOU as "VALIDATECHIKOU", ABOVEKUMO and VALIDATECHIKOU as "both"
Pour savoir ce que le screener utilise comme variables je me sert du critère que je passe derrière et par exemple SSpanB[26] ne me donne pas du tout la même valeur entre l’indicateur et le screener alors que pourtant le code est le même. J’ai refait mon test après le marché pour m’assurer que ce n’était rien de lié a des mouvements de marché en cours et le résultat est le même. En gros les calculs ne donnent pas les même valeurs entre l’indicateur et screener pour la SSpanB et la SSpanA. J’aurais bien aimé me servir des variables intégrées de PRT a savoir tenkansen kijunsen senkouspanb et senkouspana mais je ne parviens pas a les interroger dans le temps.
Utilises-tu des données temps réel ? Pas un compte gratuit fin de journée ?
Données réelles pas un compte fin de journée oui.
et en limitant l’affichage à 250 unités sur le graphique par exemple ?
Non mais je peux essayer. Cela dit le problème n’est pas pour l’indicateur mais pour le screener qui lui n’a pas les bonnes valeurs. En effet l’indicateur affcihe des valeurs correspondant exactement aux données voulues et attendues. Ce qui me dérange c’est que le même calcul au niveau du screener me donne des résultats différents et sans rapport avec quoique ce soit.
Donc j’ai testé avec DEFPARAM CalculateOnLastBars = 250
Le résultat est strictement le même pour l’indicateur. Comme tu pourras le voir si tu essaies Nicolas l’indicateur reproduit exactement la position du nuage ichimoku mais 26 périodes avant. Sur le screener qui devrait utiliser les même valeurs pour les calculs de SSpanA et SSpanB je me retrouve avec des valeurs fantaisistes que je n’arrive pas a rattacher a quoique ce soit. Je ne suis pas sûr d’arriver a utiliser encore PRT lundi car je m’attend a des soucis suite a la migration de mon compte binck sur saxo bank. On verra bien.
Si tu es passé en v11, tu peux désormais utiliser les instructions spécifiques à Ichimoku : (inutile de calculer les valeurs désormais), voir :
SenkouSpanA
SenkouSpanB
KijunSen
TenkanSen
Compatible indicateur et screener.
Merci mais comment faire pour consulter ces valeurs dans le temps ? Quand j’utilise par exemple tenkansen[1] j’ai une erreur sur la ligne concernée. C’est pour cette raison que je fais encore le calcul manuellement.
Autre questions toujours sur ces variables:
- Comment savoir la valeur de la SenkouSpanB (ou SenkouSpanA) dans le futur ?
- Comment savoir la valeur dans un screener de la Chikou ou Lagging Span si je n’ai pas l’instruction IsLastBarUpdate ? En effet normalement il ne faut la considérer qu’à la clôture du chandelier donc close n’est pas forcément la même valeur car si le chandelier est en cours la valeur peut varier.
Je me permet de remonter le sujet car je n’ai toujours pas de solution utilisable et pas d’explication sur les résultats incorrects de mes calculs.
J’ai fait plus de tests et apparemment les instructions highest[52](high[26]) ainsi que lowest[52](low[26]) ne remontent pas les même valeurs pour l’historique dans le screener et l’indicateur. Toujours la même technique : pour voir la valeur dans le screener je remonte cela dans le critère. J’ai également utilisé des variables uniques pour essayer de remonter dans l’historique et le résultat final est le même que j’historise manuellement ou que j’utilise [2] par exemple.
Comment savoir la valeur de la SenkouSpanB (ou SenkouSpanA) dans le futur ?
Il n’y a pas de valeur future, mais une valeur actuelle projetée vers la droite du graphique. Donc l’instruction:
SenkouSpanA[9,26,52]
correspond à la valeur du nuage qu’on utilise en temps réel, soit sa valeur d’il y a 26 périodes auparavant (voir image jointe). D’où l’utilité d’une telle instruction pour qu’il n’y ai plus d’emmêlages de pinceaux, car c’est souvent revenu sur le tapis ce fameux décalage, qui en fait n’en ai pas un ! 🙂
Comment savoir la valeur dans un screener de la Chikou
Chikou, c’est le prix actuel, soit Close[0], pour cette raison il n’a pas été créée d’instruction spécifique.
Si tu veux tester une valeur de variable sur une bougie terminée, alors il faut tester sa valeur précédente tout simplement, soit Close[1] (correspond au prix de fermeture de la bougie précédente et donc de la Chikou N-1).