////////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"
Bonsoir,
à partir de l’indicateur ci-dessus, je souhaiterai un screener permettant d’identifier les 2 situations suivantes :
Delta est inférieur à moyMinEcartup
ou
delta est supérieur à moyMinEcartdn
Merci.
Voici le screener basé sur ton indicateur. Il reprend les mêmes calculs et retourne 1 quand l’une des deux conditions est vérifiée.
//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)
ecart = deltamoyup - deltamoydn
min1 = lowest[P](ecart)
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
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
moyMinEcartsUP = (min1 + min2 + min3) / 3
moyMinEcartsDN = -(min1 + min2 + min3) / 3
test = (delta < moyMinEcartsUP) OR (delta > moyMinEcartsDN)
SCREENER[test]
Une petite remarque : dans l’indicateur d’origine, delta peut être négatif (quand M est en baisse). La condition delta > moyMinEcartsDN sera donc souvent vraie puisque moyMinEcartsDN est négatif et que delta peut l’être aussi. Vérifie que c’est bien le comportement souhaité sur tes graphiques avant de lancer le screener sur un grand nombre de valeurs.