position d’une moyenne par rapport à une autre

Viewing 5 posts - 1 through 5 (of 5 total)
  • Author
    Posts
  • #261454 quote
    finplus
    Participant
    Master

    Bonjour,

    voici un indicateur que j’ai demandé sur ce site (encore merci à l’auteur).

    ///////Parameters

    Len = 100

    P  = 150


    z1 = linearregression[Len](high)

    z2 = linearregression[Len](low)

    z2s = -std[Len](low) + z2

    z1s = std[Len](high) + z1

    M  = (z2s + z1s) / 2


    Delta = abs(z2s – z1s)

    Deltam = abs(z2s – z1s)


    RLUp = M > M[1]

    RLDn = M < M[1]


    if RLUp then

    Delta = Delta

    endif

    if RLDn then

    Delta = -Delta

    endif


    deltamoyup = average[150](Deltam)

    deltamoydn = average[150](-Deltam)


    // Écart entre les deux moyennes

    ecart = deltamoyup – deltamoydn


    // 1er minimum : fonction native lowest

    min1 = lowest[P](ecart)


    // 2e minimum : plus petit écart strictement > min1

    min2 = 999999999

    j = 0

    WHILE j < P DO

    val = ecart[j]

    if val > min1 AND val < min2 then

    min2 = val

    endif

    j = j + 1

    WEND


    // 3e minimum : plus petit écart strictement > min2

    min3 = 999999999

    k = 0

    WHILE k < P DO

    val = ecart[k]

    if val > min2 AND val < min3 then

    min3 = val

    endif

    k = k + 1

    WEND


    // Moyenne des 3 → ligne horizontale

    moyMinEcartsUP = (min1 + min2 + min3) / 3

    moyMinEcartsDN = -(min1 + min2 + min3) / 3


    RETURN delta as “delta”, deltamoyup as “deltamoyup”, deltamoydn as “deltamoydn”, moyMinEcartsUP as “MoyMinEcartsUp”,moyMinEcartsDn as “MoyMinEcartsDn”


    Je souhaiterai à partir de celui-ci avoir un screener qui identifie les actifs lors que la moyminecartsup est inférieure à deltamoyup et lorsque la moyminecartsdn est supérieure à deltamoydn.

    j’ai tenté cela mais cela ne renvoie rien.

    SqueezeUp = moyMinecartsUp < deltamoyUp

    SqueezeDn = moyMinecartsDn > deltamoyDn


    Je vous en remercie.

    #261459 quote
    robertogozzi
    Moderator
    Master

    Ajoutez ces lignes juste AVANT return:

    IF moyMinecartsUp < deltamoyUp THEN
       DrawText("●",BarIndex,high + range) coloured("Green")
    ENDIF
       IF moyMinecartsDn > deltamoyDn THEN
    DrawText("●",BarIndex,low - range) coloured("Red")
    ENDIF
    

    Placez l’indicateur à la fois SOUS le graphique (comme le RSI, par exemple) et SUR le graphique des prix (comme les moyennes mobiles).

    Veuillez utiliser au moins 2K+ unités (barres).Veuillez utiliser au moins 2K+ unités (barres).

    Vous constaterez que les signaux que vous recherchez sont rares et concentrés sur une courte période.




    x-1.jpg x-1.jpg
    #261460 quote
    finplus
    Participant
    Master

    Merci Roberto.

    mais pour le screener, comment faire car ma tentative de code ne renvoie rien (même si j’ai conscience en effet que les signaux recherchés sont rares.

    #261475 quote
    robertogozzi
    Moderator
    Master

    Voilà le screener :

    ///////Parameters
    Len = 100
    P  = 150
    z1 = linearregression[Len](high)
    z2 = linearregression[Len](low)
    z2s = -std[Len](low) + z2
    z1s = std[Len](high) + z1
    M  = (z2s + z1s) / 2
    Delta = abs(z2s - z1s)
    Deltam = abs(z2s - z1s)
    RLUp = M > M[1]
    RLDn = M < M[1]
    if RLUp then
    Delta = Delta
    endif
    if RLDn then
    Delta = -Delta
    endif
    deltamoyup = average[150](Deltam)
    deltamoydn = average[150](-Deltam)
    // Écart entre les deux moyennes
    ecart = deltamoyup - deltamoydn
    // 1er minimum : fonction native lowest
    min1 = lowest[P](ecart)
    // 2e minimum : plus petit écart strictement > min1
    min2 = 999999999
    j = 0
    WHILE j < P DO
    val = ecart[j]
    if val > min1 AND val < min2 then
    min2 = val
    endif
    j = j + 1
    WEND
    // 3e minimum : plus petit écart strictement > min2
    min3 = 999999999
    k = 0
    WHILE k < P DO
    val = ecart[k]
    if val > min2 AND val < min3 then
    min3 = val
    endif
    k = k + 1
    WEND
    // Moyenne des 3 → ligne horizontale
    moyMinEcartsUP = (min1 + min2 + min3) / 3
    moyMinEcartsDN = -(min1 + min2 + min3) / 3
    
    monSignal = 0
    IF moyMinecartsUp < deltamoyUp THEN
    monSignal = 1
    //DrawText("●",BarIndex,high + range) coloured("Green")
    ENDIF
    IF moyMinecartsDn > deltamoyDn THEN
    monSignal = 2
    //DrawText("●",BarIndex,low - range) coloured("Red")
    ENDIF
    SCREENER[monSignal](monSignal AS "1=UP, 2=DOWN")
    

    Je joins une photo de mon graphique et du fichier ITF.

    finplus thanked this post
    MonScreener.itf x-3.jpg x-3.jpg
    #261477 quote
    finplus
    Participant
    Master

    merci. Je vais le tester.

    Bonne journée.

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

position d’une moyenne par rapport à une autre


ProScreener : Scanners de Marché & Détection

New Reply
Author
author-avatar
finplus @finplus Participant
Summary

This topic contains 4 replies,
has 2 voices, and was last updated by finplus
1 week ago.

Topic Details
Forum: ProScreener : Scanners de Marché & Détection
Language: French
Started: 05/21/2026
Status: Active
Attachments: 3 files
Logo Logo
Loading...