Bonsoir,
j’ai bidouillé un petit indicateur qui est ci-dessous (je n’arrive pas à l’insérer dans l’onglet prévu à cet effet.
// KAMA200
Period1 = 200
FastPeriod1 = 2
SlowPeriod1 = 30
Fastest1 = 2 / (FastPeriod1 + 1)
Slowest1 = 2 / (SlowPeriod1 + 1)
if barindex < Period1+1 then
Kama200=close
else
Num1 = abs(close-close[Period1])
Den1 = summation[Period1](abs(close-close[1]))
ER1 = Num1 / Den1
Alpha1 = SQUARE(ER1 *(Fastest1 - Slowest1 )+ Slowest1)
KAMA200 = (Alpha1 * Close) + ((1 -Alpha1)* Kama200[1])
endif
Period = 50
xClose = (Open+High+Low+Close)/4
Distance = xclose- kama200
if distance > 0 then
distanceUp = distance
endif
if distance < 0 then
distanceDn = distance
endif
EcartUp = exponentialaverage[period](distanceup)
EcartDn = exponentialaverage[period](distanceDn)
if ecartUp > -ecartDn then
spreadUp = ecartUp
elsif ecartUp < -ecartDn then
spreadUp = -ecartDn
endif
if ecartDn < -ecartUp then
spreadDn = ecartDn
elsif ecartDn > -ecartUp then
spreadDn = -ecartUp
endif
period = 50
dev = 2.0
MA = average[period](distance)
BolUp = average[50](ecartUp+STD[period]*dev)
BolDn = average[50](ecartDn-STD[period]*dev)
return Distance as "distance", spreadUp as "EcartUp", spreadDn as "EcartDn", BolUp as "Boll Sup", BolDn as "Boll Inf", MA as "Boll Milieu"
j’ai programmé un screener qui devrait me permettre de détecter les franchissements des courbes SpreadUp et SpreadDn par l’indicateur “distance” tout en mettant comme limite qu’en cas de franchissement de la SpreadUp l’indicateur “distance” doit être inférieur à la la BolUp (et vice versa pour le franchissement de la SpreadDn par la distance).
le screener donne cela :
// KAMA200
Period1 = 200
FastPeriod1 = 2
SlowPeriod1 = 30
Fastest1 = 2 / (FastPeriod1 + 1)
Slowest1 = 2 / (SlowPeriod1 + 1)
if barindex < Period1+1 then
Kama200=close
else
Num1 = abs(close-close[Period1])
Den1 = summation[Period1](abs(close-close[1]))
ER1 = Num1 / Den1
Alpha1 = SQUARE(ER1 *(Fastest1 - Slowest1 )+ Slowest1)
KAMA200 = (Alpha1 * Close) + ((1 -Alpha1)* Kama200[1])
endif
Period = 50
xClose = (Open+High+Low+Close)/4
Distance = xclose- kama200
if distance > 0 then
distanceUp = distance
endif
if distance < 0 then
distanceDn = distance
endif
EcartUp = exponentialaverage[period](distanceup)
EcartDn = exponentialaverage[period](distanceDn)
if ecartUp > -ecartDn then
spreadUp = ecartUp
elsif ecartUp < -ecartDn then
spreadUp = -ecartDn
endif
if ecartDn < -ecartUp then
spreadDn = ecartDn
elsif ecartDn > -ecartUp then
spreadDn = -ecartUp
endif
period = 50
dev = 2.0
BolUp = average[50](ecartUp+STD[period]*dev)
BolDn = average[50](ecartDn-STD[period]*dev)
Longpos = (distanceUp crosses over SpreadUp) and (distanceUp < BolUp)
ShortPos = (distanceDn crosses under Spreaddn) and (distanceDn > BolDn)
Screener [LongPos or ShortPos]
sauf qu’il me renvoie des valeurs qui ne correspondent pas aux critères programmés.
Quelqu’un peut-il m’aider SVP?
Merci.
Bonjour, j’ai reformaté,
Tes distances sont construites à partir d’écarts (ligne 23) alors que les boll sont de l’ordre de grandeur du prix. Ce qui se passe, c’est que tu ne peux pas comparer directement tes distances à des boll, soit c’est la distance qui doit être ajoutée ou soustraite à une valeur de l’ordre de grandeur du prix(close? xclose? kama200? mm20? low? high? etc…) pour pouvoir être comparable aux boll, soit c’est tes boll qui doivent être utilisées pour créer un écart avec quelque chose et comparer cet écart à tes distances.
Bonsoir. Merci pour le retour. Donc, il n’y a pas de solution ? J’ai traduit cet indicateur et ce screener dans un programme automatique. Et quand je lance un back test, les entrées en position se font correctement (c’est-à-dire lors des franchissements de limite en respectant les Bol).
// KAMA200
Period1 = 200
FastPeriod1 = 2
SlowPeriod1 = 30
Fastest1 = 2 / (FastPeriod1 + 1)
Slowest1 = 2 / (SlowPeriod1 + 1)
if barindex < Period1+1 then
Kama200=close
else
Num1 = abs(close-close[Period1])
Den1 = summation[Period1](abs(close-close[1]))
ER1 = Num1 / Den1
Alpha1 = SQUARE(ER1 *(Fastest1 - Slowest1 )+ Slowest1)
KAMA200 = (Alpha1 * Close) + ((1 -Alpha1)* Kama200[1])
endif
Period = 50
xClose = (Open+High+Low+Close)/4
Distance = xclose- kama200
if distance > 0 then
distanceUp = distance
endif
if distance < 0 then
distanceDn = distance
endif
EcartUp = exponentialaverage[period](distanceup)
EcartDn = exponentialaverage[period](distanceDn)
if ecartUp > -ecartDn then
spreadUp = ecartUp
elsif ecartUp < -ecartDn then
spreadUp = -ecartDn
endif
if ecartDn < -ecartUp then
spreadDn = ecartDn
elsif ecartDn > -ecartUp then
spreadDn = -ecartUp
endif
////////// RSI RVI
ignored, ignored, ignored, MyRSI, ignored, ignored, ignored, ignored, ignored = CALL "RSI RVI BOLL"[13, 34, 7](close)
RSIup = (MyRSI < 75)
RSIDn = (MyRSI > 25)
Longpos = (distanceUp crosses over SpreadUp) and (RSIUp)
ShortPos = (distanceDn crosses under Spreaddn) and (RSIDn)
Screener [LongPos or ShortPos]
voilà un nouveau screener. j’ai retiré les bol et remplacé par le RSI. Aucun changement par rapport au screener précédent.
Bon, du coup si ça marche en auto, ça fait davantage penser à un problème d’historique du screener, d’autant plus qu’en regardant de plus près, je suis allé trop vite sur ce que tu appelles BolUp et BolDn, je les ai considérées comme des bollingers classiques mais je vois qu’en fait c’est une création perso avec 3 différences par rapport aux bollingers habituelles, la période, l’écart-type inclus dans la moyenne au lieu d’ajouté à la moyenne, et surtout la moyenne appliquée à ecartUp et ecartDn au lieu de close, du coup effectivement c’est probablement comparable à distance… Mea culpa.
Alors si on garde tes définitions persos de BolUp et BolDn et que j’avais mal conclu au premier post, on se focalise sur la recherche de périodes qui pourraient poser problème à proscreener et son historique limité. De là on voit que Kama200 n’existe qu’à partir de period1=200 barres (lignes 9-17), puis on aurait besoin de period=50 fois pour les 50 premières Kama200 pour avoir ecartup et ecartdn (lignes 37-38), mais ces valeurs ne seront pas exactes avant beaucoup plus que 50 fois, car ce ne sont pas des moyennes simples mais des moyennes mobiles exponentielles… Donc on va dépasser très largement l’historique dispo de 255 barres en proscreener version complete.
Ceci expliquerait que tu arrives à le faire fonctionner en indicateur ou backtest/système auto avec beaucoup plus d’historique, mais pas en proscreener car le besoin de 250 barres sera juste assez pour tourner sans renvoyer d’erreur, mais pas assez pour avoir une mm exp convergée vers sa bonne valeur exploitable.
ah oui tu as raison. J’ai ce problème permanent avec le proscreener depuis le début. Est-ce que tu sais si dans une version ultérieure, il sera possible de pallier à cette situation ?
Merci en tout cas pour le retour.
En effet comme évoqué dans plusieurs sujets où tu utilises la KAMA 200 périodes 🙄
On peut obtenir 1000 unités d’historiques dans ProScreener avec un compte Premium 😉
Oui je pensais néanmoins que les upgrades de version avaient pu corrigés cela.