Distance cours kama

Viewing 9 posts - 1 through 9 (of 9 total)
  • Author
    Posts
  • #224294 quote
    finplus
    Participant
    Master
    /////////////////////////////////////KAMA 150
    
    Period = 150
    FastPeriod = 2
    SlowPeriod = 30
     
    Fastest = 2 / (FastPeriod + 1)
    Slowest = 2 / (SlowPeriod + 1)
    if barindex < Period+1 then
    Kama=close
    else
    Num = abs(close-close[Period])
    Den = summation[Period](abs(close-close[1]))
    ER = Num / Den
    Alpha = SQUARE(ER *(Fastest - Slowest )+ Slowest)
    KAMA = (Alpha * Close) + ((1 -Alpha)* Kama[1])
    endif
     
    
    ///////////////////////////////////////////////////////////////////: Distance Cours KAMA
     
    xClose = (Open+High+Low+Close)/4
    Distance = (xclose- kama)
     
    
    moy = exponentialaverage[period]((distance))
    
    
    if Moy<Moy[1] and Moy[1]>Moy[2] and Moy[1]>0 then
    RetB5=RetB4
    RetB4=RetB3
    RetB3=RetB2
    RetB2=RetB1
    RetB1=Moy[1]
    RetBmoy=(RetB1+RetB2+RetB3+RetB4+RetB5)/5
    endif
    
    if Moy>Moy[1] and Moy[1]<Moy[2] and Moy[1]<0 then
    RetH5=RetH4
    RetH4=RetH3
    RetH3=RetH2
    RetH2=RetH1
    RetH1=Moy[1]
    RetHmoy=(RetH1+RetH2+RetH3+RetH4+RetH5)/5
    endif
    
    if abs(retBmoy-0) > abs(retHmoy-0) then
    limitUP = retBmoy
    elsif abs(retBmoy-0) < abs(retHmoy-0) then
    LimitUp = -RetHmoy
    endif
    
    if abs(RetHmoy-0) > abs(RetBmoy-0) then
    limitDn = RetHmoy
    elsif abs(RetHmoy-0) < abs(RetBmoy-0) then
    LimitDn = - RetBmoy
    endif
    
    if ((xclose - kama) > 0) then
    distplus = distance
    else
    distminus =-distance
    endif
    
    
     
    MoyDistHigh = average[20](distplus)
    MoyDistlow = -average[20](distminus)
     
    
    
    G1=highest[150](distance)
    for i=0 to 49
    $montab[i]=distance[i]
    if distance[i]=G1 then
    i1=i
    endif
    next
    $montab[i1]=ArrayMin($montab)
    G2=ArrayMax($montab)
    moy2plusgrands=(G1+G2)/2
    
    
    
    G11=lowest[150](distance) // je reprends ta notation G11,G12 à la place des G1,G2 du cas des 2 plus grands
    for i=0 to 49
    $montab[i]=distance[i]
    if distance[i]=G11 then // attention, tu avaiss oublié de transformer G1 en G11 ici
    i2=i
    endif
    next
    $montab[i2]=ArrayMax($montab)// on élimine le plus petit en i1 du tableau en en faisant un plus grand, pour qu'ensuite l'arraymin donne le 2e plus petit de la série de départ
    G12=ArrayMin($montab)
    moy2pluspetits=(G11+G12)/2
    
    
    
    if (moydisthigh > moydisthigh[1]) and distance > moydisthigh then
    drawcandle (0,0, distance, distance) COLOURED (32,0,192)
    elsif (distance > moydisthigh) or (distance > retbmoy) then
    Drawcandle(0,0, distance, distance) COLOURED (0,204,255)
    endif
    
    if (moydistlow < moydistlow[1]) and distance < moydistlow  then
    drawcandle (0,0, distance, distance) COLOURED (255,0,0)
    elsif (distance < moydistlow) or (distance < rethmoy)  then
    Drawcandle (0,0, distance, distance) COLOURED (255,204,153)
    endif
    
    
    
    Return distance as "Distance", moy as "DM Moy", RetBmoy as "Moyenne 5 derniers retournements baissiers", RetHmoy as "Moyenne 5 derniers retournements haussiers", MoyDistHigh as "MoyDistHigh", MoyDistLow as "MoyDistLow", moy2plusgrands as "FilterUp", moy2pluspetits as "FilterDn"

    Bonjour,

    je filtre mes entrées en position à partir de cet indicateur que j’ai “bidouillé” avec l’aide des personnes (merci à elles pour leur dévouement et leur patience) qui animent ce site. J’aimerai que celles-ci revoient cet indicateur pour savoir si elle ne détectent pas d’anomalie de “construction”.

    Je l’utilise en filtrant avec cette formule :

    CrossLimitUp1h = (distance1h > moydisthigh1h) and (moydistHigh1h > MoyDistHigh1h[1]) and (moydisthigh1h < RetBmoy1h) and (moydisthigh1h[1] < RetBmoy1h[1]) and (moydisthigh1h[2] < RetBmoy1h[2]) pour entrer long
    CrossLimitDn1h = (distance1h < moydistlow1h) and (moydistLow1h < MoyDistLow1h[1]) and (MoydistLow1h > RetHmoy1h) and (MoydistLow1h[1] > RetHmoy1h[1]) and (MoydistLow1h[2] > RetHmoy1h[2]) pour entrer en cours

    Or, en programmation automatique, certaines positions sont prises quand par exemple la distance n’est pas au dessus de la moydistlight ou que la moydisthigh est au dessus de RetBmoy.

    Est-ce quelque chose “cloche” dans l’indicateur par hasard ?

    merci.

    #224355 quote
    finplus
    Participant
    Master

    Pour information, ne pas tenir compte de l’ajout “1H” dans la formule pour entrer long ou court. En pratique, comme je travaille en multiframe, j’ajoute à la fin des données cette indication de temps pour ne pas avoir de message d’erreurs (message du type : la donnée X est déjà utilisée ….).

    merci.

    #224525 quote
    JC_Bywan
    Moderator
    Master

    Tout ce qu’on peut dire à ce stade, c’est que si la prise de position ne correspond pas à une configuration des distance et distmoyhigh etc, toutes venues de l’indic, alors si ces valeurs servent de référence non respectées, ce ne sont pas dans ces valeurs qu’il faut chercher le problème, c’est dans le code supplémentaire déployé pour déclencher des positions à partir de ces valeurs.

    Pour débugguer le code de la stratégie non montrée, en fin du code de backtest on rajoute:

    graph CrossLimitUp1h as “CrossLimitUp1h ”

    graph CrossLimitDn1h as “CrossLimitDn1h ”

    graph toutes les autres conditions qu’on veut vérifier

    cela rajoute une fenêtre avec les variables graphées, pour celles où on trouve une anomalie (par exemple CrossLimitUp1h ) on détaille davantage en rajoutant tout ce qui intervient dedans:

    graph distance1h as “distance1h ”

    graph moydisthigh as “moydisthigh”

    etc…

    et en tirant sur le fil, on finit par tomber sur ce qui coince

    Si on devait “deviner”, par expérience statistique de bugs vus depuis le rajout du MTF, je dirais qu’il est assez probable qu’après avoir tiré sur le fil, on tombe sur un problème de type “regarder une valeur sur une ut non cloturée alors qu’on a mis un updateonclose sur l’ut dans le code et qu’elle n’a pas encore pris cette valeur”, ou bien “avoir mélangé des cross sur plusieurs ut comme s’ils étaient simultanés, alors qu’ils peuvent être décalés et empêcher une condition globale qui les teste simultanément d’être réalisée…

    #224532 quote
    finplus
    Participant
    Master

    Bon, merci. Je vais voir ce que je peux faire. mais c’était surtout les paramètres de l’indicateur qui m’intéressait. Est-il bien construit ou y a t il une erreur quelque part ?

    Merci quand même.

    #224533 quote
    JC_Bywan
    Moderator
    Master

    Je reconnais presque tout venant de tes requêtes de posts précédents, et rien d’anormal par rapport à avant ne me saute aux yeux, il y a juste les lignes 98-108 pour les drawcandle dont je ne me souviens pas, mais de toute façon elles ne jouent pas sur les calculs.

    Mais surtout, même s’il y avait une erreur quelconque là-dedans, ta stratégie ne peut pas savoir “toute seule” faire une bonne entrée qui correspondrait à une version idéale de l’indicateur différente de l’actuelle, donc chercher (et éventuellement trouver) une erreur dans l’indicateur n’expliquera pas pourquoi des positions ne sont pas prises par rapport aux valeurs actuellement observées.

    Je pense assez probable que si tu as utilisé du MTF dans ta stratégie, à coups de graph tu risques de finir par tomber sur une variable qui ne se comporte pas comme tu l’attends en MTF (mais c’est juste une hypothèse).

    #224597 quote
    finplus
    Participant
    Master

    Bonsoir, oui en effet, cet “indicateur” provient de mes demandes précédentes et pour lesquelles vous avez contribué (encore merci). Je vais essayer de faire comme vous avez expliqué. Mais je pense que le problème vient de la construction de MoyDistHigh et MoyDistLow. Mais je n’ai aucune certitude là-dessus car l’ai repéré des incohérences quand j’affiche l’indicateur. je vais essayer d’en repérer une et de poster une capture écran.

    #225048 quote
    finplus
    Participant
    Master

    Bonjour,

    je reviens encore sur cet indicateur (désolé encore mais vraiment je bute sur certains paramétrages mais je tiens beaucoup à cet indicateur qui me sert à filtrer mes entrées). Je voudrais que l’on m’aide à calculer la moyenne des distances (par exemple sur un historique de 20 bougies) en différenciant (donc en faisant deux moyennes séparées) le calcul de la moyenne des distances positives (lorsque le close est au dessus de la kama) et le calcul la moyenne des distances négatives (lorsque le close est au dessous de la kama). J’ai bidouillé un “truc” avec la formule distplus et distminus et cette formule ci-après mais je ne sais pas si elle est juste. Encore une fois merci pour votre aide et désolé pour ce N ème post sur ce sujet.

    MoyDistHigh = average[20](distplus)
    MoyDistlow = average[20](distminus)
    #225072 quote
    JC_Bywan
    Moderator
    Master

    Bsr,

    si parmi les 20 il y a un mélange de x1 distplus et de x2 distmoins (avec x1+x2=20), tout dépend si on veut faire:

    x1 distplus divisé par x1,  et  x2  distmoins divisé par x2

    ou

    x1 distplus divisé par 20,  et  x2  distmoins divisé par 20

    le premier semblerait avoir plus de sens, mais le 2e correspond aux lignes 67-68 issues des requêtes précédentes

    #225100 quote
    finplus
    Participant
    Master

    Merci.

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

Distance cours kama


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
author-avatar
finplus @finplus Participant
Summary

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

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 11/25/2023
Status: Active
Attachments: No files
Logo Logo
Loading...