Franchissement de limites

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

    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.

    #203845 quote
    JC_Bywan
    Moderator
    Master

    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.

    #203877 quote
    finplus
    Participant
    Master

    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).

    #203879 quote
    finplus
    Participant
    Master
    // 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.

    #203880 quote
    JC_Bywan
    Moderator
    Master

    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.

    #203881 quote
    finplus
    Participant
    Master

    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.

    #203909 quote
    Nicolas
    Keymaster
    Master

    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 😉

    #204113 quote
    finplus
    Participant
    Master

    Oui je pensais néanmoins que les upgrades de version avaient pu corrigés cela.

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

Franchissement de limites


ProScreener : Scanners de Marché & Détection

New Reply
Author
author-avatar
finplus @finplus Participant
Summary

This topic contains 7 replies,
has 3 voices, and was last updated by finplus
3 years, 3 months ago.

Topic Details
Forum: ProScreener : Scanners de Marché & Détection
Language: French
Started: 11/08/2022
Status: Active
Attachments: No files
Logo Logo
Loading...