Support et résistance avec Ichimoku

Viewing 15 posts - 1 through 15 (of 26 total)
  • Author
    Posts
  • #148436 quote
    Fantasio2020
    Participant
    Senior

    Bonjour la communauté,

    je suis tombé sur un post par hasard, et je me demandais s’il n’y avait pas moyen d’obtenir une ligne horizontale lorsque les plats Kijun et SSB sont alignés.

    kijun = (highest[26](high)+lowest[26](low))/2
    SSB = (highest[52](high[26])+lowest[52](low[26]))/2
     
    kijunp = summation[9](Kijun=Kijun[1])=9
    ssbp = summation[9](SSB=SSB[1])=9
     
    if kijunp then
    kijunPrice = kijun
    endif
    if ssbp then
    ssbPrice = SSB
    endif
    
    
    return kijunPrice as "Plat KIjun", ssbPrice as "Plat SSB"

    En effet, quand on trace une droite horizontale lorsque l’on a un plat Kijun et un plat SSB de valeur identique on obtient généralement un bon support ou une bonne résistance.

    aussi, plutôt que de retourner un “Plat Kijun” pour kijunPrice et un “Plat SSB” pour ssbPrice, l’idée serait par exemple tous les “x” Barindex de tester une condition pour ces “x” Barindex:

    if kijunPrice = ssbPrice then
    drawline(SR = kijunp = SSBp)
    endif
    
    return SR as "S/R"
    // ou un truc du style

    ce serait une belle manière de tracer des support et résistance…

     

    Si quelqu’un à une idée pour coder ça…..? (perso j’ai pas le niveau)

    #148468 quote
    Nicolas
    Keymaster
    Master

    Le code ci-dessous trace une ligne horizontale dés que les plats Kijun et SSB sont identiques. Si tu souhaites utiliser une instruction et comprendre comment elle fonctionne, tu peux utiliser la documentation: https://www.prorealcode.com/prorealtime-documentation/

    kijun = (highest[26](high)+lowest[26](low))/2
    SSB = (highest[52](high[26])+lowest[52](low[26]))/2
     
    kijunp = summation[9](Kijun=Kijun[1])=9
    ssbp = summation[9](SSB=SSB[1])=9
     
    if kijunp then
    kijunPrice = kijun
    endif
    if ssbp then
    ssbPrice = SSB
    endif
    
    if kijunprice=ssbprice then 
    drawhline(kijunprice)
    endif
    
    return //kijunPrice as "Plat KIjun", ssbPrice as "Plat SSB"
    support-et-resistance-ichimoku.png support-et-resistance-ichimoku.png
    #148529 quote
    Fantasio2020
    Participant
    Senior

    Bonjour Nicolas,

    Merci, cela fonctionne….

    j’ai essayé d’apport une petite modif pour intégrer ca dans une stratégie, mais ça n’a pas l’aire de fonctionner:

    kijun = (highest[26](high)+lowest[26](low))/2
    SSB = (highest[52](high[26])+lowest[52](low[26]))/2
     
    kijunp = summation[9](Kijun=Kijun[1])=9
    ssbp = summation[9](SSB=SSB[1])=9
     
    if kijunp then
    kijunPrice = kijun
    endif
    if ssbp then
    ssbPrice = SSB
    endif
     
    if kijunprice = ssbprice then
    SR = kijunprice = ssbprice
    if SR > Close then
    Resist = SR
    elsif SR < Close then
    Support = SR
    endif
    endif
    
    return support as "Support" , resist as "resist"

    Condition vente:

    Condition1
    Condition2
    Condition3 = (Close - Support) > pipsize*15

    Comment faire également pour identifier quel zone de support se trouve proche du prix?

    #148532 quote
    Nicolas
    Keymaster
    Master

    Ton code identifie et enregistre le dernier support ou résistance. Donc tu ne pourras utiliser que ce dernier dans ta stratégie, si tu souhaites utiliser ceux précédemment trouvés, alors soit :

    • en v10.3, il faut faire des boucles dans le passé de l’historique pour identifier l’un des supports et résistances le plus proche
    • en v11, utiliser un tableau pour enregistrer les anciens niveaux et faire une boucle dans ce tableau

    Par ailleurs, je ne comprends pas ce que tu cherches à faire avec ta condition de proximité dans le cas d’une vente ? Peux-tu le détailler stp ?

    #148617 quote
    Fantasio2020
    Participant
    Senior

    SLt Nicolas,

    1. Oui… En fait je remarque, avec la stratégie que j’ai mi en place, que lorsque je perd une position, c’est parce que le bot prend une position sur un support ou un résistance; et 9 fois sur 10 le prix change de sens. (j’ai donné un exemple avec une vente, mais c’est pareille à l’achat)
    2. donc si une opportunité se présente à moins de 15 pips d’un niveau de support ou résistance il ne doit rien faire …
    3. avec plus de 15 pips le mécanisme de “trailingstart/trailingstep” jouera sont rôle.

    je me doutais bien que j’allais devoir utiliser des boucles pour identifier les niveaux du passé….(j’ai du mal à appréhender le mécanisme de ces boucles), je veux bien un peu d’aide.

    Slts

    #148622 quote
    Nicolas
    Keymaster
    Master

    Pour apprendre le fonctionnement d’une boucle, l’une des bases de la programmation, je te suggère de consulter la formation sur la programmation avancée : https://www.prorealcode.com/courses/prorealtime-programmation-avancee/

    Donc tu voudrais un code compatible prorealtime 10.3 j’imagine ?

    #148625 quote
    Fantasio2020
    Participant
    Senior

    Re Nicolas,

     

    Oui V10.3….. V11 pas encore dispo chez IG Market

    #148628 quote
    Nicolas
    Keymaster
    Master

    Très bien, j’ai créé une stratégie toute simple qui prendra ses ordres si “allowtrading” est égal à 1 (égal à 0 si trop proche d’un SR).

    Dans la boucle on teste une proximité de “distance” avec un support/resistance détecté dans les “lookback” derniers chandeliers.

    defparam cumulateorders=false
    
    // --- settings 
    distance = 15 //no orders if there is a SR within X points
    lookback = 1000 //lookback in bars to check recent SR
    tp = 30 //takeprofit in points 
    sl = 10 //stoploss in points 
    
    // ----------------------------------
    
    // --- icihmoku support and resistance 
    kijun = (highest[26](high)+lowest[26](low))/2
    SSB = (highest[52](high[26])+lowest[52](low[26]))/2
     
    kijunp = summation[9](Kijun=Kijun[1])=9
    ssbp = summation[9](SSB=SSB[1])=9
     
    if kijunp then
     kijunPrice = kijun
    endif
    if ssbp then
     ssbPrice = SSB
    endif
    if kijunprice=ssbprice then
     SRlevel = kijunprice
    endif
     
    // ----------------------------------
    
    // --- dummy strategy 
    buycondition = rsi[14] crosses over 50
    sellcondition = rsi[14] crosses under 50
    
    if buycondition or sellcondition then 
     //check if the current price is distant from at least "distance" from recent support or resistance
     allowtrading=1
     for i = 0 to lookback-1 do 
      dist = abs(close-srlevel[i])<distance*pointsize 
      if dist then 
       allowtrading=0 //no trading is allowed we are near a SR!
       break //break the loop, no need to continue, trading is not allowed anymore!
      endif
     next
    
     //trigger orders or not
     if allowtrading then 
      if buycondition then 
       buy 1 contract at market 
      endif 
      if sellcondition then 
       sellshort 1 contract at market 
      endif 
     endif
     set target pprofit tp
     set stop ploss sl
    endif 
    // ----------------------------------
    graph allowtrading as "0=near a SR , don't trade!" 
    
    Fantasio2020 thanked this post
    ichimoku-straetgy-with-support-and-resistance.png ichimoku-straetgy-with-support-and-resistance.png
    #148639 quote
    Fantasio2020
    Participant
    Senior

    Slt Nicolas,

     

    c’est topissime!!!

    j’ai néanmoins un soucis avec la variable “i”… en effet, je travaille sur des timeframes différents (Ichimoku est dans un timeframe en 15 minutes pour identifier SRlevel en UT 15 minutes)

    et lorsque j’insère la boucle en UT 10 secondes qui est mon ut de trading, le système me signale qu’une variable ne peut être utilisé dans des timeframes différents.

    Une idée?

    #148641 quote
    Fantasio2020
    Participant
    Senior

    Problème réglé…. autant pour moi!!

    #148657 quote
    Fantasio2020
    Participant
    Senior

    Slt Nicolas,

     

    Voici les résultats avec l’intégration du code:

    C’est Top…! juste ce qu’il me fallait.

    Nicolas thanked this post
    Sans-SRLevel.png Sans-SRLevel.png Avec-SRLevel.png Avec-SRLevel.png
    #148663 quote
    Nicolas
    Keymaster
    Master

    Merci pour le retour. N’hésite pas à partager tes futures recherches, histoire que le cercle vertueux puisse continuer, et aussi à demander de l’aide si nécessaire ! 😉

    #148700 quote
    Fantasio2020
    Participant
    Senior

    J’ai lancé la stratégie depuis tout à l’heure…

    ==> 3 arrêts du système dû à un problème de rechargement de donnée

    1. j’ai d’abord preloadé 15.000 Bars
    2. j’ai ensuite préloadé 30.000 Bars

    pas de résultat…

    Une idée d’où ça peut venir? LookBack?

    #148702 quote
    Nicolas
    Keymaster
    Master

    Il faut en effet à minima un preloadbars de “lookback”.

    Plus ce dernier est important, plus les boucles seront consommatrices de ressources.

    #148703 quote
    Nicolas
    Keymaster
    Master

    Tu peux aussi modifier la ligne 34 de mon code en ajoutant une condition pour lancer la boucle de détection seulement si on est pas au marché :

    if (buycondition or sellcondition) and NOT ONMARKET then
Viewing 15 posts - 1 through 15 (of 26 total)
  • You must be logged in to reply to this topic.

Support et résistance avec Ichimoku


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
Summary

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

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 10/25/2020
Status: Active
Attachments: 5 files
Logo Logo
Loading...