Non Croisement 2 moyennes mobiles

Viewing 15 posts - 1 through 15 (of 16 total)
  • Author
    Posts
  • #118128 quote
    PHAN100
    Participant
    Junior

    Bonjour,

    Je souhaite créer, svp, un indicateur sur le non croisement de 2 moyennes mobiles exponentielles de 7 jours et celle de 20 jours.

    L’indicateur est valable dans les 2 sens , achat et vente, mais se déclenche dans 2 possibilités (soit l’une soit l’autre) dans chaque sens.

    Moyenne mobile exponentielle 7 jours = MM7

    Moyenne mobile exponentielle 20 jours = MM20

    Les sens :

    Achat (indicateur =1)

    La MM7 qui était au dessus de la MM20 qui est haussière, se dirige à la baisse au jour  en direction de la MM20

    2 possibilités (l’une ou l’autre)

    a)LA MM7 touche la MM20 et repart à la hausse (la MM7 ne croise pas à la baisse la MM20)

    b)La MM7 ne touche pas la MM20 , mais se rapproche de très près de la MM20 et repart à la hausse. Je définis cet écart de 1%

     

    Vente (indicateur =-1)

    La MM7 qui était  en dessous de la MM20 qui est baissière, se dirige à la hausse en direction de la MM20

    2 possibilités

    a) LA MM7 touche la MM20 et repart à la baisse (la MM7 ne croise pas à la hausse la MM20)

    b)La MM7 ne touche pas la MM20 , mais se rapproche de très près de la MM20 et repart à la hausse. Je définis cet écart de 1%

     

    Je joins une copie écran de ces non croisements.

    En vous remerciant.

    Stéphane

    #118133 quote
    Nicolas
    Keymaster
    Master

    Très semblable à ces 2 sujets:

    Codage non croisement de moyennes mobiles

    Questions sur croisement et non croisement

    Peut-être est-ce suffisant ?

    #118159 quote
    PHAN100
    Participant
    Junior

    Bonjour Nicolas,

    Merci pour avoir trouvé ces 2 sujets.

    J’ai testé surtout le premier, mais il ne correspond pas à mes attentes, il y a des non croisements qui échappent au programme de cet internaute.

    Le 2ème sujet m’a donné des idées….le forum est formidable.

    En vous remerciant d’essayer de me programmer ma demande.

     

    Stéphane

    #118162 quote
    Nicolas
    Keymaster
    Master

    Les fameux non-croisement ! Voilà une nouvelle version, qui j’en suis certain n’arrivera pas à attraper tout ce que vos yeux pourront trouver comme “non croisement”, difficile de trouver quelque-chose qui n’a pas lieu ! 😆

    Plus sérieusement, ce pullback de moyennes mobiles, on peut aussi le trouver avec l’histogramme d’un MACD qui recoupe sa ligne de signal inférieure à 0 pour une vente et au dessus pour un achat. On pourrait donc aussi y coller le filtre en pourcentage.. à étudier.

    //reserrement de MA en pourcentage
    percentage = 1
    a = average[7]
    b = average[20]
    upper = max(a,b)
    lower = min(a,b)
    d = ((upper - lower) / close) *100
    e = d <= percentage
    bull = a>=b
    bear = not bull
    atr = averagetruerange[14]
    
    if (bull and bull[1]) then 
    pullback = a>a[1] and a[1]<=a[2]
    if pullback and e then 
    drawtext("NC",barindex,low-atr/3,dialog,bold,20) coloured(0,200,0)
    endif
    endif
    
    if (bear and bear[1]) then
    pullback = a<a[1] and a[1]>=a[2]
    if pullback and e then
    drawtext("NC",barindex,high+atr/3,dialog,bold,20) coloured(200,0,0)
    endif
    endif
    
    return a, b style(line,3)
    #118164 quote
    Nicolas
    Keymaster
    Master

    Ci-joint donc la version MACD, forcément plus en retard..

    //reserrement de MA en pourcentage
    percentage = 1
    signalPeriod = 2
    
    a = average[7]
    b = average[20]
    upper = max(a,b)
    lower = min(a,b)
    d = ((upper - lower) / close) *100
    e = d <= percentage
    diff = a-b
    bull = diff>0
    bear = not bull
    signal = average[signalperiod,1](diff)
    atr = averagetruerange[14]
    
    if (bull) then
    pullback = diff crosses over signal
    if pullback and e then
    drawtext("NC",barindex,low-atr/3,dialog,bold,20) coloured(0,200,0)
    endif
    endif
    
    if (bear) then
    pullback = diff crosses under signal
    if pullback and e then
    drawtext("NC",barindex,high+atr/3,dialog,bold,20) coloured(200,0,0)
    endif
    endif
    
    return a, b style(line,3)
    #118165 quote
    PHAN100
    Participant
    Junior

    Nicolas,

     

    Entre vos 2 propositions, je choisis la 2ème et c’est parfait, à la hausse comme à la baisse !

    Je n’aurais pas pensé qu’on pouvait passer par le MACD pour refléter cette configuration.

    Très bonne journée,

     

    Stéphane

    #118357 quote
    Luciole
    Participant
    Senior

    Hello Nicolas,

    Le sujet m’intéresse pour le signal MacD.

    Un détail :  la ligne macd et le signal se construisent en général avec une EMA , plutôt dans cet ordre d’esprit du coup :

    signalPeriod = 6
    a = exponentialaverage[9]
    b = exponentialaverage[19]
    
    macdline = a-b
    
    signal = exponentialaverage[signalperiod](diff)

    ce qui m’étonne c’est même en réglant avec une EMA et les valeurs ci dessus je n’obtiens pas le même résultat qu’avec ma version (cf screen EMA)

     

    Voici ma version , néanmoins j’obtiens trop de signaux bruités cf screenshot.

    L’idée serait de garder uniquement les signaux clean du type entouré sur mon screenshot.

     

     

    defparam calculateonlastbars=600
    
    macdS=9
    macdB=19
    macdsignal=6
    myMACD=exponentialaverage[macdS]-exponentialaverage[macdB]
    signal=exponentialaverage[macdsignal](myMACD)
    //slope = macdB - macdB[1]
    a=myMACD
    b=signal
    atr = averagetruerange[10](close)*0.5
    
    
    //Conditions NC MACD Achat
    ca1 = a > b
    ca2 = a[1] < a
    ca3 = a[2] > a[1]
    ca4 = b[1] < b AND b[2] < b[1]
    
    
    //Conditions NC MACD Vente
    cv1 = a < b
    cv2 = a[1] > a
    cv3 = a[2] < a[1]
    cv4 = b[1] > b AND b[2] > b[1]
    
    
    NCMACDBULL = ca1 AND ca2 AND ca3 AND ca4
    if NCMACDBULL  then
    drawtext("NC",barindex,highest[3](high)+atr*1.2,Dialog,Bold,13) coloured(0,255,75)
    endif
    
    NCMACDBEAR = cv1 AND cv2 AND cv3 AND cv4
    If NCMACDBEAR then
    drawtext("NC", barindex,lowest[3](low)-atr*1.2, Dialog,Bold,13) coloured(255,0,0)
    endif
    
     
    RETURN NCMACDBULL as "NCMAC ACHAT", NCMACDBEAR as "NCMAC VENTE"
    
    #118379 quote
    Nicolas
    Keymaster
    Master

    Attention “macdsignal” est une instruction réservée par la plateforme en v11 désormais.

    Pour la question, désolé mais j’ai du mal à comprendre. Il faudrait quelques exemples précis avec des dates et des détails sur l’instrument, timeframe, .. et pourquoi tel ou tel signal n’est pas à considérer.

    #125434 quote
    NicoPommier
    Participant
    New

    Bonjour Nicolas,

    Je trouve vos deux versions de cet indicateur très intéressantes ! Elles fonctionnent à merveille.
    Auriez vous la possibilité de coder un screener permettant de visualiser les actions en passe d’avoir un non croisement haussier mm7/mm20 ?

     

    Merci beaucoup pour votre retour

    Nicolas P

    #125458 quote
    Nicolas
    Keymaster
    Master

    Ci-dessous le screener de cette version: https://www.prorealcode.com/topic/non-croisement-2-moyennes-mobiles/#post-118162

    //reserrement de MA en pourcentage
    percentage = 1
    a = average[7]
    b = average[20]
    upper = max(a,b)
    lower = min(a,b)
    d = ((upper - lower) / close) *100
    e = d <= percentage
    bull = a>=b
    bear = not bull
    
    verif = 0
    
    if (bull and bull[1]) then
    pullback = a>a[1] and a[1]<=a[2]
    verif =  pullback and e 
    endif
    
    if (bear and bear[1]) then
    pullback = a<a[1] and a[1]>=a[2]
    verif =  pullback and e
    endif
    
    screener[verif]

    Les conditions bull ou bear ne sont pas séparées, il faudra faire le tri visuellement 😉

    #125491 quote
    NicoPommier
    Participant
    New

    Merci beaucoup Nicolas je teste ça rapidement 🙂

    #125492 quote
    NicoPommier
    Participant
    New

    Alors je viens de le tester et j’ai un problème avec la dernière ligne

    Screener [verif]  ne permet pas de lancer le programme.

    Auriez vous une idée pour ce problème?

    Merci pour votre retour

    Nicolas P.

    #125524 quote
    Nicolas
    Keymaster
    Master

    A ta demande j’ai codé un screener, il faut donc placer le code dans un nouveau programme ProScreener, tu as certainement essayé de le mettre dans un nouvel indicateur 🙂

    #125546 quote
    PHAN100
    Participant
    Junior

    NicoPommier

     

    Fais gaffe, j’avais posé la question pour avoir un indicateur sous le graphique.

    Le screener, faut aller dans le chemin décrit par Nicolas.

    D’autre part, il se peut que le screener te ramène rien car il n’y a pas le Signal. Je l’ai lancé il n’y a rien sur les valeurs du CAC40. en unité de temps cours de clôture.

    J’espère qu’il est bien paramétré.

     

    Stéphane

    #125577 quote
    NicoPommier
    Participant
    New

    Merci à vous pour vos réponses.
    J’ai bien rempli le code dans un nouveau screener et lorsque je veux lancer le programme il s’affiche ce message d’erreur :” erreur de syntaxe, ligne 23, caractère 10. Une des expressions suivantes serait plus appropriée que “[” : “,” ou “=”. ” Cela correspond à la dernière ligne du screener : screener[verif].

    C’est moi qui ne comprend pas probablement.. ?

    Merci pour vos retours en tout cas

    Nicolas P

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

Non Croisement 2 moyennes mobiles


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
author-avatar
PHAN100 @phan100 Participant
Summary

This topic contains 15 replies,
has 4 voices, and was last updated by NicoPommier
5 years, 10 months ago.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 01/28/2020
Status: Active
Attachments: 4 files
Logo Logo
Loading...