Distance cours kama
Forums › ProRealTime forum Français › Support ProBuilder › Distance cours kama
- This topic has 8 replies, 2 voices, and was last updated 1 year ago by finplus.
-
-
11/25/2023 at 3:25 PM #224294Distance Cours KAMA123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112/////////////////////////////////////KAMA 150Period = 150FastPeriod = 2SlowPeriod = 30Fastest = 2 / (FastPeriod + 1)Slowest = 2 / (SlowPeriod + 1)if barindex < Period+1 thenKama=closeelseNum = abs(close-close[Period])Den = summation[Period](abs(close-close[1]))ER = Num / DenAlpha = SQUARE(ER *(Fastest - Slowest )+ Slowest)KAMA = (Alpha * Close) + ((1 -Alpha)* Kama[1])endif///////////////////////////////////////////////////////////////////: Distance Cours KAMAxClose = (Open+High+Low+Close)/4Distance = (xclose- kama)moy = exponentialaverage[period]((distance))if Moy<Moy[1] and Moy[1]>Moy[2] and Moy[1]>0 thenRetB5=RetB4RetB4=RetB3RetB3=RetB2RetB2=RetB1RetB1=Moy[1]RetBmoy=(RetB1+RetB2+RetB3+RetB4+RetB5)/5endifif Moy>Moy[1] and Moy[1]<Moy[2] and Moy[1]<0 thenRetH5=RetH4RetH4=RetH3RetH3=RetH2RetH2=RetH1RetH1=Moy[1]RetHmoy=(RetH1+RetH2+RetH3+RetH4+RetH5)/5endifif abs(retBmoy-0) > abs(retHmoy-0) thenlimitUP = retBmoyelsif abs(retBmoy-0) < abs(retHmoy-0) thenLimitUp = -RetHmoyendifif abs(RetHmoy-0) > abs(RetBmoy-0) thenlimitDn = RetHmoyelsif abs(RetHmoy-0) < abs(RetBmoy-0) thenLimitDn = - RetBmoyendifif ((xclose - kama) > 0) thendistplus = distanceelsedistminus =-distanceendifMoyDistHigh = average[20](distplus)MoyDistlow = -average[20](distminus)G1=highest[150](distance)for i=0 to 49$montab[i]=distance[i]if distance[i]=G1 theni1=iendifnext$montab[i1]=ArrayMin($montab)G2=ArrayMax($montab)moy2plusgrands=(G1+G2)/2G11=lowest[150](distance) // je reprends ta notation G11,G12 à la place des G1,G2 du cas des 2 plus grandsfor i=0 to 49$montab[i]=distance[i]if distance[i]=G11 then // attention, tu avaiss oublié de transformer G1 en G11 icii2=iendifnext$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épartG12=ArrayMin($montab)moy2pluspetits=(G11+G12)/2if (moydisthigh > moydisthigh[1]) and distance > moydisthigh thendrawcandle (0,0, distance, distance) COLOURED (32,0,192)elsif (distance > moydisthigh) or (distance > retbmoy) thenDrawcandle(0,0, distance, distance) COLOURED (0,204,255)endifif (moydistlow < moydistlow[1]) and distance < moydistlow thendrawcandle (0,0, distance, distance) COLOURED (255,0,0)elsif (distance < moydistlow) or (distance < rethmoy) thenDrawcandle (0,0, distance, distance) COLOURED (255,204,153)endifReturn 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 coursOr, 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.
11/27/2023 at 10:19 AM #224355Pour 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.
11/28/2023 at 6:38 PM #224525Tout 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…
11/28/2023 at 7:41 PM #22453211/28/2023 at 8:13 PM #224533Je 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).
11/29/2023 at 7:07 PM #224597Bonsoir, 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.
12/08/2023 at 11:20 AM #225048Bonjour,
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)12/08/2023 at 8:41 PM #225072Bsr,
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
12/10/2023 at 7:06 PM #225100 -
AuthorPosts
Find exclusive trading pro-tools on