Conversion d'indicateurs vers ProBuilder
Forums › ProRealTime forum Français › Support ProBuilder › Conversion d'indicateurs vers ProBuilder
- This topic has 29 replies, 2 voices, and was last updated 7 years ago by Nicolas.
-
-
05/10/2017 at 1:46 PM #3506605/10/2017 at 8:13 PM #3511605/10/2017 at 9:14 PM #35122
Zero Lag Exponential Moving Average by John Ehlers
1234567891011121314151617// --- parametersSeries = CustomClose// Period = 20// ---Period = MAX(Period, 1)alpha = 2 / (1 + Period)per = ROUND((Period - 1) / 2)IF BarIndex <= per THENZLEMA = SeriesELSEZLEMA = ZLEMA[1] + alpha * (2 * Series - Series[per] - ZLEMA[1])ENDIFRETURN ZLEMA05/10/2017 at 9:42 PM #35132Ahrens Moving Average
12345678910111213141516//-----------------------//// Ahrens Moving Average ////-----------------------//// --- parametersSeries = CustomClose// Period = 20// ---IF BarIndex < Period THENAHMA = SeriesELSEAHMA = AHMA[1] + ((Series - ((AHMA[1] + AHMA[Period]) / 2)) / Period)ENDIFRETURN AHMA05/10/2017 at 9:54 PM #3513605/11/2017 at 8:13 PM #35240Aujourd’hui tentative de convertir http://unicorn.us.com/trading/src/_filter2pole.txt
J’ai tout bon sauf la fin… c’est balot 🙂
1234567891011121314151617181920for m = 1 to Fs begin {Fs=1 usually, except for small length}j = cascades-1;sig2 = sig1; {prior previous value of input signal}sig1 = sig0; {previous value of input signal}sig0 = p; {current input value}{this is the 1-pass filter}bw2[j] = bw1[j]; {prior previous filter value}bw1[j] = bw0[j]; {previous filter value}bw0[j] = a0*sig0 + a1*sig1 + a2*sig2 + b1*bw1[j] + b2*bw2[j];{cascade additional filters if needed}while j > 0 begink = j; j = j - 1;bw2[j] = bw1[j]; {shift current filter values to prior values}bw1[j] = bw0[j];bw0[j] = a0*bw0[k] + a1*bw1[k] + a2*bw2[k] + b1*bw1[j] + b2*bw2[j];end;end;Converti en :
123456789101112131415161718192021// actual filtering starts hereFOR m = 1 TO Fs DOj = cascades - 1sig2 = sig1sig1 = sig0sig0 = Seriesbw2[j] = bw1[j]bw1[j] = bw0[j]bw0[j] = a0 * sig0 + a1 * sig1 + a2 * sig2 + b1 * bw1[j] + b2 * bw2[j]WHILE j > 0 DOk = jj = j - 1bw2[j] = bw1[j]bw1[j] = bw0[j]bw0[j] = a0 * bw0[k] + a1 * bw1[k] + a2 * bw2[k] + b1 * bw1[j] + b2 * bw2[j]WENDNEXTForcément ça me plante aux tableaux. Personne verrait une astuce pour convertir ça correctement? Je suis preneur 🙂
05/11/2017 at 9:21 PM #3525105/11/2017 at 9:37 PM #35253Les variables qui s’incrementent en tableau dynamique, tu peux essayer de les renommer en leur donnant un nom distinct pour chacune d’elles.
Salut Nicolas!
Je comprends pas trop comment faire. 🙁
Tu pourrais me donner un exemple avec un bw pour voir?
05/12/2017 at 2:13 PM #3532805/12/2017 at 3:48 PM #3534205/14/2017 at 3:55 PM #35489One More Average
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647// OMA - One More Average// --- parametersSeries = CustomClose// Period = 20Adaptive = 1Sensibility = 1//--------Period = MAX(Period, 1)Sensibility = MAX(Sensibility, -1.5)Data = Average[1](Series)averagePeriod = PeriodIF BarIndex < Period THENOMA = SeriesELSEIF Adaptive = 1 AND averagePeriod > 1 THENminPeriod = averagePeriod / 2.0maxPeriod = minPeriod * 5.0endPeriod = ROUND(maxPeriod)signal = ABS((Data - Data[endPeriod]))noise = 0.00000000001FOR k = 1 TO endPeriod DOnoise = noise + ABS(Data - Data[k])averagePeriod = ROUND(((signal / noise) * (maxPeriod - minPeriod)) + minPeriod)NEXTENDIFalpha = (2.0 + Sensibility) / (1.0 + Sensibility + averagePeriod)e1 = e1 + alpha * (Data - e1)e2 = e2 + alpha * (e1 - e2)v1 = 1.5 * e1 - 0.5 * e2e3 = e3 + alpha * (v1 - e3)e4 = e4 + alpha * (e3 - e4)v2 = 1.5 * e3 - 0.5 * e4e5 = e5 + alpha * (v2 - e5)e6 = e6 + alpha * (e5 - e6)OMA = 1.5 * e5 - 0.5 * e6ENDIFRETURN OMAVoici mon code,
Vous auriez une idée de comment faire pour filtrer les valeurs proches de BarIndex = 0?
Cela fait du méga bruit, c’est même pas la valeur du cours et c’est moche.
J’attache un screen pour vous donner une idée!
05/14/2017 at 5:32 PM #35494Merci Laurenzo, il y a déjà deux indicateurs utilisant la OMA dans la bibliothèque pour info:
https://www.prorealcode.com/prorealtime-indicators/step-one-more-average/
https://www.prorealcode.com/prorealtime-indicators/one-more-average-macd/
05/15/2017 at 7:43 AM #3552805/15/2017 at 7:58 PM #35629Parabolic weighted MA
1234567891011121314151617// --- parametersSeries = CustomClose// Period = 20//--------Period = MAX(Period, 1)SumW = Period * PeriodSum = SumW * SeriesFOR i = 0 TO Period DOWeight = (Period - i) * (Period - i)SumW = SumW + WeightSum = Sum + Weight * Series[i]NEXTRETURN Sum / SumWça doit être sûrement ça!
05/15/2017 at 9:02 PM #35641Le bruit que tu observes est à la ligne 18 de ton code. En général j’attends qu’il y est assez de barindex pour commencer à tracer les résultats des calculs, voir le code des indicateurs que je t’indique dans mon post précédent.
-
AuthorPosts
Find exclusive trading pro-tools on