Code Lent en utilisant une boucle, détection des supports resistances ichimoku

Viewing 10 posts - 1 through 10 (of 10 total)
  • Author
    Posts
  • #139564 quote
    Jerome888
    Participant
    Average

    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

    DefParam DrawOnLastBarOnly = true
     
    //Tenkan = (highest[TenkPeriod](high)+lowest[TenkPeriod](low))/2
    Kijun = (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)/2
    SSpanBFuture = (highest[SSpanBPeriod](high)+lowest[SSpanBPeriod](low))/2
    //Chikou = close
     
    MemoryKJ=-1
    for i = 0 to NdOfCandlesBefore do
     
    AlignedKJ=1
    for j = 1 to durationCriteria do
     
    if AlignedKJ=1 and MemoryKJ <> Kijun[i+j] and (Kijun[i+j] <= (1+VertTolerance)*Kijun[i] and Kijun[i+j] >= (1-VertTolerance)*Kijun[i]) then
    AlignedKJ=1
    else
    AlignedKJ=0
    endif
     
    next
     
    if AlignedKJ=1 then
    drawhline(Kijun[i]) coloured(0,153,0)
     
    MemoryKJ=Kijun[i]
    i=i+durationCriteria-1
     
    //BLEU 64,192,255
    endif
     
    next
     
    MemorySSB=-1
    for i = 0 to NdOfCandlesBefore+26 do
     
    AlignedSSB=1
    for j = 1 to durationCriteria do
     
    if AlignedSSB=1 and MemorySSB <> SSpanBFuture[i+j] and (SSpanBFuture[i+j] <= (1+VertTolerance)*SSpanBFuture[i] and SSpanBFuture[i+j] >= (1-VertTolerance)*SSpanBFuture[i]) then
    AlignedSSB=1
    else
    AlignedSSB=0
    endif
     
    next
     
    if AlignedSSB=1 then
    drawhline(SSpanBFuture[i]) coloured(255,51,51)
     
    MemorySSB=SSpanBFuture[i]
    i=i+durationCriteria-1
     
    //BLEU 64,192,255
    endif
     
    next
     
    return
    #145387 quote
    Nicolas
    Keymaster
    Master

    Les 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 :

    Paliers Ichimoku

    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.

    #145432 quote
    Jerome888
    Participant
    Average

    Merci 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.

    #145632 quote
    Nicolas
    Keymaster
    Master

    Bien 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.

    flatPeriod = 5
    maxPercent = 0.0001 //percent difference 
    // ----------
    maxPercent = maxPercent / 100
    
    Kijun = (highest[26](high)+lowest[26](low))/2
    
    isKijunFlat = summation[flatPeriod](kijun=kijun[1] or (kijun/kijun[1]<=1+maxPercent and  kijun/kijun[1]>=1-maxPercent))=flatPeriod 
    
    if isKijunFlat then 
    drawhline(kijun) coloured(200,200,0)
    endif 
    
    SSpanB = (highest[52](high)+lowest[52](low))/2
    
    isSSpanBFlat = summation[flatPeriod](sspanb=sspanb[1] or (sspanb/sspanb[1]<=1+maxPercent and sspanb/sspanb[1]>=1-maxPercent))=flatPeriod
    
    if isSSpanBFlat then
    drawhline(sspanb) coloured(0,200,200)
    endif
    
    return

    Les plats Kijun sont jaune orangés et les plats SSpanB sont en bleu ciel.

    kijun-et-sspanb-sont-plats.png kijun-et-sspanb-sont-plats.png
    #145695 quote
    Jerome888
    Participant
    Average

    EXCELLENT !

    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 !!

    #145697 quote
    Jerome888
    Participant
    Average

     

    Oui 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

    #145698 quote
    Nicolas
    Keymaster
    Master

    C’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 :

    defparam calculateonlastbars=200
    #145711 quote
    Jerome888
    Participant
    Average

    Franchement 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.

    #145712 quote
    Nicolas
    Keymaster
    Master

    On 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.

    #145721 quote
    Jerome888
    Participant
    Average

    OK super compris. Merci encore Nicolas. Super aide.

Viewing 10 posts - 1 through 10 (of 10 total)
  • You must be logged in to reply to this topic.

Code Lent en utilisant une boucle, détection des supports resistances ichimoku


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
author-avatar
Jerome888 @jerome888 Participant
Summary

This topic contains 9 replies,
has 2 voices, and was last updated by Jerome888
5 years, 4 months ago.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 07/18/2020
Status: Active
Attachments: 1 files
Logo Logo
Loading...