CarlParticipant
Average
Ci-dessous une demande qui a été envoyée à ProRealTime :
Bonjour Madame, Monsieur
Je suis en train de créer un indicateur appelé “Squeeze Carter 100 BB14P”.
En Période 4 heures:
Le but est de détecter lorsque les Bandes de Bollinger de Période = 14 , Ecart type = 1,2 sont à l’intérieur des bandes de Keltner de période = 14 , avec un coefficient =1 .
Je me suis basé sur la meme programmation qu’un screener. L’indicateur fonctionne + ou – mais sur ABVX (ABIVAX) par exemple lorsque les bandes de bollinger ne sont plus dans les bandes de Kellner l’indicateur ne redescend pas à 0 . Sur d’autre titre le problème ne se pose pas.
D’autre part je remarque que meme si les bandes de bollinger sont à l’intérieur des bandes de Kellner si les prix sont à l’extérieur des bandes de bonninger alors l’indicateur ne passe pas à 1 alors que je n’ai mis aucune condition sur les prix. Exemple sur AI ( Air liquide)
Vous remerciant à l’avance.
Bien cordialement
Et une proposition de réponse :
p=14 //période du calcul des boll
s=1.2 //écart type
REM Calcule la moyenne mobile de bollinger et l'écart-type
moyenneBollinger = AVERAGE[p](CLOSE)
REM Détermine l'écart type (sans passer par la fonction STD)
REM pour l'exemple, dans la pratique il faut utiliser STD !
IF BARINDEX >= p-1 THEN
sumy2 = 0
sumy = 0
FOR i = 0 TO p-1
sumy2 = sumy2 + SQUARE(CLOSE[i])
sumy = sumy + CLOSE[i]
NEXT
ecartType = SQRT(sumy2 / p - SQUARE(sumy / p))
ELSE
ecartType = UNDEFINED
ENDIF
REM En déduit les courbes de Bollinger
bup = moyenneBollinger + s * ecartType
bdown = moyenneBollinger - s * ecartType
//Canaux de Keltner
n=14
coeff=1
REM Moving Average
MA = Average[N](TypicalPrice)
REM Upper Keltner Band
UpperBand = MA + coeff*Average[N](Range)
REM Lower Keltner Band
LowerBand = MA - coeff*Average[N](Range)
ok = bup > LowerBand and bup < UpperBand and bdown > LowerBand and bdown < UpperBand
return ok