Code Lent en utilisant une boucle, détection des supports resistances ichimoku
Forums › ProRealTime forum Français › Support ProBuilder › Code Lent en utilisant une boucle, détection des supports resistances ichimoku
- This topic has 9 replies, 2 voices, and was last updated 4 years ago by Jerome888.
-
-
07/18/2020 at 2:57 PM #139564
Bonjour,
J’ai écrit ce code pour dessiner des lignes horizontales sur les principaux supports plats / résistances d’Ichimoku Kijun et SSPB. Malheureusement, le code est très lent…
Comment vous y prendriez-vous pour detecter des plats ? Pro real code dispose-t-il d’une fonction pour calculer une dérivée ?
Merci d’avance
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061DefParam DrawOnLastBarOnly = true//Tenkan = (highest[TenkPeriod](high)+lowest[TenkPeriod](low))/2Kijun = (highest[KijPeriod](high)+lowest[KijPeriod](low))/2//SpanA = (tenkan[KijPeriod]+kijun[KijPeriod])/2//SSpanB = (highest[SSpanBPeriod](high[KijPeriod])+lowest[SSpanBPeriod](low[KijPeriod]))/2//SSpanAFuture = (tenkan+kijun)/2SSpanBFuture = (highest[SSpanBPeriod](high)+lowest[SSpanBPeriod](low))/2//Chikou = closeMemoryKJ=-1for i = 0 to NdOfCandlesBefore doAlignedKJ=1for j = 1 to durationCriteria doif AlignedKJ=1 and MemoryKJ <> Kijun[i+j] and (Kijun[i+j] <= (1+VertTolerance)*Kijun[i] and Kijun[i+j] >= (1-VertTolerance)*Kijun[i]) thenAlignedKJ=1elseAlignedKJ=0endifnextif AlignedKJ=1 thendrawhline(Kijun[i]) coloured(0,153,0)MemoryKJ=Kijun[i]i=i+durationCriteria-1//BLEU 64,192,255endifnextMemorySSB=-1for i = 0 to NdOfCandlesBefore+26 doAlignedSSB=1for j = 1 to durationCriteria doif AlignedSSB=1 and MemorySSB <> SSpanBFuture[i+j] and (SSpanBFuture[i+j] <= (1+VertTolerance)*SSpanBFuture[i] and SSpanBFuture[i+j] >= (1-VertTolerance)*SSpanBFuture[i]) thenAlignedSSB=1elseAlignedSSB=0endifnextif AlignedSSB=1 thendrawhline(SSpanBFuture[i]) coloured(255,51,51)MemorySSB=SSpanBFuture[i]i=i+durationCriteria-1//BLEU 64,192,255endifnextreturn09/25/2020 at 2:02 PM #145387Les boucles imbriqués dans l’historique ont cet effet. C’est beaucoup plus rapide avec les tableaux de données en version 11.
Avant d’aller plus loin, ce sujet m’en rappelle d’autres, sur la détection des plats ichimoku :
https://www.prorealcode.com/topic/paliers-ichimoku/#post-79250
https://www.prorealcode.com/topic/plat-ssb-et-plat-kijun/
Si tu pouvais m’indiquer en terme logique ce que tu considères êtres un support / resistance selon l’indicateur Ichimoku, alors je pourrai le coder, merci.
09/26/2020 at 3:22 AM #145432Merci Nicolas
Perso je souhaiterais detecter les plat de Kijun et SSpanB dont le formules sont les suivantes:
- Kijun = (highest[26](high)+lowest[26](low))/2
- SSpanB = (highest[52](high)+lowest[52](low))/2
On pourrait par ex détecter les supports/résistances plats (donc sur Kijun et SSpanB), d’au moins 5 périodes , parfaitement alignées ou à +/- 0.0001% par ex. (le nombre de périodes et la tolérance pourraient être des variables d’entrée)
Est-ce suffisamment clair ?
Merci.
09/28/2020 at 9:49 AM #145632Bien compris, voilà le code qui te permet de détecter les plats Kijun et SspanB et les tracer. J’ai ajouté les critères modifiables en tête de code comme tu le voulais.
12345678910111213141516171819202122flatPeriod = 5maxPercent = 0.0001 //percent difference// ----------maxPercent = maxPercent / 100Kijun = (highest[26](high)+lowest[26](low))/2isKijunFlat = summation[flatPeriod](kijun=kijun[1] or (kijun/kijun[1]<=1+maxPercent and kijun/kijun[1]>=1-maxPercent))=flatPeriodif isKijunFlat thendrawhline(kijun) coloured(200,200,0)endifSSpanB = (highest[52](high)+lowest[52](low))/2isSSpanBFlat = summation[flatPeriod](sspanb=sspanb[1] or (sspanb/sspanb[1]<=1+maxPercent and sspanb/sspanb[1]>=1-maxPercent))=flatPeriodif isSSpanBFlat thendrawhline(sspanb) coloured(0,200,200)endifreturnLes plats Kijun sont jaune orangés et les plats SSpanB sont en bleu ciel.
09/28/2020 at 2:59 PM #145695EXCELLENT !
Thank you very much Nicolas, the time needed to compute is now extremely reduced… the difference is impressive.
I forgot 1 point : Is it possible to limit the analysis to the last 200 periods for example ? (a lot of lines are drawn, I guess it goes far away in the past)
Thanks again !!
09/28/2020 at 3:01 PM #145697Oui pardon… donc en Français…
Merci beaucoup, la différence de temps de calcul est impressionnante !
Est-il possible de limiter les calcul sur les 200 dernières perdioes par ex ? j’ai l’impession qu’il remonte loin (le résultat comprend a beaucoup de lignes)
Merci encore Nicolas
09/28/2020 at 3:04 PM #145698C’est plus rapide car il n’y a aucune boucle ! On teste à la volée en lisant l’historique, puis le temps réel, les conditions pour trouver tes plats.
Pour limiter les calculs à X bougies seulement, tu peux ajouter cette ligne en tête de code :
1defparam calculateonlastbars=20009/28/2020 at 3:47 PM #145711Franchement génial merci beaucoup Nicolas. Le code est beaucoup plus élégant également…
Dernière question (normalement) : y a-t-il un moyen à ce que les lignes horizontales tracees avec drawhline soient représentées sur toutes les unités de temps ?
Merci.
09/28/2020 at 3:50 PM #145712On peut le faire sous v11 uniquement avec le support MTF des indicateurs.
Par contre, puisque l’indicateur Ichimoku n’est que des plus hauts / plus bas sur les x dernières périodes (pour schématiser), tu peux multiplier les périodes pour obtenir les seuils d’autres UT.
09/28/2020 at 4:25 PM #145721 -
AuthorPosts
Find exclusive trading pro-tools on