Franchissement de limites
Forums › ProRealTime forum Français › Support ProScreener › Franchissement de limites
- This topic has 7 replies, 3 voices, and was last updated 2 years ago by finplus.
-
-
11/08/2022 at 7:41 PM #203817
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.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455// KAMA200Period1 = 200FastPeriod1 = 2SlowPeriod1 = 30Fastest1 = 2 / (FastPeriod1 + 1)Slowest1 = 2 / (SlowPeriod1 + 1)if barindex < Period1+1 thenKama200=closeelseNum1 = abs(close-close[Period1])Den1 = summation[Period1](abs(close-close[1]))ER1 = Num1 / Den1Alpha1 = SQUARE(ER1 *(Fastest1 - Slowest1 )+ Slowest1)KAMA200 = (Alpha1 * Close) + ((1 -Alpha1)* Kama200[1])endifPeriod = 50xClose = (Open+High+Low+Close)/4Distance = xclose- kama200if distance > 0 thendistanceUp = distanceendifif distance < 0 thendistanceDn = distanceendifEcartUp = exponentialaverage[period](distanceup)EcartDn = exponentialaverage[period](distanceDn)if ecartUp > -ecartDn thenspreadUp = ecartUpelsif ecartUp < -ecartDn thenspreadUp = -ecartDnendifif ecartDn < -ecartUp thenspreadDn = ecartDnelsif ecartDn > -ecartUp thenspreadDn = -ecartUpendifperiod = 50dev = 2.0MA = 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 :
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758// KAMA200Period1 = 200FastPeriod1 = 2SlowPeriod1 = 30Fastest1 = 2 / (FastPeriod1 + 1)Slowest1 = 2 / (SlowPeriod1 + 1)if barindex < Period1+1 thenKama200=closeelseNum1 = abs(close-close[Period1])Den1 = summation[Period1](abs(close-close[1]))ER1 = Num1 / Den1Alpha1 = SQUARE(ER1 *(Fastest1 - Slowest1 )+ Slowest1)KAMA200 = (Alpha1 * Close) + ((1 -Alpha1)* Kama200[1])endifPeriod = 50xClose = (Open+High+Low+Close)/4Distance = xclose- kama200if distance > 0 thendistanceUp = distanceendifif distance < 0 thendistanceDn = distanceendifEcartUp = exponentialaverage[period](distanceup)EcartDn = exponentialaverage[period](distanceDn)if ecartUp > -ecartDn thenspreadUp = ecartUpelsif ecartUp < -ecartDn thenspreadUp = -ecartDnendifif ecartDn < -ecartUp thenspreadDn = ecartDnelsif ecartDn > -ecartUp thenspreadDn = -ecartUpendifperiod = 50dev = 2.0BolUp = 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.
11/09/2022 at 9:14 AM #203845Bonjour, 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.
11/09/2022 at 7:48 PM #203877Bonsoir. 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).
11/09/2022 at 8:10 PM #203879screener franchissement de limites123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263// KAMA200Period1 = 200FastPeriod1 = 2SlowPeriod1 = 30Fastest1 = 2 / (FastPeriod1 + 1)Slowest1 = 2 / (SlowPeriod1 + 1)if barindex < Period1+1 thenKama200=closeelseNum1 = abs(close-close[Period1])Den1 = summation[Period1](abs(close-close[1]))ER1 = Num1 / Den1Alpha1 = SQUARE(ER1 *(Fastest1 - Slowest1 )+ Slowest1)KAMA200 = (Alpha1 * Close) + ((1 -Alpha1)* Kama200[1])endifPeriod = 50xClose = (Open+High+Low+Close)/4Distance = xclose- kama200if distance > 0 thendistanceUp = distanceendifif distance < 0 thendistanceDn = distanceendifEcartUp = exponentialaverage[period](distanceup)EcartDn = exponentialaverage[period](distanceDn)if ecartUp > -ecartDn thenspreadUp = ecartUpelsif ecartUp < -ecartDn thenspreadUp = -ecartDnendifif ecartDn < -ecartUp thenspreadDn = ecartDnelsif ecartDn > -ecartUp thenspreadDn = -ecartUpendif////////// RSI RVIignored, 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.
11/09/2022 at 8:38 PM #203880Bon, 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.
11/09/2022 at 8:44 PM #20388111/10/2022 at 8:47 AM #20390911/13/2022 at 5:52 PM #204113 -
AuthorPosts