Conversion indicateur TradingView “Impulse MACD” de LazyBear
Forums › ProRealTime forum Français › Support ProBuilder › Conversion indicateur TradingView “Impulse MACD” de LazyBear
- This topic has 5 replies, 2 voices, and was last updated 1 year ago by Louloute.
-
-
02/13/2023 at 9:06 AM #209565
Bonjour,
J’ai converti le code de l’indicateur TradingView “Impulse MACD” de LazyBear
mais j’ai du me tromper car je n’obtiens pas de graph. en retour. Quelqu’un peut-il jeter un coup d’œil ?
J’ai un doute sur ma conversion de la ligne “smma=na(smma[1]) ? sma(src, len) : (smma[1] * (len – 1) + src) / len” car je n’ai pas pris en compte la partie “na(smma[1]) ” que je ne comprend pas bien.
En pièce jointe mon code.
Ci-dessous le lien ainsi que le code de l’indicateur “Impulse MACD” de LazyBear :
https://fr.tradingview.com/v/qt6xLfLi/
Code TradingView “Impulse MACD” de LazyBear :
//
// @author LazyBear
//
// List of my public indicators: http://bit.ly/1LQaPK8
// List of my app-store indicators: http://blog.tradingview.com/?p=970
//
//
study(“Impulse MACD [LazyBear]”, shorttitle=”IMACD_LB”, overlay=false)
lengthMA = input(34)
lengthSignal = input(9)
calc_smma(src, len) =>
smma=na(smma[1]) ? sma(src, len) : (smma[1] * (len – 1) + src) / len
smmacalc_zlema(src, length) =>
ema1=ema(src, length)
ema2=ema(ema1, length)
d=ema1-ema2
ema1+dsrc=hlc3
hi=calc_smma(high, lengthMA)
lo=calc_smma(low, lengthMA)
mi=calc_zlema(src, lengthMA)md=(mi>hi)? (mi-hi) : (mi<lo) ? (mi – lo) : 0
sb=sma(md, lengthSignal)
sh=md-sb
mdc=src>mi?src>hi?lime:green:src<lo?red:orange
plot(0, color=gray, linewidth=1, title=”MidLine”)
plot(md, color=mdc, linewidth=2, title=”ImpulseMACD”, style=histogram)
plot(sh, color=blue, linewidth=2, title=”ImpulseHisto”, style=histogram)
plot(sb, color=maroon, linewidth=2, title=”ImpulseMACDCDSignal”)ebc=input(false, title=”Enable bar colors”)
barcolor(ebc?mdc:na)//
Merci.
02/13/2023 at 9:32 AM #209572C’est un bloc conditionnel IF THEN ENDIF en 1 seule ligne. Ici le na() test si la variable smma[1] (donc dans la bougie qui précède) est Non Available (soit nulle), si c’est le cas alors on fait une moyenne mobile simple sans cette valeur, sinon on utilise dans un calcul plus élaboré.
En ProBuilder, cette fonction n’existe pas, on peut soit attendre une bougie (en faisant IF BARINDEX>1 ou en testant si la variable n’est pas égale à 0).
Je regarde ton code.
02/13/2023 at 9:53 AM #209575Ton code est correct, félicitations ! Le problème c’est en effet l’impossibilité de calculer quelquechose dés les premiers chandeliers car on a des valeurs nulles, donc il faut ajouter une condition sur le barindex, en général j’utilise la valeur la plus élevé des périodes de calcul, ici “lengthMA”, soit attendre 34 chandeliers avant de lancer des calculs:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879// @author LazyBear// Paramètres en entréelengthMA = 34lengthSignal = 9//src=hlc3src = (high + low + close)/3//if barindex>lengthMA then//calc_smma(src, len) =>//smma=na(smma[1]) ? sma(src, len) : (smma[1] * (len - 1) + src) / len//smma//hi=calc_smma(high, lengthMA)hi = (hi[1] * (lengthMA - 1) + high) / lengthMA//lo=calc_smma(low, lengthMA)lo = (lo[1] * (lengthMA - 1) + low) / lengthMA//calc_zlema(src, length) =>//ema1=ema(src, length)//ema2=ema(ema1, length)//d=ema1-ema2//ema1+d//mi=calc_zlema(src, lengthMA)ema1 = ExponentialAverage[lengthMA](src)ema2 = ExponentialAverage[lengthMA](ema1)d = ema1 - ema2mi = ema1 + d//md = (mi>hi) ? (mi-hi) : (mi<lo) ? (mi-lo) : 0if mi > hi thenmd = mi - hielsif mi < lo thenmd = mi - loelsemd = 0endIf//sb = sma(md, lengthSignal)//sh = md - sbsb = Average[lengthSignal](md)sh = md - sb//mdc = src>mi ? src>hi ? lime : green : src<lo ? red : orangeif src > mi thenif src > hi then//mdc = limemdcR = 0mdcG = 255mdcB = 0else//mdc = greenmdcR = 0mdcG = 128mdcB = 0endIfelsIf src < lo then//mdc = redmdcR = 255mdcG = 0mdcB = 0else//mdc = orangemdcR = 255mdcG = 165mdcB = 0endIf//plot(0, color=gray, linewidth=1, title="MidLine")//plot(md, color=mdc, linewidth=2, title="ImpulseMACD", style=histogram)//plot(sh, color=blue, linewidth=2, title="ImpulseHisto", style=histogram)//plot(sb, color=maroon, linewidth=2, title="ImpulseMACDCDSignal")//ebc=input(false, title="Enable bar colors")//barcolor(ebc?mdc:na)endifreturn 0 as "MidLine", md COLOURED(mdcR, mdcG, mdcB) style(histogram,1) as "ImpulseMACD", sh COLOURED("blue") style(histogram,2) as "ImpulseHisto", sb COLOURED("maroon") style(line,2) as "ImpulseMACDCDSignal"//, ema1, ema21 user thanked author for this post.
02/13/2023 at 10:49 AM #20957802/13/2023 at 11:08 AM #209583Oui dans ce cas c’est égal à 0 pour le premier calcul.
Mais comme indiqué dans mon premier message, dans le code initial il ne l’utilise pas si égale à 0, en langage ProBuilder ce serait comme ceci:
12345if hi[1] = 0 then //NAhi = average[lengthMA](high) //je remplis ma variable avec une valeur "quelconque"elsehi= (hi[1] * (lengthMA - 1) + high) / lengthMA //hi[1]existe alors je commence mes vrais calculsendif1 user thanked author for this post.
02/13/2023 at 12:02 PM #209600 -
AuthorPosts
Find exclusive trading pro-tools on