Détection du plus bas et du plus haut
Forums › ProRealTime forum Français › Support ProBuilder › Détection du plus bas et du plus haut
- This topic has 5 replies, 2 voices, and was last updated 3 years ago by
finplus.
-
-
01/30/2022 at 1:58 PM #187065keltner & Trend123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081// Keltner ChannelperiodMA=20periodATR=10k=2a = closeMA = ExponentialAverage[periodMA](close)// Upper Keltner BandUpperBand = MA + k*AverageTrueRange[periodATR](close)// Lower Keltner BandLowerBand = MA - k*AverageTrueRange[periodATR](close)rangeKeltner = upperband - lowerband//////////////////////////////// Trend EnvelopppestimePeriod=14Deviation=0.1price=customclosedsma = WeightedAverage[timePeriod](price)valuesHigh = (1 + deviation / 100) * dsmavaluesLow = (1 - deviation / 100) * dsmainputs=priceif (inputs > valuesHigh)thentrend = 1elsif (inputs < valuesLow) thentrend = -1endifif (inputs > valuesHigh) thenecartup = inputs - lowerbandelsif (inputs < valuesHigh) thenecartup = 0endifif (trend > 0) thenalpha1 = 0if ( valuesLow < valuesLow[1]) thenvaluesLow = valuesLow[1]endifif trend[1]>0 thenoutputs0 = valuesLowoutputs1 = valueshighalpha0 = 255endifelsealpha0=0if (valuesHigh > valuesHigh[1]) thenvaluesHigh = valuesHigh[1]endifif trend[1]<0 thenoutputs1 = valuesHighoutputs0 = valueslowalpha1 = 255endifendifif trend = 1 thenposUp = ((outputs0 - lowerband) / rangekeltner)*100elsif trend = -1 thenposUp = 0endifif trend = -1 thenposDn = ((outputs1 - upperband) / rangekeltner)*100elsif trend = 1 thenposDn = 0endifll = highest[50] (posdn > -5)return posUp as "posup", posDn as "posdn", ll as "ll"
bonjour,
je reviens sur une demande que j’ai vu à de multiples reprises sur ce forum aves les solutions apportées mais que je n’arrive pas à adapter à mon cas. J’ai joint mon indicateur construit à partir de la formule de Keltner et d’un autre indicateur dont j’avais demandé la traduction pour être adapté à IG.
Je voudrais pouvoir identifier le plus bas des “posUp” et le plus haut des “PosDn” sur par exemple les 50 dernières périodes. J’ai tenté (pour identifier le plus haut du “posDn”) avec la formule “ll = highest[50] (posdn > -5)” en mettant posdn > -5 pour qu’il ne prenne pas la valeur “0”. Mais l’indicateur me ressort une donnée à 0.
Quelqu’un peut il m’aider à solutionner ce problème?
Merci et bon week-end.
01/31/2022 at 11:27 AM #187114Ok, si j’ai bien compris, tu veux le plus bas de l’un et le plus haut de l’autre sauf quand égal à zéro, c’est ça? Si oui, alors on peut remplacer toute la fin du code ci-dessus à partir de la ligne 66 par:
1234567891011121314151617181920if trend = 1 thenposUp = ((outputs0 - lowerband) / rangekeltner)*100posUpfiltre=posUpelsif trend = -1 thenposUp = 0posUpfiltre=close*1000000endifif trend = -1 thenposDn = ((outputs1 - upperband) / rangekeltner)*100posDnfiltre=posDnelsif trend = 1 thenposDn = 0posDnfiltre=-close*1000000endifll = highest[50](posDnfiltre)hh = lowest[50](posUpfiltre)return posUp as "posup", posDn as "posdn", ll as "ll", hh as "hh"NB: j’ai repris la notation ll que tu avais commencé, mais même si on nomme les variables comme on veut, juste une remarque en général sur le site on prend ll pour “lower low”, ce qui n’est pas le cas du type de calcul recherché ici puisque même si ça se passe vers le bas, on cherche en fait un plus haut d’une série basse (resp hh et higher high, alors que recherche de plus bas d’une série haute)
01/31/2022 at 9:24 PM #18717102/01/2022 at 6:32 PM #187270Bonsoir,
je vous fait un retour sur l’indicateur : les paramètres LL et HH fonctionnent pour les paires cotées contre yen mais pas pour le reste. Il me semble qu’il s’agit d’un problème d’échelle, les LL et HH étant autour (et c’est un exemple) à 1,24 et – 1,24 pour la paire GBP/CHF alors que le PosUp et le PosDn dépassent les 350. Donc les LL et HH sont écrasés.
Merci.
02/01/2022 at 11:06 PM #18728802/02/2022 at 6:42 PM #187387 -
AuthorPosts
Find exclusive trading pro-tools on