errore di programmazione

Viewing 1 post (of 1 total)
  • Author
    Posts
  • #155327 quote
    emanuele81emanuele81
    Participant
    Senior

     

    //--------- EXPLANATION ----------------------------------------------------------------
    
    // "Machine learning strategy " of best crossing strategy of 69 different averages
    // The strategy is simple
    //  if first average crosses above second avarage, go buy long
    //  and vice versa first average crosses under second avarage, sell short
    //  To protect the position, a stop loss (TSL) is set  TSL = round(100/10000*close)
    //  Exit the position in the afternoon at 16:00 hr  (Defparam flatafter = 160000)
    //  This program is limmited to only one trade per day OTD = Barindex - TradeIndex(1) > IntradayBarIndex, TradeIndex(3) would allow 2 openingstrades per day, TradeIndex(5) would allow 3 trades per day, and so on.
    // Opening trades only between 8:00 and 11:30, for American trades other times can be set.
    // There are 69 different types of averages, (listed below), which are used to cross each other (MAType crossing MATypeV2)
    //To limit Zigzagging of the averages due to market noise, an exponential average of 30 is added before the crossing condition is measured(wAFR = exponentialaverage[30](AFR) and wAFRv2 = exponentialaverage[30](AFRv2))
    // To limit the possibilities, the period is set for all average types to 15 (Period = 15, Period2 = 15), you may adjust the period used
    //  You can experiment with a different stop or a trailing stop
    //  Be aware that if you use this "machine learning" on a small set of data, the outcome will be overoptimized and you will find a different optimised set for a different small set of data.
    
    // The code is extremely long (> 7.000 lines, due to defining 69 and 69 different averages. The crossing strategy can be found at the last rows ! I was not aware this is possible in PRT
    
    //-------------------------------------------------------------------------
    DEFPARAM cumulateOrders = False // Cumulating positions deactivate
    DEFPARAM FLATAFTER = 160000 //close the position at 16:00 (day trading) /could be switched of 16
    
    once StartE = 80000  //start time for opening positions
    once StartL = 113000  //ending time for opening positions (only trading in the  morning)
    once N = 1  // number of contracts
    
    once Period = 15  //period1 // // set fixed to limit possible combinations of optimisations
    once Period2 = 15 // period2 second set of 69 averages  // // set fixed to limit possible combinations of optimisations
    
    Series = (open+high+low+Close)/4  // kind of close of a bar
    Seriesv2 = (open+high+low+Close)/4 // kind of close of a bar
    
    OTD = Barindex - TradeIndex(1) > IntradayBarIndex  // limits the (opening) trades till  1 per day (OTD One Trade per Day)
    TSL = round(100/10000*close)  // dynamic trailing stop loss  1 %
    
    
    ///69 averages to be compared with the same 69 avarages  to select best cross over combination//
    //---------------------------------------//
    // AFR - Average Filter Regression       //
    //                                       //
    // Contact: laurenzo(at)gargamail(dot)net //
    //---------------------------------------//
     
    //0. Ahrens Moving Average//
    // 1. Adjustable Lag FIR //
    // 2. Arnaud Legoux Moving Average //
    // 3. 2-Pole Butterworth Smoothing Filter //
    // 4. 3-Pole Butterworth Smoothing Filter //
    // 5. Corrected Moving Average by A.Uhl //
    // 6. d9 Unscented Kalman Filter (Responsiveness Version) //
    // 7. d9 Unscented Kalman Filter //
    // 8. Double Exponential Moving Average //
    // 9. Exponential Least Square Moving Average //
    // 10. Exponential Moving Average //
    // 11. Elastic Volume Weighted Moving Average //
    // 12. Fast Adaptive Trend Line //
    // 13. Fractional-Bar Quick Moving Average //
    // 14. Fractal Adaptive Moving Average //
    // 15. Generalized DEMA //
    // 16. 1-Pole Gaussian Filter //
    // 17. 2-Pole Gaussian Filter //
    // 18. 3-Pole Gaussian Filter //
    // 19. 4-Pole Gaussian Filter //
    // 20. Hull Moving Average //
    // 21. IE/2 Combination of LSMA and ILRS //
    // 22. Integral of Linear Regression Slope //
    // 23. iTrend by John Ehlers //
    // 24. Jurik Moving Average (Responsiveness Version) //
    // 25. Jurik Moving Average //
    // 26. Kaufman Adaptive Moving Average //
    // 27. Kalman Filter by John Ehlers //
    // 28. Kalman Filter (Responsiveness Version) //
    // 29. Kalman Filter //
    // 30. Leader Exponential Moving Average //
    // 31. Laguerre Filter by John Ehlers //
    // 32. Least Square Moving Average //
    // 33. McGinley Dynamic //
    // 34. Middle High Low Range Moving Average //
    // 35. McNicholl Moving Average //
    // 36. Non Lag Moving Average (Responsiveness Version) //
    // 37. Non Lag Moving Average //
    // 38. One More Average //
    // 39. Pentuple Exponential Moving Average //
    // 40. Parabolic Weighted Moving Average //
    // 41. Quadruple Exponential Moving Average //
    // 42. Regularized EMA by Chris Satchwell //
    // 43. Reference Fast Trend Line //
    // 44. Reference Slow Trend Line //
    // 45. Slow Adaptive Trend Line //
    // 46. Simple Moving Average //
    // 47. 2-Pole Super Smoothing Filter //
    // 48. 3-Pole Super Smoothing Filter //
    // 49. Smoothed Simple Moving Average //
    // 50. Sine Weighted Moving Average //
    // 51. T3 Moving Average //
    // 52. Triple Exponential Moving Average //
    // 53. Triangular Moving Average //
    // 54. Time Series Average //
    // 55. Variable Index Dynamic Average //
    // 56. Variable Moving Average //
    // 57. Volume Weighted Average Price //
    // 58. Wilder Moving Average //
    // 59. Weighted Least Square Moving Average //
    // 60. Weighted Moving Average //
    // 61. Zero Lag BMT //
    // 62. Zero Lag Double Exponential Moving Average //
    // 63. Zero Lag FIR Filter //
    // 64. Zero Lag IIR Filter //
    // 65. Zero Lag John Ehlers //
    // 66. Zero Lag Weighted BMT //
    // 67. Range based AV  high + STD - low - STD
    // 68. Average highest [period] and lowest[period]
    // 69  DEMA adjusted by itself
    
     
    //------------------------------//
    // AHMA - Ahrens Moving Average //
    //------------------------------//
     
    IF MAType = 0 THEN
     
    Period = MAX(Period, 1)
     
    IF BarIndex < Period THEN
    AFR = Series
    ELSE
    AFR = AFR[1] + ((Series - ((AFR[1] + AFR[Period]) / 2)) / Period)
    ENDIF
     
    ENDIF
     
    //----------------------------//
    // ALFIR - Adjustable Lag FIR //
    //----------------------------//
     
    IF MAType = 1 THEN
     
    // Lag = 0.7 ({-2.5...2.5})
    Lag = 0.7
     
    AFR = (Series + (2 + Lag) * Series[1] + (3 + Lag) * Series[2] + 3 * Series[3] + (2 - Lag) * Series[4] + (1 - Lag) * Series[5] + (0 - Lag) * Series[6]) / (12 - Lag)
     
    ENDIF
     
    //-------------------------------------//
    // ALMA - Arnaud Legoux Moving Average //
    //-------------------------------------//
     
    IF MAType = 2 THEN
     
    Period = MAX(Period, 1)
     
    // Sigma = 6 ({0..30})
    // Offset = 0.85 ({0..1})
    Sigma = 6
    Offset = 0.85
     
    m = ROUND(Offset * (Period - 1))
    s = Period / Sigma
     
    WtdSum = 0
    CumWt  = 0
     
    FOR k = 0 TO Period - 1 DO
    Wtd = EXP(-((k - m) * (k - m)) / (2 * s * s))
    WtdSum = WtdSum + Wtd * Series[Period - 1 - k]
    CumWt = CumWt + Wtd
    NEXT
     
    IF CumWt <= 0 THEN
    AFR = Series
    ELSE
    AFR = WtdSum / CumWt
    ENDIF
     
    ENDIF
     
    //---------------------------------------------//
    // BSF2P - 2-Pole Butterworth Smoothing Filter //
    //---------------------------------------------//
     
    IF MAType = 3 THEN
     
    Period = MAX(Period, 1)
     
    a1 = EXP(-1.414 * 3.14159 / Period)
    b1 = 2 * a1 * COS(1.414 * 180 / Period)
     
    coef2 = b1
    coef3 = -a1 * a1
    coef1 = (1 - b1 + a1 * a1) / 4
     
    IF BarIndex < 2 THEN
    AFR = Series
    ELSE
    AFR = coef1 * (Series + 2 * Series[1] + Series[2]) + coef2 * AFR[1] + coef3 * AFR[2]
    ENDIF
     
    ENDIF
     
    //---------------------------------------------//
    // BSF3P - 3-Pole Butterworth Smoothing Filter //
    //---------------------------------------------//
     
    IF MAType = 4 THEN
     
    Period = MAX(Period, 1)
     
    a1 = EXP(-3.14159 / Period)
    b1 = 2 * a1 * COS(1.738 * 180 / Period)
    c1 = a1 * a1
     
    coef2 = b1 + c1
    coef3 = -(c1 + b1 * c1)
    coef4 = c1 * c1
    coef1 = (1 - b1 + c1) * (1 - c1) / 8
     
    IF BarIndex < 3 THEN
    AFR = Series
    ELSE
    AFR = coef1 * (Series + 3 * Series[1] + 3 * Series[2] + Series[3]) + coef2 * AFR[1] + coef3 * AFR[2] + coef4 * AFR[3]
    ENDIF
     
    ENDIF
     
    //-----------------------------------------//
    // CMA - Corrected Moving Average by A.Uhl //
    //-----------------------------------------//
     
    IF MAType = 5 THEN
     
    Period = MAX(Period, 1)
     
    IF BarIndex < Period THEN
    AFR = Series
    ELSE
    MA = Average[Period](Series)
    v1 = SQUARE(STD[Period](Series))
    v2 = SQUARE(AFR[1] - MA)
     
    IF v2 < v1 OR v2 = 0 THEN
    K = 0
    ELSE
    K = 1 - v1 / v2
    ENDIF
     
    AFR = AFR[1] + K * (MA - AFR[1])
    ENDIF
     
    ENDIF
     
    //-------------------------------------------------------------//
    // d9UKF - d9 Unscented Kalman Filter (Responsiveness Version) //
    //-------------------------------------------------------------//
     
    IF MAType = 6 THEN
     
    // Init
     
    Period = MAX(Period, 2)
     
    // longAvgWindow = 65 ({40..200})
    longAvgWindow = 65
     
    // permissivity = {0..3}
    permissivity = 2
     
    windowLength = 0.5 * (Period - 1)
     
    // FIX LOG - LOG(SQRT(windowLength)) / LOG(2) + 2
    lengthParam = (LOG(SQRT(windowLength)) / LOG(10)) / (LOG(2) / LOG(10)) + 2
    IF (lengthParam < 0) THEN
    lengthParam = 0
    ENDIF
     
    expFactor = lengthParam - 2
    IF (expFactor < 0.5) THEN
    expFactor = 0.5
    ENDIF
     
    sigma = SQRT(windowLength) * lengthParam
    beta = sigma / (sigma + 1)
     
    data = Average[1](Series) // AverageVMA(Input, 1, 1)[0]; //SMA(Input, 1)[0];
     
    IF (BarIndex < 10) THEN
     
    vxCum = 0
     
    hInterval = data
    lInterval = data
     
    Filt0 = data
    Filt1 = data
    AFR = data
     
    ELSE
     
    uDelta = data - hInterval[1]
    uAbs = ABS(uDelta)
     
    lDelta = data - lInterval[1]
    lAbs = ABS(lDelta)
     
    IF (uAbs > lAbs) THEN
    vx = uAbs
    ELSIF (uAbs < lAbs) THEN
    vx = lAbs
    ELSIF (uAbs = lAbs) THEN
    vx = 0
    ENDIF
     
    vxCum = vxCum[1] + 0.1 * (vx - vx[10])
     
    IF (BarIndex <= longAvgWindow + 1) THEN
    avgVx = avgVx[1] + 2.0 * (vxCum - avgVx[1]) / (longAvgWindow + 1)
    ELSE
    // SMA(_vxCum, _longAvgWindow)
    avgVx = Average[longAvgWindow](vxCum) // SMA(_vxCum, _longAvgWindow)
    ENDIF
     
    IF (avgVx > 0) THEN
    vxCoeff = vx / avgVx
    ENDIF
     
    // FIX Power - Power(lengthParam, 1.0 / expFactor)
    IF (EXP((1.0 / expFactor) * LOG(lengthParam))) THEN
    vxCoeff = EXP((1.0 / expFactor) * LOG(lengthParam))
    ENDIF
     
    IF (vxCoeff < 1) THEN
    vxCoeff = 1
    ENDIF
     
    // FIX Power - Power(vxCoeff, expFactor)
    vExp = EXP((expFactor) * LOG(vxCoeff))
     
    // FIX Power - Power(beta, SQRT(vExp))
    kV = EXP(SQRT(vExp) * LOG(beta))
     
    IF (uDelta > 0) THEN
    hInterval = data
    ELSE
    hInterval = data - kV * uDelta
    ENDIF
     
    IF (lDelta < 0) THEN
    lInterval = data
    ELSE
    lInterval = data - kV * lDelta
    ENDIF
           
    gamma = 0.45 * (Period - 1) / (0.45 * (Period - 1) + 2)
     
    // FIX Power - Power(gamma, vExp)
    alpha = EXP((vExp) * LOG(gamma))
     
    Filt0 = (1 - alpha) * data + alpha * Filt0[1]
    Det0 = (data - Filt0[0]) * (1 - gamma) + gamma * Det0[1]
    Filt1 = Filt0[0] + permissivity * Det0[0]
    Det1 = (Filt1[0] - AFR[1]) * ((1 - alpha) * (1 - alpha)) + (alpha * alpha) * Det1[1]
    AFR = AFR[1] + Det1[0]
    ENDIF
     
    ENDIF
     
    //------------------------------------//
    // d9UKF - d9 Unscented Kalman Filter //
    //------------------------------------//
     
    IF MAType = 7 THEN
     
    // Init
     
    Period = MAX(Period, 2)
     
    // longAvgWindow = {40..200}
    longAvgWindow = 65
     
    // permissivity = {0..3}
    permissivity = 1.25
     
    windowLength = 0.5 * (Period - 1)
     
    // FIX LOG - LOG(SQRT(windowLength)) / LOG(2) + 2
    lengthParam = (LOG(SQRT(windowLength)) / LOG(10)) / (LOG(2) / LOG(10)) + 2
    IF (lengthParam < 0) THEN
    lengthParam = 0
    ENDIF
     
    expFactor = lengthParam - 2
    IF (expFactor < 0.5) THEN
    expFactor = 0.5
    ENDIF
     
    sigma = SQRT(windowLength) * lengthParam
    beta = sigma / (sigma + 1)
     
    data = Average[1](Series) // AverageVMA(Input, 1, 1)[0]; //SMA(Input, 1)[0];
     
    IF (BarIndex < 10) THEN
     
    vxCum = 0
     
    hInterval = data
    lInterval = data
     
    Filt0 = data
    Filt1 = data
    AFR = data
     
    ELSE
     
    uDelta = data - hInterval[1]
    uAbs = ABS(uDelta)
     
    lDelta = data - lInterval[1]
    lAbs = ABS(lDelta)
     
    IF (uAbs > lAbs) THEN
    vx = uAbs
    ELSIF (uAbs < lAbs) THEN
    vx = lAbs
    ELSIF (uAbs = lAbs) THEN
    vx = 0
    ENDIF
     
    vxCum = vxCum[1] + 0.1 * (vx - vx[10])
     
    IF (BarIndex <= longAvgWindow + 1) THEN
    avgVx = avgVx[1] + 2.0 * (vxCum - avgVx[1]) / (longAvgWindow + 1)
    ELSE
    // SMA(_vxCum, _longAvgWindow)
    avgVx = Average[longAvgWindow](vxCum) // SMA(_vxCum, _longAvgWindow)
    ENDIF
     
    IF (avgVx > 0) THEN
    vxCoeff = vx / avgVx
    ENDIF
     
    // FIX Power - Power(lengthParam, 1.0 / expFactor)
    IF (EXP((1.0 / expFactor) * LOG(lengthParam))) THEN
    vxCoeff = EXP((1.0 / expFactor) * LOG(lengthParam))
    ENDIF
     
    IF (vxCoeff < 1) THEN
    vxCoeff = 1
    ENDIF
     
    // FIX Power - Power(vxCoeff, expFactor)
    vExp = EXP((expFactor) * LOG(vxCoeff))
     
    // FIX Power - Power(beta, SQRT(vExp))
    kV = EXP(SQRT(vExp) * LOG(beta))
     
    IF (uDelta > 0) THEN
    hInterval = data
    ELSE
    hInterval = data - kV * uDelta
    ENDIF
     
    IF (lDelta < 0) THEN
    lInterval = data
    ELSE
    lInterval = data - kV * lDelta
    ENDIF
           
    gamma = 0.45 * (Period - 1) / (0.45 * (Period - 1) + 2)
     
    // FIX Power - Power(gamma, vExp)
    alpha = EXP((vExp) * LOG(gamma))
     
    Filt0 = (1 - alpha) * data + alpha * Filt0[1]
    Det0 = (data - Filt0[0]) * (1 - gamma) + gamma * Det0[1]
    Filt1 = Filt0[0] + permissivity * Det0[0]
    Det1 = (Filt1[0] - AFR[1]) * ((1 - alpha) * (1 - alpha)) + (alpha * alpha) * Det1[1]
    AFR = AFR[1] + Det1[0]
    ENDIF
     
    ENDIF
     
    //------------------------------------------//
    // DEMA - Double Exponential Moving Average //
    //------------------------------------------//
     
    IF MAType = 8 THEN
     
    Period = MAX(Period, 1)
     
    AFR = DEMA[Period](Series)
     
    ENDIF
     
    //-------------------------------------------------//
    // ELSMA - Exponential Least Square Moving Average //
    //-------------------------------------------------//
     
    IF MAType = 9 THEN
     
    Period = MAX(Period, 1)
     
    // NumBars = 4
    NumBars = 4
     
    LR = LinearRegression[NumBars](Series)
     
    AFR = ExponentialAverage[Period](LR)
     
    ENDIF
     
    //----------------------------------//
    // EMA - Exponential Moving Average //
    //----------------------------------//
     
    IF MAType = 10 THEN
     
    Period = MAX(Period, 1)
     
    AFR = ExponentialAverage[Period](Series)
     
    ENDIF
     
    //------------------------------------------------//
    // EVWMA - Elastic Volume Weighted Moving Average //
    //------------------------------------------------//
     
    IF MAType = 11 THEN
     
    Period = MAX(Period, 1)
     
    IF BarIndex < Period THEN
    AFR = Series
    ELSE
    SumVol = summation[Period](Volume)
    IF SumVol = 0 THEN
    SumVol = 1
    ENDIF
    AFR = ((SumVol - Volume) * AFR + Volume * Series) / SumVol
    ENDIF
     
    ENDIF
     
    //---------------------------------//
    // FATL - Fast Adaptive Trend Line //
    //---------------------------------//
     
    IF MAType = 12 THEN
     
    AFR = 0.4360409450*Series[0]+0.3658689069*Series[1]+0.2460452079*Series[2]+0.1104506886*Series[3]-0.0054034585*Series[4]-0.0760367731*Series[5]-0.0933058722*Series[6]-0.0670110374*Series[7]-0.0190795053*Series[8]+0.0259609206*Series[9]+0.0502044896*Series[10]+0.0477818607*Series[11]+0.0249252327*Series[12]-0.0047706151*Series[13]-0.0272432537*Series[14]-0.0338917071*Series[15]-0.0244141482*Series[16]-0.0055774838*Series[17]+0.0128149838*Series[18]+0.0226522218*Series[19]+0.0208778257*Series[20]+0.0100299086*Series[21]-0.0036771622*Series[22]-0.0136744850*Series[23]-0.0160483392*Series[24]-0.0108597376*Series[25]-0.0016060704*Series[26]+0.0069480557*Series[27]+0.0110573605*Series[28]+0.0095711419*Series[29]+0.0040444064*Series[30]-0.0023824623*Series[31]-0.0067093714*Series[32]-0.0072003400*Series[33]-0.0047717710*Series[34]+0.0005541115*Series[35]+0.0007860160*Series[36]+0.0130129076*Series[37]+0.0040364019*Series[38]
     
    ENDIF
     
    //---------------------------------------------//
    // FBQMA - Fractional-Bar Quick Moving Average //
    //---------------------------------------------//
     
    IF MAType = 13 THEN
     
    Period = MAX(Period, 1)
     
    Peak  = Period / 3
    Num   = 0
    Denom = 0
     
    FOR j = 1 TO (Period + 1) DO
    IF j <= Peak THEN
    DataArray = j / Peak
    ELSE
    DataArray = (Period + 1 - j) / (Period + 1 - Peak)
    Num = Num + Series[j - 1] * DataArray
    Denom = Denom + DataArray
    ENDIF
    NEXT
     
    IF Denom <= 0 THEN
    AFR = Series
    ELSE
    AFR = Num / Denom
    ENDIF
     
    ENDIF
     
    //-----------------------------------------//
    // FRAMA - Fractal Adaptive Moving Average //
    //-----------------------------------------//
     
    IF MAType = 14 THEN
     
    Period = MAX(Period, 1)
     
    N3 = (highest[Period](High) - lowest[Period](Low)) / Period
    mH = High
    L = Low
     
    FOR count = 0 TO (Period / 2) - 1 DO
    count = ROUND(count)
    IF High[count] > mH THEN
    mH = High[count]
    ENDIF
    IF Low[count] < L THEN
    L = Low[count]
    ENDIF
    NEXT
     
    N1 = (mH - L) / (Period / 2)
    HH = High[ROUND(Period / 2)]
    LL = Low[ROUND(Period / 2)]
     
    FOR count = Period / 2 TO Period - 1 DO
    count = ROUND(count)
    IF High[count] > HH THEN
    HH = High[count]
    ENDIF
    IF Low[count] < LL THEN
    LL = Low[count]
    ENDIF
    NEXT
     
    N2 = (HH - LL) / (Period / 2)
     
    IF N1 > 0 AND N2 > 0 AND N3 > 0 THEN
    // FIX LOG
    Dimen = ((LOG(N1 + N2) / LOG(10)) - (LOG(N3) / LOG(10))) / (LOG(2) / LOG(10))
    ENDIF
     
    alpha = EXP(-4.6 * (Dimen - 1))
    IF alpha < 0.01 THEN
    alpha = 0.01
    ELSIF alpha > 1 THEN
    alpha = 1
    ENDIF
     
    IF BarIndex < Period THEN
    AFR = Series
    ELSE
    AFR = alpha * Series + (1 - alpha) * AFR[1]
    ENDIF
     
    ENDIF
     
    //--------------------------//
    // GDEMA - Generalized DEMA //
    //--------------------------//
     
    IF MAType = 15 THEN
     
    Period = MAX(Period, 1)
     
    // VFactor = 0.7 ({-2.5..2.5})
    VFactor = 0.7
     
    EMA0 = ExponentialAverage[Period](Series)
    EMA1 = ExponentialAverage[Period](EMA0)
     
    AFR = EMA0 * (1 + VFactor) - EMA1 * VFactor
     
    ENDIF
     
    //-------------------------------//
    // GF1P - 1-Pole Gaussian Filter //
    //-------------------------------//
     
    IF MAType = 16 THEN
     
    Period = MAX(Period, 2)
     
    IF BarIndex = 0 THEN
    w = 2 * 3.141592654 / Period
    w = 180 * w / 3.141592654
    b = (1 - COS(w)) / (1.41421 - 1)
    aa = -b + SQRT(b * b + 2 * b)
    a1 = 1 - aa
    y1 = Series
    ENDIF
     
    y = aa * Series + a1 * y1
    y1 = y
     
    AFR = y
     
    ENDIF
     
    //-------------------------------//
    // GF2P - 2-Pole Gaussian Filter //
    //-------------------------------//
     
    IF MAType = 17 THEN
     
    Period = MAX(Period, 2)
     
    IF BarIndex = 0 THEN
    w = 2 * 3.141592654 / Period
    w = 180 * w / 3.141592654
    b = (1 - COS(w)) / (1.41421 - 1)
    aa = -b + SQRT(b * b + 2 * b)
    a1 = 1 - aa
    a12 = a1 * a1
    a2 = aa * aa
    y1 = Series
    y2 = y1
    ENDIF
     
    y = a2 * Series + 2 * a1 * y1 - a12 * y2
    y2 = y1
    y1 = y
     
    AFR = y
     
    ENDIF
     
    //-------------------------------//
    // GF3P - 3-Pole Gaussian Filter //
    //-------------------------------//
     
    IF MAType = 18 THEN
     
    Period = MAX(Period, 2)
     
    IF BarIndex = 0 THEN
    w = 2 * 3.141592654 / Period
    w = 180 * w / 3.141592654
    b = (1 - COS(w)) / (1.25992 - 1)
    aa = -b + SQRT(b * b + 2 * b)
    a1 = 1 - aa
    a12 = a1 * a1
    a13 = a1 * a1 * a1
    a3 = aa * aa * aa
    y1 = Series
    y2 = y1
    y3 = y2
    ENDIF
     
    y = a3 * Series + 3 * a1 * y1 - 3 * a12 * y2 + a13 * y3
    y3 = y2
    y2 = y1
    y1 = y
     
    AFR = y
     
    ENDIF
     
    //-------------------------------//
    // GF4P - 4-Pole Gaussian Filter //
    //-------------------------------//
     
    IF MAType = 19 THEN
     
    Period = MAX(Period, 2)
     
    IF BarIndex = 0 THEN
    w = 2 * 3.141592654 / Period
    w = 180 * w / 3.141592654
    b = (1 - COS(w)) / (1.18920 - 1)
    aa = -b + SQRT(b * b + 2 * b)
    a1 = 1 - aa
    a12 = a1 * a1
    a13 = a1 * a1 * a1
    a14 = a12 * a12
    a2 = aa * aa
    a4 = a2 * a2
    y1 = Series
    y2 = y1
    y3 = y2
    y4 = y3
    ENDIF
     
    y = a4 * Series + 4 * a1 * y1 - 6 * a12 * y2 + 4 * a13 *y3 - a14 * y4
    y4 = y3
    y3 = y2
    y2 = y1
    y1 = y
     
    AFR = y
     
    ENDIF
     
    //---------------------------//
    // HMA - Hull Moving Average //
    //---------------------------//
     
    IF MAType = 20 THEN
     
    Period = MAX(Period, 1)
     
    AFR = WeightedAverage[ROUND(SQRT(Period))](2 * WeightedAverage[ROUND(Period / 2)](Series) - WeightedAverage[Period](Series))
     
    ENDIF
     
    //-------------------------------------//
    // IE/2 - Combination of LSMA and ILRS //
    //-------------------------------------//
     
    IF MAType = 21 THEN
     
    Period = MAX(Period, 2)
     
    LR = LinearRegression[Period](Series)
    LRS = LinearRegressionSlope[Period](Series)
    SMA = Average[Period](Series)
     
    AFR = (LR + LRS + SMA) / 2
     
    ENDIF
     
    //--------------------------------------------//
    // ILRS - Integral of Linear Regression Slope //
    //--------------------------------------------//
     
    IF MAType = 22 THEN
     
    Period = MAX(Period, 2)
     
    SumBars = Period * (Period - 1) * 0.5
    SumSqrBars = Period * (Period - 1) * Period * (2 * Period - 1) / 6
     
    IF (BarIndex < Period) then
    AFR = Series
    ELSE
    Sum1 = 0
    SumY = 0
    MA = Average[1](Series)
    FOR i = 0 TO Period - 1 DO
    Sum1 = Sum1 + (i * MA[i])
    SumY = SumY + MA[i]
    NEXT
    Num1 = Period * Sum1 - SumBars * SumY
    Num2 = SumBars * SumBars - Period * SumSqrBars
    AFR = Num1 / Num2 + Average[Period](Series)
    ENDIF
     
    ENDIF
     
    //--------------------------------//
    // iTrend - iTrend by John Ehlers //
    //--------------------------------//
     
    IF MAType = 23 THEN
     
    // alpha = 0.0025 {0.0025..0.2}
    alpha = 0.005
     
    IF BarIndex < 2 THEN
    AFR = Series
    ELSE
    i1 = (alpha - alpha * alpha / 4) * Series
    i2 = 0.5 * alpha * alpha * Series[1]
    i3 = (alpha - 0.75 * alpha * alpha) * Series[2]
    i4 = 2 * (1 - alpha) * AFR[1]
    i5 = (1 - alpha) * (1 - alpha) * AFR[2]
    AFR = i1 + i2 - i3 + i4 - i5
    ENDIF
     
    ENDIF
     
    //-----------------------------------------------------//
    // JMA - Jurik Moving Average (Responsiveness Version) //
    //-----------------------------------------------------//
     
    IF MAType = 24 THEN
     
    Period = MAX(Period, 1)
     
    // Pow = 5 ({ 1..10 })
    // R = 1.5 ({0.5..2.5})
    Pow = 5
    R = 1
     
    beta = 0.45 * (Period - 1) / (0.45 * (Period - 1) + 2)
     
    IF Pow = 1 THEN
    alpha = beta
    ELSIF Pow = 2 THEN
    alpha = beta * beta
    ELSIF Pow = 3 THEN
    alpha = beta * beta * beta
    ELSIF Pow = 4 THEN
    alpha = beta * beta * beta * beta
    ELSIF Pow = 5 THEN
    alpha = beta * beta * beta * beta * beta
    ELSIF Pow = 6 THEN
    alpha = beta * beta * beta * beta * beta * beta
    ELSIF Pow = 7 THEN
    alpha = beta * beta * beta * beta * beta * beta * beta
    ELSIF Pow = 8 THEN
    alpha = beta * beta * beta * beta * beta * beta * beta * beta
    ELSIF Pow = 9 THEN
    alpha = beta * beta * beta * beta * beta * beta * beta * beta * beta
    ELSIF Pow = 10 THEN
    alpha = beta * beta * beta * beta * beta * beta * beta * beta * beta
    ENDIF
     
    IF BarIndex = 0 THEN
    Filt0 = Series
    Filt1 = Series
    AFR = Series
    ELSE
    Filt0 = (1 - alpha) * Series + alpha * Filt0[1]
    Det0 = (Series - Filt0[0]) * (1 - beta) + beta * Det0[1]
    Filt1 = Filt0[0] + R * Det0[0]
    Det1 = (Filt1[0] - AFR[1]) * ((1 - alpha) * (1 - alpha)) + (alpha * alpha) * Det1[1]
    AFR = AFR[1] + Det1[0]
    ENDIF
     
    ENDIF
     
    //----------------------------//
    // JMA - Jurik Moving Average //
    //----------------------------//
     
    IF MAType = 25 THEN
     
    Period = MAX(Period, 1)
     
    // Pow = 5 ({ 1..10 })
    // R = 1.5 ({0.5..2.5})
    Pow = 4
    R = 1
     
    beta = 0.45 * (Period - 1) / (0.45 * (Period - 1) + 2)
     
    IF Pow = 1 THEN
    alpha = beta
    ELSIF Pow = 2 THEN
    alpha = beta * beta
    ELSIF Pow = 3 THEN
    alpha = beta * beta * beta
    ELSIF Pow = 4 THEN
    alpha = beta * beta * beta * beta
    ELSIF Pow = 5 THEN
    alpha = beta * beta * beta * beta * beta
    ELSIF Pow = 6 THEN
    alpha = beta * beta * beta * beta * beta * beta
    ELSIF Pow = 7 THEN
    alpha = beta * beta * beta * beta * beta * beta * beta
    ELSIF Pow = 8 THEN
    alpha = beta * beta * beta * beta * beta * beta * beta * beta
    ELSIF Pow = 9 THEN
    alpha = beta * beta * beta * beta * beta * beta * beta * beta * beta
    ELSIF Pow = 10 THEN
    alpha = beta * beta * beta * beta * beta * beta * beta * beta * beta
    ENDIF
     
    IF BarIndex = 0 THEN
    Filt0 = Series
    Filt1 = Series
    AFR = Series
    ELSE
    Filt0 = (1 - alpha) * Series + alpha * Filt0[1]
    Det0 = (Series - Filt0[0]) * (1 - beta) + beta * Det0[1]
    Filt1 = Filt0[0] + R * Det0[0]
    Det1 = (Filt1[0] - AFR[1]) * ((1 - alpha) * (1 - alpha)) + (alpha * alpha) * Det1[1]
    AFR = AFR[1] + Det1[0]
    ENDIF
     
    ENDIF
     
    //----------------------------------------//
    // KAMA - Kaufman Adaptive Moving Average //
    //----------------------------------------//
     
    IF MAType = 26 THEN
     
    Period = MAX(Period, 4)
     
    // FastPeriod = 7
    // SlowPeriod = 28
    FastPeriod = 7
    SlowPeriod = 28
     
    Fastest = 2 / (FastPeriod + 1)
    Slowest = 2 / (SlowPeriod + 1)
     
    IF BarIndex < Period THEN
    AFR = Series
    ELSE
    Num = ABS(Series - Series[Period])
    Den = summation[Period](ABS(Series - Series[1]))
    ER = Num / Den
    Alpha = SQUARE(ER * (Fastest - Slowest) + Slowest)
    AFR = (Alpha * Series) + ((1 - Alpha) * AFR[1])
    ENDIF
     
    ENDIF
     
    //-------------------------------------//
    // KFJE - Kalman Filter by John Ehlers //
    //-------------------------------------//
     
    IF MAType = 27 THEN
     
    IF BarIndex < 3 THEN
    AFR = Series
    ELSE
    AFR = 0.33 * (Series + 0.5 * (Series - Series[3])) + 0.67 * AFR[1]
    ENDIF
     
    ENDIF
     
    //---------------------------------------------//
    // KF - Kalman Filter (Responsiveness Version) //
    //---------------------------------------------//
     
    IF MAType = 28 THEN
     
    // K = 1000 ({1...2000})
    K = 1000
     
    ONCE Pred = Series
     
    IF BarIndex = 0 THEN
    AFR = Series
    ELSE
    Smooth = Pred + (Series - Pred) * SQRT((K / 10000) * 2)
    Velo = Velo + ((K / 10000) * (Series - Pred))
    Pred = Smooth + Velo
    AFR = Pred
    ENDIF
     
    ENDIF
     
    //--------------------//
    // KF - Kalman Filter //
    //--------------------//
     
    IF MAType = 29 THEN
     
    // K = 500 ({1...2000})
    K = 500
     
    ONCE Pred = Series
     
    IF BarIndex = 0 THEN
    AFR = Series
    ELSE
    Smooth = Pred + (Series - Pred) * SQRT((K / 10000) * 2)
    Velo = Velo + ((K / 10000) * (Series - Pred))
    Pred = Smooth + Velo
    AFR = Pred
    ENDIF
     
    ENDIF
     
    //------------------------------------------//
    // LEMA - Leader Exponential Moving Average //
    //------------------------------------------//
     
    IF MAType = 30 THEN
     
    Period = MAX(Period, 1)
     
    IF BarIndex = 0 THEN
    p1 = Series
    p2 = 0
    ELSE
    alpha = 2 / (Period + 1)
    p1 = p1[1] + alpha * (Series - p1[1])
    p2 = p2[1] + alpha * (Series - p1 - p2[1])
    ENDIF
     
    AFR = p1 + p2
     
    ENDIF
     
    //-------------------------------------//
    // LF - Laguerre Filter by John Ehlers //
    //-------------------------------------//
     
    IF MAType = 31 THEN
     
    // gamma = 0.8
    gamma = 0.8
     
    once l0 = Series
    once l1 = Series
    once l2 = Series
    once l3 = Series
     
    IF BarIndex = 0 THEN
    AFR = Series
    ELSE
    l0 = (1 - gamma) * Series + gamma * l0[1]
    l1 = -gamma * l0 + l0[1] + gamma * l1[1]
    l2 = -gamma * l1 + l1[1] + gamma * l2[1]
    l3 = -gamma * l2 + l2[1] + gamma * l3[1]
    AFR = (l0 + 2 * l1 + 2 * l2 + l3) / 6
    ENDIF
     
    ENDIF
     
    //------------------------------------//
    // LSMA - Least Square Moving Average //
    //------------------------------------//
     
    IF MAType = 32 THEN
     
    Period = MAX(Period, 2)
     
    AFR = LinearRegression[Period](Series)
     
    ENDIF
     
    //-----------------------//
    // MD - McGinley Dynamic //
    //-----------------------//
     
    IF MAType = 33 THEN
     
    Period = MAX(Period, 4)
     
    IF BarIndex = 0 THEN
    AFR = Series
    ELSE
    Pow = (Series / AFR[1]) * (Series / AFR[1]) * (Series / AFR[1]) * (Series / AFR[1])
    AFR = AFR[1] + (Series - AFR[1]) / ((Period / 2) * Pow)
    ENDIF
     
    ENDIF
     
    //----------------------------------------------//
    // MHLMA - Middle High Low Range Moving Average //
    //----------------------------------------------//
     
    IF MAType = 34 THEN
     
    Period = MAX(Period, 1)
     
    // HLRange = 3
    HLRange = 3
     
    HH = highest[HLRange](High)
    LL = lowest[HLRange](Low)
     
    AFR  = Average[Period]((HH + LL) / 2)
     
    ENDIF
     
    //---------------------------------//
    // MNMA - McNicholl Moving Average //
    //---------------------------------//
     
    IF MAType = 35 THEN
     
    Period = MAX(Period, 2)
     
    alpha = 2 / (1 + Period)
     
    IF BarIndex = 0 THEN
    p1 = Series
    p2 = Series
    ELSE
    p1 = p1[1] + alpha * (Series - p1[1])
    p2 = p2[1] + alpha * (p1 - p2[1])
    ENDIF
     
    AFR = (((2 - alpha) * p1 - p2) / (1 - alpha))
     
    ENDIF
     
    //--------------------------------------------------------//
    // NLMA - Non Lag Moving Average (Responsiveness Version) //
    //--------------------------------------------------------//
     
    IF MAType = 36 THEN
     
    Period = MAX(Period, 1)
     
    // Amplitude = 1 (0...1)
    // Smooth = -1 (-2...2)
    Amplitude = 1
    Smooth = 1
     
    IF Amplitude > 0 THEN
    Coeff = 3 * 3.1415926535 / Amplitude
    ELSE
    Coeff = 3 * 3.1415926535
    ENDIF
     
    IF Smooth < -2 THEN
    Smooth = 0
    ENDIF
     
    vCycle = 4
    vWeight = 0
    vSum = 0
     
    Phase = Period + Smooth
     
    FOR i = 0 TO ((Period * vCycle) + Phase) - 1 DO
     
    IF i <= Phase - 1 THEN
    IF Phase = 1 THEN
    x = i
    ELSE
    x = i / (Phase - 1)
    ENDIF
    ELSE
    x = 1.0 + (i - Phase + 1) * (2.0 * vCycle - 1.0) / (vCycle * Period - 1.0)
    ENDIF
     
    g = Amplitude / (Coeff * x + 1.0)
    IF x <= 0.5 THEN
    g = 1.0
    ENDIF
     
    vSum = vSum + g * COS(180 * x) * Series[i]
    vWeight = vWeight + g * COS(180 * x)
     
    NEXT
            
    IF vWeight > 0 THEN
    AFR = vSum / vWeight
    ELSE
    AFR = Series
    ENDIF
     
    ENDIF
     
    //-------------------------------//
    // NLMA - Non Lag Moving Average //
    //-------------------------------//
     
    IF MAType = 37 THEN
     
    Period = MAX(Period, 1)
     
    // Amplitude = 0 (0...1)
    // Smooth = 1 (-2...2)
    Amplitude = 0
    Smooth = 1
     
    IF Amplitude > 0 THEN
    Coeff = 3 * 3.1415926535 / Amplitude
    ELSE
    Coeff = 3 * 3.1415926535
    ENDIF
     
    IF Smooth < -2 THEN
    Smooth = 0
    ENDIF
     
    vCycle = 4
    vWeight = 0
    vSum = 0
     
    Phase = Period + Smooth
     
    FOR i = 0 TO ((Period * vCycle) + Phase) - 1 DO
     
    IF i <= Phase - 1 THEN
    IF Phase = 1 THEN
    x = i
    ELSE
    x = i / (Phase - 1)
    ENDIF
    ELSE
    x = 1.0 + (i - Phase + 1) * (2.0 * vCycle - 1.0) / (vCycle * Period - 1.0)
    ENDIF
     
    g = Amplitude / (Coeff * x + 1.0)
    IF x <= 0.5 THEN
    g = 1.0
    ENDIF
     
    vSum = vSum + g * COS(180 * x) * Series[i]
    vWeight = vWeight + g * COS(180 * x)
     
    NEXT
            
    IF vWeight > 0 THEN
    AFR = vSum / vWeight
    ELSE
    AFR = Series
    ENDIF
     
    ENDIF
     
    //------------------------//
    // OMA - One More Average //
    //------------------------//
     
    IF MAType = 38 THEN
     
    // Sensibility = 1.5
    Sensibility = 1.5
     
    Period = MAX(Period, 1)
    Sensibility = MAX(Sensibility, -1.5)
     
    Data = Average[1](Series)
    averagePeriod = Period
     
    IF BarIndex < Period THEN
    AFR = Series
    ELSE
    IF averagePeriod > 1 THEN
    minPeriod = averagePeriod / 2.0
    maxPeriod = minPeriod * 5.0
    endPeriod = ROUND(maxPeriod)
    signal = ABS((Data - Data[endPeriod]))
    noise = 0.00000000001
    FOR k = 1 TO endPeriod DO
    noise = noise + ABS(Data - Data[k])
    averagePeriod = ROUND(((signal / noise) * (maxPeriod - minPeriod)) + minPeriod)
    NEXT
    ENDIF
     
    alpha = (2.0 + Sensibility) / (1.0 + Sensibility + averagePeriod)
     
    e1 = e1 + alpha * (Data - e1)
    e2 = e2 + alpha * (e1 - e2)
    v1 = 1.5 * e1 - 0.5 * e2
    e3 = e3 + alpha * (v1 - e3)
    e4 = e4 + alpha * (e3 - e4)
    v2 = 1.5 * e3 - 0.5 * e4
    e5 = e5 + alpha * (v2 - e5)
    e6 = e6 + alpha * (e5 - e6)
    AFR = 1.5 * e5 - 0.5 * e6
     
    ENDIF
     
    ENDIF
     
    //--------------------------------------------//
    // PEMA - Pentuple Exponential Moving Average //
    //--------------------------------------------//
     
    IF MAType = 39 THEN
     
    Period = MAX(Period, 1)
     
    MA1 = ExponentialAverage[Period](Series)
    MA2 = ExponentialAverage[Period](MA1)
    MA3 = ExponentialAverage[Period](MA2)
    MA4 = ExponentialAverage[Period](MA3)
    MA5 = ExponentialAverage[Period](MA4)
    MA6 = ExponentialAverage[Period](MA5)
    MA7 = ExponentialAverage[Period](MA6)
    MA8 = ExponentialAverage[Period](MA7)
     
    AFR = (8 * MA1) - (28 * MA2) + (56 * MA3) - (70 * MA4) + (56 * MA5) - (28 * MA6) + (8 * MA7) - MA8
     
    ENDIF
     
    //------------------------------------------//
    // PWMA - Parabolic Weighted Moving Average //
    //------------------------------------------//
     
    IF MAType = 40 THEN
     
    Period = MAX(Period, 1)
     
    Sum = SumW * Series
    SumW = Period * Period
     
    FOR i = 0 TO Period DO
    Weight = (Period - i) * (Period - i)
    SumW = SumW + Weight
    Sum = Sum + Weight * Series[i]
    NEXT
     
    AFR = Sum / SumW
     
    ENDIF
     
    //---------------------------------------------//
    // QEMA - Quadruple Exponential Moving Average //
    //---------------------------------------------//
     
    IF MAType = 41 THEN
     
    Period = MAX(Period, 1)
     
    MA1 = ExponentialAverage[Period](Series)
    MA2 = ExponentialAverage[Period](MA1)
    MA3 = ExponentialAverage[Period](MA2)
    MA4 = ExponentialAverage[Period](MA3)
    MA5 = ExponentialAverage[Period](MA4)
    AFR = (5 * MA1) - (10 * MA2) + (10 * MA3) - (5 * MA4) + MA5
     
    ENDIF
     
    //-------------------------------------------//
    // REMA - Regularized EMA by Chris Satchwell //
    //-------------------------------------------//
     
    IF MAType = 42 THEN
     
    // Lambda = 0.5 ({0.5..9})
    Lambda = 0.5
     
    Period = MAX(Period, 1)
    Lambda = MAX(Lambda, 0)
     
    IF BarIndex < 2 THEN
    AFR  = Series
    ELSE
    AFR = (AFR[1] * (1 + 2 * Lambda) + (2 / (Period + 1)) * (Series - AFR[1]) - Lambda * AFR[2]) / (1 + Lambda)
    ENDIF
     
    ENDIF
     
    //----------------------------------//
    // RFTL - Reference Fast Trend Line //
    //----------------------------------//
     
    IF MAType = 43 THEN
     
    AFR = -0.02232324*Series[0]+0.02268676*Series[1]+0.08389067*Series[2]+0.14630380*Series[3]+0.19282649*Series[4]+0.21002638*Series[5]+0.19282649*Series[6]+0.14630380*Series[7]+0.08389067*Series[8]+0.02268676*Series[9]-0.02232324*Series[10]-0.04296564*Series[11]-0.03980614*Series[12]-0.02082171*Series[13]+0.00243636*Series[14]+0.01950580*Series[15]+0.02460929*Series[16]+0.01799295*Series[17]+0.00470540*Series[18]-0.00831985*Series[19]-0.01544722*Series[20]-0.01456262*Series[21]-0.00733980*Series[22]+0.00201852*Series[23]+0.00902504*Series[24]+0.01093067*Series[25]+0.00766099*Series[26]+0.00145478*Series[27]-0.00447175*Series[28]-0.00750446*Series[29]-0.00671646*Series[30]-0.00304016*Series[31]+0.00143433*Series[32]+0.00457475*Series[33]+0.00517589*Series[34]+0.00336708*Series[35]+0.00034406*Series[36]-0.00233637*Series[37]-0.00352280*Series[38]-0.00293522*Series[39]-0.00114249*Series[40]+0.00083536*Series[41]+0.00215524*Series[42]+0.00604133*Series[43]-0.00013046*Series[44]
     
    ENDIF
     
    //----------------------------------//
    // RSTL - Reference Slow Trend Line //
    //----------------------------------//
     
    IF MAType = 44 THEN
     
    AFR = -0.00514293*Series[0]-0.00398417*Series[1]-0.00262594*Series[2]-0.00107121*Series[3]+0.00066887*Series[4]+0.00258172*Series[5]+0.00465269*Series[6]+0.00686394*Series[7]+0.00919334*Series[8]+0.01161720*Series[9]+0.01411056*Series[10]+0.01664635*Series[11]+0.01919533*Series[12]+0.02172747*Series[13]+0.02421320*Series[14]+0.02662203*Series[15]+0.02892446*Series[16]+0.03109071*Series[17]+0.03309496*Series[18]+0.03490921*Series[19]+0.03651145*Series[20]+0.03788045*Series[21]+0.03899804*Series[22]+0.03984915*Series[23]+0.04042329*Series[24]+0.04071263*Series[25]+0.04071263*Series[26]+0.04042329*Series[27]+0.03984915*Series[28]+0.03899804*Series[29]+0.03788045*Series[30]+0.03651145*Series[31]+0.03490921*Series[32]+0.03309496*Series[33]+0.03109071*Series[34]+0.02892446*Series[35]+0.02662203*Series[36]+0.02421320*Series[37]+0.02172747*Series[38]+0.01919533*Series[39]+0.01664635*Series[40]+0.01411056*Series[41]+0.01161720*Series[42]+0.00919334*Series[43]+0.00686394*Series[44]+0.00465269*Series[45]+0.00258172*Series[46]+0.00066887*Series[47]-0.00107121*Series[48]-0.00262594*Series[49]-0.00398417*Series[50]-0.00514293*Series[51]-0.00609634*Series[52]-0.00684602*Series[53]-0.00739452*Series[54]-0.00774847*Series[55]-0.00791630*Series[56]-0.00790940*Series[57]-0.00774085*Series[58]-0.00742482*Series[59]-0.00697718*Series[60]-0.00641613*Series[61]-0.00576108*Series[62]-0.00502957*Series[63]-0.00423873*Series[64]-0.00340812*Series[65]-0.00255923*Series[66]-0.00170217*Series[67]-0.00085902*Series[68]-0.00004113*Series[69]+0.00073700*Series[70]+0.00146422*Series[71]+0.00213007*Series[72]+0.00272649*Series[73]+0.00324752*Series[74]+0.00368922*Series[75]+0.00405000*Series[76]+0.00433024*Series[77]+0.00453068*Series[78]+0.00465046*Series[79]+0.00469058*Series[80]+0.00466041*Series[81]+0.00457855*Series[82]+0.00442491*Series[83]+0.00423019*Series[84]+0.00399201*Series[85]+0.00372169*Series[86]+0.00342736*Series[87]+0.00311822*Series[88]+0.00280309*Series[89]+0.00249088*Series[90]+0.00219089*Series[91]+0.00191283*Series[92]+0.00166683*Series[93]+0.00146419*Series[94]+0.00131867*Series[95]+0.00124645*Series[96]+0.00126836*Series[97]-0.00401854*Series[98]
     
    ENDIF
     
    //---------------------------------//
    // SATL - Slow Adaptive Trend Line //
    //---------------------------------//
     
    IF MAType = 45 THEN
     
    AFR = 0.0982862174*Series[0]+0.0975682269*Series[1]+0.0961401078*Series[2]+0.0940230544*Series[3]+0.0912437090*Series[4]+0.0878391006*Series[5]+0.0838544303*Series[6]+0.0793406350*Series[7]+0.0743569346*Series[8]+0.0689666682*Series[9]+0.0632381578*Series[10]+0.0572428925*Series[11]+0.0510534242*Series[12]+0.0447468229*Series[13]+0.0383959950*Series[14]+0.0320735368*Series[15]+0.0258537721*Series[16]+0.0198005183*Series[17]+0.0139807863*Series[18]+0.0084512448*Series[19]+0.0032639979*Series[20]-0.0015350359*Series[21]-0.0059060082*Series[22]-0.0098190256*Series[23]-0.0132507215*Series[24]-0.0161875265*Series[25]-0.0186164872*Series[26]-0.0205446727*Series[27]-0.0219739146*Series[28]-0.0229204861*Series[29]-0.0234080863*Series[30]-0.0234566315*Series[31]-0.0231017777*Series[32]-0.0223796900*Series[33]-0.0213300463*Series[34]-0.0199924534*Series[35]-0.0184126992*Series[36]-0.0166377699*Series[37]-0.0147139428*Series[38]-0.0126796776*Series[39]-0.0105938331*Series[40]-0.0084736770*Series[41]-0.0063841850*Series[42]-0.0043466731*Series[43]-0.0023956944*Series[44]-0.0005535180*Series[45]+0.0011421469*Series[46]+0.0026845693*Series[47]+0.0040471369*Series[48]+0.0052380201*Series[49]+0.0062194591*Series[50]+0.0070340085*Series[51]+0.0076266453*Series[52]+0.0080376628*Series[53]+0.0083037666*Series[54]+0.0083694798*Series[55]+0.0082901022*Series[56]+0.0080741359*Series[57]+0.0077543820*Series[58]+0.0073260526*Series[59]+0.0068163569*Series[60]+0.0062325477*Series[61]+0.0056078229*Series[62]+0.0049516078*Series[63]+0.0161380976*Series[64]
     
    ENDIF
     
    //-----------------------------//
    // SMA - Simple Moving Average //
    //-----------------------------//
     
    IF MAType = 46 THEN
     
    Period = MAX(Period, 1)
     
    AFR = Average[Period](Series)
     
    ENDIF
     
    //---------------------------------------//
    // SSF2P - 2-Pole Super Smoothing Filter //
    //---------------------------------------//
     
    IF MAType = 47 THEN
     
    Period = MAX(Period, 1)
     
    a1 = EXP(-1.414 * 3.14159 / Period)
    b1 = 2 * a1 * COS(1.414 * 180 / Period)
     
    coef2 = b1
    coef3 = -a1 * a1
    coef1 = 1 - coef2 - coef3
     
    IF BarIndex < 2 THEN
    AFR = Series
    ELSE
    AFR = coef1 * Series + coef2 * AFR[1] + coef3 * AFR[2]
    ENDIF
     
    ENDIF
     
    //---------------------------------------//
    // SSF3P - 3-Pole Super Smoothing Filter //
    //---------------------------------------//
     
    IF MAType = 48 THEN
     
    Period = MAX(Period, 1)
     
    a1 = EXP(-3.14159 / Period)
    b1 = 2 * a1 * COS(1.738 * 180 / Period)
    c1 = a1 * a1
     
    coef2 = b1 + c1
    coef3 = -(c1 + b1 * c1)
    coef4 = c1 * c1
    coef1 = 1 - coef2 - coef3 - coef4
     
    IF BarIndex < 3 THEN
    AFR = Series
    ELSE
    AFR = coef1 * Series + coef2 * AFR[1] + coef3 * AFR[2] + coef4 * AFR[3]
    ENDIF
     
    ENDIF
     
    //---------------------------------------//
    // SSMA - Smoothed Simple Moving Average //
    //---------------------------------------//
     
    IF MAType = 49 THEN
     
    Period = MAX(Period, 1)
     
    IF BarIndex = 0 THEN
    AFR = Series
    ELSE
    AFR = AFR[1] + (Series - AFR[1]) / Period
    ENDIF
     
    ENDIF
     
    //-------------------------------------//
    // SWMA - Sine Weighted Moving Average //
    //-------------------------------------//
     
    IF MAType = 50 THEN
     
    Period = MAX(Period, 1)
     
    Sum = 0
    CSum = 0
     
    FOR j = 0 TO Period - 1 DO
    Sum = Sum + Series[j] * SIN(90 * (1 - j / Period))
    CSum = CSum + SIN(90 * (1 - j / Period))
    NEXT
     
    IF CSum <= 0 THEN
    AFR = Series
    ELSE
    AFR = Sum / CSum
    ENDIF
     
    ENDIF
     
    //--------------------------//
    // T3MA - T3 Moving Average //
    //--------------------------//
     
    IF MAType = 51 THEN
     
    Period = MAX(Period, 1)
     
    // Hot = 0.7 ({-1.5..1.5})
    Hot = 0.7
     
    e1 = ExponentialAverage[Period](Series)
    e2 = ExponentialAverage[Period](e1)
    e3 = ExponentialAverage[Period](e2)
    e4 = ExponentialAverage[Period](e3)
    e5 = ExponentialAverage[Period](e4)
    e6 = ExponentialAverage[Period](e5)
     
    b = Hot
    b2 = (b * b)
    b3 = (b * b * b)
     
    c1 = -b3
    c2 = (3 * b2) + (3 * b3)
    c3 = (-6 * b2) - (3 * b) - (3 * b3)
    c4 = 1 + (3 * b) + b3 + (3 * b2)
     
    AFR = c1 * e6 + c2 * e5 + c3 * e4 + c4 * e3
     
    ENDIF
     
    //------------------------------------------//
    // TEMA - Triple Exponential Moving Average //
    //------------------------------------------//
     
    IF MAType = 52 THEN
     
    Period = MAX(Period, 1)
     
    AFR = TEMA[Period](Series)
     
    ENDIF
     
    //---------------------------------//
    // TMA - Triangular Moving Average //
    //---------------------------------//
     
    IF MAType = 53 THEN
     
    Period = MAX(Period, 1)
     
    AFR = TriangularAverage[Period](Series)
     
    ENDIF
     
    //---------------------------//
    // TSA - Time Series Average //
    //---------------------------//
     
    IF MAType = 54 THEN
     
    Period = MAX(Period, 1)
     
    AFR = TimeSeriesAverage[Period](Series)
     
    ENDIF
     
    //----------------------------------------//
    // VIDYA - Variable Index Dynamic Average //
    //----------------------------------------//
     
    IF MAType = 55 THEN
     
    Period = MAX(Period, 4)
     
    // Smooth = 5
    Smooth = 5
     
    ONCE SC = 2 / (Smooth + 1)
     
    AbsCMO = (ABS(Chandle[Period](Series))) / 100
     
    IF BarIndex < Period THEN
    AFR = Series
    ELSE
    AFR = (SC * AbsCMO * Series) + (1 - (SC * AbsCMO)) * AFR
    ENDIF
     
    ENDIF
     
    //-------------------------------//
    // VMA - Variable Moving Average //
    //-------------------------------//
     
    IF MAType = 56 THEN
     
    Period = MAX(Period, 4)
     
    IF BarIndex < Period THEN
    AFR = Series
    ELSE
    k = 1.0 / Period
    pdm = MAX((Series - Series[1]), 0)
    mdm = MAX((Series[1] - Series), 0)
    pdmS = ((1 - k) * (pdmS[1]) + k * pdm)
    mdmS = ((1 - k) * (mdmS[1]) + k * mdm)
    s = pdmS + mdmS
    pdi = pdmS / s
    mdi = mdmS / s
    pdiS = ((1 - k) * (pdiS[1]) + k * pdi)
    mdiS = ((1 - k) * (mdiS[1]) + k * mdi)
    d = ABS(pdiS - mdiS)
    s1 = pdiS + mdiS
    iS = ((1 - k) * (iS[1]) + k * d / s1)
    hhv = highest[Period](iS)
    llv = lowest[Period](iS)
    d1 = hhv - llv
    vI = (iS - llv) / d1
    AFR = (1 - k * vI) * (AFR[1]) + k * vI * Series
    ENDIF
     
    ENDIF
     
    //--------------------------------------//
    // VWAP - Volume Weighted Average Price //
    //--------------------------------------//
     
    IF MAType = 57 THEN
     
    Period = MAX(Period, 1)
     
    SumVol = summation[Period](Volume)
    IF SumVol = 0 THEN
    SumVol = 1
    ENDIF
     
    AFR = summation[Period](Series * Volume) / summation[Period](Volume)
     
    ENDIF
     
    //------------------------------//
    // WIMA - Wilder Moving Average //
    //------------------------------//
     
    IF MAType = 58 THEN
     
    Period = MAX(Period, 1)
     
    AFR = WilderAverage[Period](Series)
     
    ENDIF
     
    //----------------------------------------------//
    // WLSMA - Weighted Least Square Moving Average //
    //----------------------------------------------//
     
    IF MAType = 59 THEN
     
    Period = MAX(Period, 1)
     
    // NumBars = 4
    NumBars = 4
     
    LR = LinearRegression[NumBars](Series)
     
    AFR = WeightedAverage[Period](LR)
     
    ENDIF
     
    //-------------------------------//
    // WMA - Weighted Moving Average //
    //-------------------------------//
     
    IF MAType = 60 THEN
     
    Period = MAX(Period, 1)
     
    AFR = WeightedAverage[Period](Series)
     
    ENDIF
     
    //----------------------//
    // ZLBMT - Zero Lag BMT //
    //----------------------//
     
    IF MAType = 61 THEN
     
    Period = MAX(Period, 1)
     
    EMA0 = ExponentialAverage[Period](Series)
    EMA1 = ExponentialAverage[Period](EMA0)
     
    AFR = EMA0 + (EMA0 - EMA1)
     
    ENDIF
     
    //-----------------------------------------------------//
    // ZLDEMA - Zero Lag Double Exponential Moving Average //
    //-----------------------------------------------------//
     
    IF MAType = 62 THEN
     
    Period = MAX(Period, 1)
     
    DEMA0 = DEMA[Period](Series)
    DEMA1 = DEMA[Period](DEMA0)
     
    AFR = DEMA0 + (DEMA0 - DEMA1)
     
    ENDIF
     
    //----------------------------//
    // ZLFF - Zero Lag FIR Filter //
    //----------------------------//
     
    IF MAType = 63 THEN
     
    AFR = (Series + 2 * Series[1] + 3 * Series[2] + 3 * Series[3] + 2 * Series[4] + Series[5]) / 12
     
    ENDIF
     
    //----------------------------//
    // ZLIF - Zero Lag IIR Filter //
    //----------------------------//
     
    IF MAType = 64 THEN
     
    Period = MAX(Period, 1)
     
    k = 2 / (Period + 1)
    x = ROUND((Period - 1) / 2)
     
    IF BarIndex <= MAX(x, 0) THEN
    AFR = Series
    ELSE
    AFR = k * (2 * Series - Series[x]) + (1 - k) * AFR[1]
    ENDIF
     
    ENDIF
     
    //-----------------------------//
    // ZLJE - Zero Lag John Ehlers //
    //-----------------------------//
     
    IF MAType = 65 THEN
     
    Period = MAX(Period, 2)
     
    alpha = 2 / (1 + Period)
    per = ROUND((Period - 1) / 2)
     
    IF BarIndex < per THEN
    AFR = Series
    ELSE
    AFR = AFR[1] + alpha * (2 * Series - Series[per] - AFR[1])
    ENDIF
     
    ENDIF
     
    //--------------------------------//
    // ZLWBMT - Zero Lag Weighted BMT //
    //--------------------------------//
     
    IF MAType = 66 THEN
     
    Period = MAX(Period, 1)
     
    WMA0 = WeightedAverage[Period](Series)
    WMA1 = WeightedAverage[Period](WMA0)
     
    AFR = WMA0 + (WMA0 - WMA1)
     
    ENDIF
    
    //-----------------------------------------//
    // Range based AV  high + STD - low - STD  //
    //-----------------------------------------//
    IF MAType = 67 THEN
    Type = 1 //exponential average
    NxStd = 1 //Standard dev multiplier
    AvH= Average[Period,Type](high) + NxStd * STD[Period](high) //higher green line  HIGH + Std
    AvL= Average[Period,Type](low) + NxStd * STD[Period](low) //lower green line  LOW + Std
    Av= Average[Period,Type](close)
    AvHL= Average[Period,Type](high) - NxStd * STD[Period](high)  //higher red line HIGH - Std
    AvLL= Average[Period,Type](low) - NxStd * STD[Period](low) //lower red line   LOW - Std
    AFR = average[Period,Type]((close +AvH + AvL + Av + AvHL + AvLL)/6)
    endif
    
    //--------------------------------//
    // Average lowest plus highest //
    //--------------------------------//
     
    IF MAType = 68 THEN
     
    Period = MAX(Period, 1)
    AFR = (lowest[Period](series) + highest[Period](series))/2
     
    ENDIF
    
    //--------------------------------//
    // 69  DEMA adjusted by itself //
    //--------------------------------//
     
    IF MAType = 69 THEN
     
    Period = MAX(Period, 1)
    AFR = 2 * DEMA[Period](Series) - DEMA[Period](DEMA[Period](Series))
     
    ENDIF
    
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    
    //---------------------------------------//
    // AFRV2 - Average Filter Regression       //
    //                                       //
    // Contact: laurenzo(at)gargamail(dot)net //
    //---------------------------------------//
     
    // 0. Ahrens Moving Average //
    // 1. Adjustable Lag FIR //
    // 2. Arnaud Legoux Moving Average //
    // 3. 2-Pole Butterworth Smoothing Filter //
    // 4. 3-Pole Butterworth Smoothing Filter //
    // 5. Corrected Moving Average by A.Uhl //
    // 6. d9 Unscented Kalman Filter (Responsiveness Version) //
    // 7. d9 Unscented Kalman Filter //
    // 8. Double Exponential Moving Average //
    // 9. Exponential Least Square Moving Average //
    // 10. Exponential Moving Average //
    // 11. Elastic Volume Weighted Moving Average //
    // 12. Fast Adaptive Trend Line //
    // 13. Fractional-Bar Quick Moving Average //
    // 14. Fractal Adaptive Moving Average //
    // 15. Generalized DEMA //
    // 16. 1-Pole Gaussian Filter //
    // 17. 2-Pole Gaussian Filter //
    // 18. 3-Pole Gaussian Filter //
    // 19. 4-Pole Gaussian Filter //
    // 20. Hull Moving Average //
    // 21. IE/2 Combination of LSMA and ILRS //
    // 22. Integral of Linear Regression Slope //
    // 23. iTrend by John Ehlers //
    // 24. Jurik Moving Average (Responsiveness Version) //
    // 25. Jurik Moving Average //
    // 26. Kaufman Adaptive Moving Average //
    // 27. Kalman Filter by John Ehlers //
    // 28. Kalman Filter (Responsiveness Version) //
    // 29. Kalman Filter //
    // 30. Leader Exponential Moving Average //
    // 31. Laguerre Filter by John Ehlers //
    // 32. Least Square Moving Average //
    // 33. McGinley Dynamic //
    // 34. Middle High Low Range Moving Average //
    // 35. McNicholl Moving Average //
    // 36. Non Lag Moving Average (Responsiveness Version) //
    // 37. Non Lag Moving Average //
    // 38. One More Average //
    // 39. Pentuple Exponential Moving Average //
    // 40. Parabolic Weighted Moving Average //
    // 41. Quadruple Exponential Moving Average //
    // 42. Regularized EMA by Chris Satchwell //
    // 43. Reference Fast Trend Line //
    // 44. Reference Slow Trend Line //
    // 45. Slow Adaptive Trend Line //
    // 46. Simple Moving Average //
    // 47. 2-Pole Super Smoothing Filter //
    // 48. 3-Pole Super Smoothing Filter //
    // 49. Smoothed Simple Moving Average //
    // 50. Sine Weighted Moving Average //
    // 51. T3 Moving Average //
    // 52. Triple Exponential Moving Average //
    // 53. Triangular Moving Average //
    // 54. Time Seriesv2 Average //
    // 55. Variable Index Dynamic Average //
    // 56. Variable Moving Average //
    // 57. Volume Weighted Average Price //
    // 58. Wilder Moving Average //
    // 59. Weighted Least Square Moving Average //
    // 60. Weighted Moving Average //
    // 61. Zero Lag BMT //
    // 62. Zero Lag Double Exponential Moving Average //
    // 63. Zero Lag FIR Filter //
    // 64. Zero Lag IIR Filter //
    // 65. Zero Lag John Ehlers //
    // 66. Zero Lag Weighted BMT //
    // 67. Range based AV  high + STD - low - STD
    // 69  DEMA adjusted by itself
     
    //------------------------------//
    // AHMA - Ahrens Moving Average //
    //------------------------------//
     
    IF MATypev2 = 0 THEN
     
    Period2 = MAX(Period2, 1)
     
    IF BarIndex < Period2 THEN
    AFRV2 = Seriesv2
    ELSE
    AFRV2 = AFRV2[1] + ((Seriesv2 - ((AFRV2[1] + AFRV2[Period2]) / 2)) / Period2)
    ENDIF
     
    ENDIF
     
    //----------------------------//
    // ALFIR - Adjustable Lag FIR //
    //----------------------------//
     
    IF MATypev2 = 1 THEN
     
    // Lag = 0.7 ({-2.5...2.5})
    Lag = 0.7
     
    AFRV2 = (Seriesv2 + (2 + Lag) * Seriesv2[1] + (3 + Lag) * Seriesv2[2] + 3 * Seriesv2[3] + (2 - Lag) * Seriesv2[4] + (1 - Lag) * Seriesv2[5] + (0 - Lag) * Seriesv2[6]) / (12 - Lag)
     
    ENDIF
     
    //-------------------------------------//
    // ALMA - Arnaud Legoux Moving Average //
    //-------------------------------------//
     
    IF MATypev2 = 2 THEN
     
    Period2 = MAX(Period2, 1)
     
    // Sigma = 6 ({0..30})
    // Offset = 0.85 ({0..1})
    Sigma = 6
    Offset = 0.85
     
    m = ROUND(Offset * (Period2 - 1))
    s = Period2 / Sigma
     
    WtdSum = 0
    CumWt  = 0
     
    FOR k = 0 TO Period2 - 1 DO
    Wtd = EXP(-((k - m) * (k - m)) / (2 * s * s))
    WtdSum = WtdSum + Wtd * Seriesv2[Period2 - 1 - k]
    CumWt = CumWt + Wtd
    NEXT
     
    IF CumWt <= 0 THEN
    AFRV2 = Seriesv2
    ELSE
    AFRV2 = WtdSum / CumWt
    ENDIF
     
    ENDIF
     
    //---------------------------------------------//
    // BSF2P - 2-Pole Butterworth Smoothing Filter //
    //---------------------------------------------//
     
    IF MATypev2 = 3 THEN
     
    Period2 = MAX(Period2, 1)
     
    a1 = EXP(-1.414 * 3.14159 / Period2)
    b1 = 2 * a1 * COS(1.414 * 180 / Period2)
     
    coef2 = b1
    coef3 = -a1 * a1
    coef1 = (1 - b1 + a1 * a1) / 4
     
    IF BarIndex < 2 THEN
    AFRV2 = Seriesv2
    ELSE
    AFRV2 = coef1 * (Seriesv2 + 2 * Seriesv2[1] + Seriesv2[2]) + coef2 * AFRV2[1] + coef3 * AFRV2[2]
    ENDIF
     
    ENDIF
     
    //---------------------------------------------//
    // BSF3P - 3-Pole Butterworth Smoothing Filter //
    //---------------------------------------------//
     
    IF MATypev2 = 4 THEN
     
    Period2 = MAX(Period2, 1)
     
    a1 = EXP(-3.14159 / Period2)
    b1 = 2 * a1 * COS(1.738 * 180 / Period2)
    c1 = a1 * a1
     
    coef2 = b1 + c1
    coef3 = -(c1 + b1 * c1)
    coef4 = c1 * c1
    coef1 = (1 - b1 + c1) * (1 - c1) / 8
     
    IF BarIndex < 3 THEN
    AFRV2 = Seriesv2
    ELSE
    AFRV2 = coef1 * (Seriesv2 + 3 * Seriesv2[1] + 3 * Seriesv2[2] + Seriesv2[3]) + coef2 * AFRV2[1] + coef3 * AFRV2[2] + coef4 * AFRV2[3]
    ENDIF
     
    ENDIF
     
    //-----------------------------------------//
    // CMA - Corrected Moving Average by A.Uhl //
    //-----------------------------------------//
     
    IF MATypev2 = 5 THEN
     
    Period2 = MAX(Period2, 1)
     
    IF BarIndex < Period2 THEN
    AFRV2 = Seriesv2
    ELSE
    MA = Average[Period2](Seriesv2)
    v1 = SQUARE(STD[Period2](Seriesv2))
    v2 = SQUARE(AFRV2[1] - MA)
     
    IF v2 < v1 OR v2 = 0 THEN
    K = 0
    ELSE
    K = 1 - v1 / v2
    ENDIF
     
    AFRV2 = AFRV2[1] + K * (MA - AFRV2[1])
    ENDIF
     
    ENDIF
     
    //-------------------------------------------------------------//
    // d9UKF - d9 Unscented Kalman Filter (Responsiveness Version) //
    //-------------------------------------------------------------//
     
    IF MATypev2 = 6 THEN
     
    // Init
     
    Period2 = MAX(Period2, 2)
     
    // longAvgWindow = 65 ({40..200})
    longAvgWindow = 65
     
    // permissivity = {0..3}
    permissivity = 2
     
    windowLength = 0.5 * (Period2 - 1)
     
    // FIX LOG - LOG(SQRT(windowLength)) / LOG(2) + 2
    lengthParam = (LOG(SQRT(windowLength)) / LOG(10)) / (LOG(2) / LOG(10)) + 2
    IF (lengthParam < 0) THEN
    lengthParam = 0
    ENDIF
     
    expFactor = lengthParam - 2
    IF (expFactor < 0.5) THEN
    expFactor = 0.5
    ENDIF
     
    sigma = SQRT(windowLength) * lengthParam
    beta = sigma / (sigma + 1)
     
    data = Average[1](Seriesv2) // AverageVMA(Input, 1, 1)[0]; //SMA(Input, 1)[0];
     
    IF (BarIndex < 10) THEN
     
    vxCum = 0
     
    hInterval = data
    lInterval = data
     
    Filt0 = data
    Filt1 = data
    AFRV2 = data
     
    ELSE
     
    uDelta = data - hInterval[1]
    uAbs = ABS(uDelta)
     
    lDelta = data - lInterval[1]
    lAbs = ABS(lDelta)
     
    IF (uAbs > lAbs) THEN
    vx = uAbs
    ELSIF (uAbs < lAbs) THEN
    vx = lAbs
    ELSIF (uAbs = lAbs) THEN
    vx = 0
    ENDIF
     
    vxCum = vxCum[1] + 0.1 * (vx - vx[10])
     
    IF (BarIndex <= longAvgWindow + 1) THEN
    avgVx = avgVx[1] + 2.0 * (vxCum - avgVx[1]) / (longAvgWindow + 1)
    ELSE
    // SMA(_vxCum, _longAvgWindow)
    avgVx = Average[longAvgWindow](vxCum) // SMA(_vxCum, _longAvgWindow)
    ENDIF
     
    IF (avgVx > 0) THEN
    vxCoeff = vx / avgVx
    ENDIF
     
    // FIX Power - Power(lengthParam, 1.0 / expFactor)
    IF (EXP((1.0 / expFactor) * LOG(lengthParam))) THEN
    vxCoeff = EXP((1.0 / expFactor) * LOG(lengthParam))
    ENDIF
     
    IF (vxCoeff < 1) THEN
    vxCoeff = 1
    ENDIF
     
    // FIX Power - Power(vxCoeff, expFactor)
    vExp = EXP((expFactor) * LOG(vxCoeff))
     
    // FIX Power - Power(beta, SQRT(vExp))
    kV = EXP(SQRT(vExp) * LOG(beta))
     
    IF (uDelta > 0) THEN
    hInterval = data
    ELSE
    hInterval = data - kV * uDelta
    ENDIF
     
    IF (lDelta < 0) THEN
    lInterval = data
    ELSE
    lInterval = data - kV * lDelta
    ENDIF
           
    gamma = 0.45 * (Period2 - 1) / (0.45 * (Period2 - 1) + 2)
     
    // FIX Power - Power(gamma, vExp)
    alpha = EXP((vExp) * LOG(gamma))
     
    Filt0 = (1 - alpha) * data + alpha * Filt0[1]
    Det0 = (data - Filt0[0]) * (1 - gamma) + gamma * Det0[1]
    Filt1 = Filt0[0] + permissivity * Det0[0]
    Det1 = (Filt1[0] - AFRV2[1]) * ((1 - alpha) * (1 - alpha)) + (alpha * alpha) * Det1[1]
    AFRV2 = AFRV2[1] + Det1[0]
    ENDIF
     
    ENDIF
     
    //------------------------------------//
    // d9UKF - d9 Unscented Kalman Filter //
    //------------------------------------//
     
    IF MATypev2 = 7 THEN
     
    // Init
     
    Period2 = MAX(Period2, 2)
     
    // longAvgWindow = {40..200}
    longAvgWindow = 65
     
    // permissivity = {0..3}
    permissivity = 1.25
     
    windowLength = 0.5 * (Period2 - 1)
     
    // FIX LOG - LOG(SQRT(windowLength)) / LOG(2) + 2
    lengthParam = (LOG(SQRT(windowLength)) / LOG(10)) / (LOG(2) / LOG(10)) + 2
    IF (lengthParam < 0) THEN
    lengthParam = 0
    ENDIF
     
    expFactor = lengthParam - 2
    IF (expFactor < 0.5) THEN
    expFactor = 0.5
    ENDIF
     
    sigma = SQRT(windowLength) * lengthParam
    beta = sigma / (sigma + 1)
     
    data = Average[1](Seriesv2) // AverageVMA(Input, 1, 1)[0]; //SMA(Input, 1)[0];
     
    IF (BarIndex < 10) THEN
     
    vxCum = 0
     
    hInterval = data
    lInterval = data
     
    Filt0 = data
    Filt1 = data
    AFRV2 = data
     
    ELSE
     
    uDelta = data - hInterval[1]
    uAbs = ABS(uDelta)
     
    lDelta = data - lInterval[1]
    lAbs = ABS(lDelta)
     
    IF (uAbs > lAbs) THEN
    vx = uAbs
    ELSIF (uAbs < lAbs) THEN
    vx = lAbs
    ELSIF (uAbs = lAbs) THEN
    vx = 0
    ENDIF
     
    vxCum = vxCum[1] + 0.1 * (vx - vx[10])
     
    IF (BarIndex <= longAvgWindow + 1) THEN
    avgVx = avgVx[1] + 2.0 * (vxCum - avgVx[1]) / (longAvgWindow + 1)
    ELSE
    // SMA(_vxCum, _longAvgWindow)
    avgVx = Average[longAvgWindow](vxCum) // SMA(_vxCum, _longAvgWindow)
    ENDIF
     
    IF (avgVx > 0) THEN
    vxCoeff = vx / avgVx
    ENDIF
     
    // FIX Power - Power(lengthParam, 1.0 / expFactor)
    IF (EXP((1.0 / expFactor) * LOG(lengthParam))) THEN
    vxCoeff = EXP((1.0 / expFactor) * LOG(lengthParam))
    ENDIF
     
    IF (vxCoeff < 1) THEN
    vxCoeff = 1
    ENDIF
     
    // FIX Power - Power(vxCoeff, expFactor)
    vExp = EXP((expFactor) * LOG(vxCoeff))
     
    // FIX Power - Power(beta, SQRT(vExp))
    kV = EXP(SQRT(vExp) * LOG(beta))
     
    IF (uDelta > 0) THEN
    hInterval = data
    ELSE
    hInterval = data - kV * uDelta
    ENDIF
     
    IF (lDelta < 0) THEN
    lInterval = data
    ELSE
    lInterval = data - kV * lDelta
    ENDIF
           
    gamma = 0.45 * (Period2 - 1) / (0.45 * (Period2 - 1) + 2)
     
    // FIX Power - Power(gamma, vExp)
    alpha = EXP((vExp) * LOG(gamma))
     
    Filt0 = (1 - alpha) * data + alpha * Filt0[1]
    Det0 = (data - Filt0[0]) * (1 - gamma) + gamma * Det0[1]
    Filt1 = Filt0[0] + permissivity * Det0[0]
    Det1 = (Filt1[0] - AFRV2[1]) * ((1 - alpha) * (1 - alpha)) + (alpha * alpha) * Det1[1]
    AFRV2 = AFRV2[1] + Det1[0]
    ENDIF
     
    ENDIF
     
    //------------------------------------------//
    // DEMA - Double Exponential Moving Average //
    //------------------------------------------//
     
    IF MATypev2 = 8 THEN
     
    Period2 = MAX(Period2, 1)
     
    AFRV2 = DEMA[Period2](Seriesv2)
     
    ENDIF
     
    //-------------------------------------------------//
    // ELSMA - Exponential Least Square Moving Average //
    //-------------------------------------------------//
     
    IF MATypev2 = 9 THEN
     
    Period2 = MAX(Period2, 1)
     
    // NumBars = 4
    NumBars = 4
     
    LR = LinearRegression[NumBars](Seriesv2)
     
    AFRV2 = ExponentialAverage[Period2](LR)
     
    ENDIF
     
    //----------------------------------//
    // EMA - Exponential Moving Average //
    //----------------------------------//
     
    IF MATypev2 = 10 THEN
     
    Period2 = MAX(Period2, 1)
     
    AFRV2 = ExponentialAverage[Period2](Seriesv2)
     
    ENDIF
     
    //------------------------------------------------//
    // EVWMA - Elastic Volume Weighted Moving Average //
    //------------------------------------------------//
     
    IF MATypev2 = 11 THEN
     
    Period2 = MAX(Period2, 1)
     
    IF BarIndex < Period2 THEN
    AFRV2 = Seriesv2
    ELSE
    SumVol = summation[Period2](Volume)
    IF SumVol = 0 THEN
    SumVol = 1
    ENDIF
    AFRV2 = ((SumVol - Volume) * AFRV2 + Volume * Seriesv2) / SumVol
    ENDIF
     
    ENDIF
     
    //---------------------------------//
    // FATL - Fast Adaptive Trend Line //
    //---------------------------------//
     
    IF MATypev2 = 12 THEN
     
    AFRV2 = 0.4360409450*Seriesv2[0]+0.3658689069*Seriesv2[1]+0.2460452079*Seriesv2[2]+0.1104506886*Seriesv2[3]-0.0054034585*Seriesv2[4]-0.0760367731*Seriesv2[5]-0.0933058722*Seriesv2[6]-0.0670110374*Seriesv2[7]-0.0190795053*Seriesv2[8]+0.0259609206*Seriesv2[9]+0.0502044896*Seriesv2[10]+0.0477818607*Seriesv2[11]+0.0249252327*Seriesv2[12]-0.0047706151*Seriesv2[13]-0.0272432537*Seriesv2[14]-0.0338917071*Seriesv2[15]-0.0244141482*Seriesv2[16]-0.0055774838*Seriesv2[17]+0.0128149838*Seriesv2[18]+0.0226522218*Seriesv2[19]+0.0208778257*Seriesv2[20]+0.0100299086*Seriesv2[21]-0.0036771622*Seriesv2[22]-0.0136744850*Seriesv2[23]-0.0160483392*Seriesv2[24]-0.0108597376*Seriesv2[25]-0.0016060704*Seriesv2[26]+0.0069480557*Seriesv2[27]+0.0110573605*Seriesv2[28]+0.0095711419*Seriesv2[29]+0.0040444064*Seriesv2[30]-0.0023824623*Seriesv2[31]-0.0067093714*Seriesv2[32]-0.0072003400*Seriesv2[33]-0.0047717710*Seriesv2[34]+0.0005541115*Seriesv2[35]+0.0007860160*Seriesv2[36]+0.0130129076*Seriesv2[37]+0.0040364019*Seriesv2[38]
     
    ENDIF
     
    //---------------------------------------------//
    // FBQMA - Fractional-Bar Quick Moving Average //
    //---------------------------------------------//
     
    IF MATypev2 = 13 THEN
     
    Period2 = MAX(Period2, 1)
     
    Peak  = Period2 / 3
    Num   = 0
    Denom = 0
     
    FOR j = 1 TO (Period2 + 1) DO
    IF j <= Peak THEN
    DataArray = j / Peak
    ELSE
    DataArray = (Period2 + 1 - j) / (Period2 + 1 - Peak)
    Num = Num + Seriesv2[j - 1] * DataArray
    Denom = Denom + DataArray
    ENDIF
    NEXT
     
    IF Denom <= 0 THEN
    AFRV2 = Seriesv2
    ELSE
    AFRV2 = Num / Denom
    ENDIF
     
    ENDIF
     
    //-----------------------------------------//
    // FRAMA - Fractal Adaptive Moving Average //
    //-----------------------------------------//
     
    IF MATypev2 = 14 THEN
     
    Period2 = MAX(Period2, 1)
     
    N3 = (highest[Period2](High) - lowest[Period2](Low)) / Period2
    mH = High
    L = Low
     
    FOR count = 0 TO (Period2 / 2) - 1 DO
    count = ROUND(count)
    IF High[count] > mH THEN
    mH = High[count]
    ENDIF
    IF Low[count] < L THEN
    L = Low[count]
    ENDIF
    NEXT
     
    N1 = (mH - L) / (Period2 / 2)
    HH = High[ROUND(Period2 / 2)]
    LL = Low[ROUND(Period2 / 2)]
     
    FOR count = Period2 / 2 TO Period2 - 1 DO
    count = ROUND(count)
    IF High[count] > HH THEN
    HH = High[count]
    ENDIF
    IF Low[count] < LL THEN
    LL = Low[count]
    ENDIF
    NEXT
     
    N2 = (HH - LL) / (Period2 / 2)
     
    IF N1 > 0 AND N2 > 0 AND N3 > 0 THEN
    // FIX LOG
    Dimen = ((LOG(N1 + N2) / LOG(10)) - (LOG(N3) / LOG(10))) / (LOG(2) / LOG(10))
    ENDIF
     
    alpha = EXP(-4.6 * (Dimen - 1))
    IF alpha < 0.01 THEN
    alpha = 0.01
    ELSIF alpha > 1 THEN
    alpha = 1
    ENDIF
     
    IF BarIndex < Period2 THEN
    AFRV2 = Seriesv2
    ELSE
    AFRV2 = alpha * Seriesv2 + (1 - alpha) * AFRV2[1]
    ENDIF
     
    ENDIF
     
    //--------------------------//
    // GDEMA - Generalized DEMA //
    //--------------------------//
     
    IF MATypev2 = 15 THEN
     
    Period2 = MAX(Period2, 1)
     
    // VFactor = 0.7 ({-2.5..2.5})
    VFactor = 0.7
     
    EMA0 = ExponentialAverage[Period2](Seriesv2)
    EMA1 = ExponentialAverage[Period2](EMA0)
     
    AFRV2 = EMA0 * (1 + VFactor) - EMA1 * VFactor
     
    ENDIF
     
    //-------------------------------//
    // GF1P - 1-Pole Gaussian Filter //
    //-------------------------------//
     
    IF MATypev2 = 16 THEN
     
    Period2 = MAX(Period2, 2)
     
    IF BarIndex = 0 THEN
    w = 2 * 3.141592654 / Period2
    w = 180 * w / 3.141592654
    b = (1 - COS(w)) / (1.41421 - 1)
    aa = -b + SQRT(b * b + 2 * b)
    a1 = 1 - aa
    y1 = Seriesv2
    ENDIF
     
    y = aa * Seriesv2 + a1 * y1
    y1 = y
     
    AFRV2 = y
     
    ENDIF
     
    //-------------------------------//
    // GF2P - 2-Pole Gaussian Filter //
    //-------------------------------//
     
    IF MATypev2 = 17 THEN
     
    Period2 = MAX(Period2, 2)
     
    IF BarIndex = 0 THEN
    w = 2 * 3.141592654 / Period2
    w = 180 * w / 3.141592654
    b = (1 - COS(w)) / (1.41421 - 1)
    aa = -b + SQRT(b * b + 2 * b)
    a1 = 1 - aa
    a12 = a1 * a1
    a2 = aa * aa
    y1 = Seriesv2
    y2 = y1
    ENDIF
     
    y = a2 * Seriesv2 + 2 * a1 * y1 - a12 * y2
    y2 = y1
    y1 = y
     
    AFRV2 = y
     
    ENDIF
     
    //-------------------------------//
    // GF3P - 3-Pole Gaussian Filter //
    //-------------------------------//
     
    IF MATypev2 = 18 THEN
     
    Period2 = MAX(Period2, 2)
     
    IF BarIndex = 0 THEN
    w = 2 * 3.141592654 / Period2
    w = 180 * w / 3.141592654
    b = (1 - COS(w)) / (1.25992 - 1)
    aa = -b + SQRT(b * b + 2 * b)
    a1 = 1 - aa
    a12 = a1 * a1
    a13 = a1 * a1 * a1
    a3 = aa * aa * aa
    y1 = Seriesv2
    y2 = y1
    y3 = y2
    ENDIF
     
    y = a3 * Seriesv2 + 3 * a1 * y1 - 3 * a12 * y2 + a13 * y3
    y3 = y2
    y2 = y1
    y1 = y
     
    AFRV2 = y
     
    ENDIF
     
    //-------------------------------//
    // GF4P - 4-Pole Gaussian Filter //
    //-------------------------------//
     
    IF MATypev2 = 19 THEN
     
    Period2 = MAX(Period2, 2)
     
    IF BarIndex = 0 THEN
    w = 2 * 3.141592654 / Period2
    w = 180 * w / 3.141592654
    b = (1 - COS(w)) / (1.18920 - 1)
    aa = -b + SQRT(b * b + 2 * b)
    a1 = 1 - aa
    a12 = a1 * a1
    a13 = a1 * a1 * a1
    a14 = a12 * a12
    a2 = aa * aa
    a4 = a2 * a2
    y1 = Seriesv2
    y2 = y1
    y3 = y2
    y4 = y3
    ENDIF
     
    y = a4 * Seriesv2 + 4 * a1 * y1 - 6 * a12 * y2 + 4 * a13 *y3 - a14 * y4
    y4 = y3
    y3 = y2
    y2 = y1
    y1 = y
     
    AFRV2 = y
     
    ENDIF
     
    //---------------------------//
    // HMA - Hull Moving Average //
    //---------------------------//
     
    IF MATypev2 = 20 THEN
     
    Period2 = MAX(Period2, 1)
     
    AFRV2 = WeightedAverage[ROUND(SQRT(Period2))](2 * WeightedAverage[ROUND(Period2 / 2)](Seriesv2) - WeightedAverage[Period2](Seriesv2))
     
    ENDIF
     
    //-------------------------------------//
    // IE/2 - Combination of LSMA and ILRS //
    //-------------------------------------//
     
    IF MATypev2 = 21 THEN
     
    Period2 = MAX(Period2, 2)
     
    LR = LinearRegression[Period2](Seriesv2)
    LRS = LinearRegressionSlope[Period2](Seriesv2)
    SMA = Average[Period2](Seriesv2)
     
    AFRV2 = (LR + LRS + SMA) / 2
     
    ENDIF
     
    //--------------------------------------------//
    // ILRS - Integral of Linear Regression Slope //
    //--------------------------------------------//
     
    IF MATypev2 = 22 THEN
     
    Period2 = MAX(Period2, 2)
     
    SumBars = Period2 * (Period2 - 1) * 0.5
    SumSqrBars = Period2 * (Period2 - 1) * Period2 * (2 * Period2 - 1) / 6
     
    IF (BarIndex < Period2) then
    AFRV2 = Seriesv2
    ELSE
    Sum1 = 0
    SumY = 0
    MA = Average[1](Seriesv2)
    FOR i = 0 TO Period2 - 1 DO
    Sum1 = Sum1 + (i * MA[i])
    SumY = SumY + MA[i]
    NEXT
    Num1 = Period2 * Sum1 - SumBars * SumY
    Num2 = SumBars * SumBars - Period2 * SumSqrBars
    AFRV2 = Num1 / Num2 + Average[Period2](Seriesv2)
    ENDIF
     
    ENDIF
     
    //--------------------------------//
    // iTrend - iTrend by John Ehlers //
    //--------------------------------//
     
    IF MATypev2 = 23 THEN
     
    // alpha = 0.0025 {0.0025..0.2}
    alpha = 0.005
     
    IF BarIndex < 2 THEN
    AFRV2 = Seriesv2
    ELSE
    i1 = (alpha - alpha * alpha / 4) * Seriesv2
    i2 = 0.5 * alpha * alpha * Seriesv2[1]
    i3 = (alpha - 0.75 * alpha * alpha) * Seriesv2[2]
    i4 = 2 * (1 - alpha) * AFRV2[1]
    i5 = (1 - alpha) * (1 - alpha) * AFRV2[2]
    AFRV2 = i1 + i2 - i3 + i4 - i5
    ENDIF
     
    ENDIF
     
    //-----------------------------------------------------//
    // JMA - Jurik Moving Average (Responsiveness Version) //
    //-----------------------------------------------------//
     
    IF MATypev2 = 24 THEN
     
    Period2 = MAX(Period2, 1)
     
    // Pow = 5 ({ 1..10 })
    // R = 1.5 ({0.5..2.5})
    Pow = 5
    R = 1
     
    beta = 0.45 * (Period2 - 1) / (0.45 * (Period2 - 1) + 2)
     
    IF Pow = 1 THEN
    alpha = beta
    ELSIF Pow = 2 THEN
    alpha = beta * beta
    ELSIF Pow = 3 THEN
    alpha = beta * beta * beta
    ELSIF Pow = 4 THEN
    alpha = beta * beta * beta * beta
    ELSIF Pow = 5 THEN
    alpha = beta * beta * beta * beta * beta
    ELSIF Pow = 6 THEN
    alpha = beta * beta * beta * beta * beta * beta
    ELSIF Pow = 7 THEN
    alpha = beta * beta * beta * beta * beta * beta * beta
    ELSIF Pow = 8 THEN
    alpha = beta * beta * beta * beta * beta * beta * beta * beta
    ELSIF Pow = 9 THEN
    alpha = beta * beta * beta * beta * beta * beta * beta * beta * beta
    ELSIF Pow = 10 THEN
    alpha = beta * beta * beta * beta * beta * beta * beta * beta * beta
    ENDIF
     
    IF BarIndex = 0 THEN
    Filt0 = Seriesv2
    Filt1 = Seriesv2
    AFRV2 = Seriesv2
    ELSE
    Filt0 = (1 - alpha) * Seriesv2 + alpha * Filt0[1]
    Det0 = (Seriesv2 - Filt0[0]) * (1 - beta) + beta * Det0[1]
    Filt1 = Filt0[0] + R * Det0[0]
    Det1 = (Filt1[0] - AFRV2[1]) * ((1 - alpha) * (1 - alpha)) + (alpha * alpha) * Det1[1]
    AFRV2 = AFRV2[1] + Det1[0]
    ENDIF
     
    ENDIF
     
    //----------------------------//
    // JMA - Jurik Moving Average //
    //----------------------------//
     
    IF MATypev2 = 25 THEN
     
    Period2 = MAX(Period2, 1)
     
    // Pow = 5 ({ 1..10 })
    // R = 1.5 ({0.5..2.5})
    Pow = 4
    R = 1
     
    beta = 0.45 * (Period2 - 1) / (0.45 * (Period2 - 1) + 2)
     
    IF Pow = 1 THEN
    alpha = beta
    ELSIF Pow = 2 THEN
    alpha = beta * beta
    ELSIF Pow = 3 THEN
    alpha = beta * beta * beta
    ELSIF Pow = 4 THEN
    alpha = beta * beta * beta * beta
    ELSIF Pow = 5 THEN
    alpha = beta * beta * beta * beta * beta
    ELSIF Pow = 6 THEN
    alpha = beta * beta * beta * beta * beta * beta
    ELSIF Pow = 7 THEN
    alpha = beta * beta * beta * beta * beta * beta * beta
    ELSIF Pow = 8 THEN
    alpha = beta * beta * beta * beta * beta * beta * beta * beta
    ELSIF Pow = 9 THEN
    alpha = beta * beta * beta * beta * beta * beta * beta * beta * beta
    ELSIF Pow = 10 THEN
    alpha = beta * beta * beta * beta * beta * beta * beta * beta * beta
    ENDIF
     
    IF BarIndex = 0 THEN
    Filt0 = Seriesv2
    Filt1 = Seriesv2
    AFRV2 = Seriesv2
    ELSE
    Filt0 = (1 - alpha) * Seriesv2 + alpha * Filt0[1]
    Det0 = (Seriesv2 - Filt0[0]) * (1 - beta) + beta * Det0[1]
    Filt1 = Filt0[0] + R * Det0[0]
    Det1 = (Filt1[0] - AFRV2[1]) * ((1 - alpha) * (1 - alpha)) + (alpha * alpha) * Det1[1]
    AFRV2 = AFRV2[1] + Det1[0]
    ENDIF
     
    ENDIF
     
    //----------------------------------------//
    // KAMA - Kaufman Adaptive Moving Average //
    //----------------------------------------//
     
    IF MATypev2 = 26 THEN
     
    Period2 = MAX(Period2, 4)
     
    // FastPeriod2 = 7
    // SlowPeriod2 = 28
    FastPeriod2 = 7
    SlowPeriod2 = 28
     
    Fastest = 2 / (FastPeriod2 + 1)
    Slowest = 2 / (SlowPeriod2 + 1)
     
    IF BarIndex < Period2 THEN
    AFRV2 = Seriesv2
    ELSE
    Num = ABS(Seriesv2 - Seriesv2[Period2])
    Den = summation[Period2](ABS(Seriesv2 - Seriesv2[1]))
    ER = Num / Den
    Alpha = SQUARE(ER * (Fastest - Slowest) + Slowest)
    AFRV2 = (Alpha * Seriesv2) + ((1 - Alpha) * AFRV2[1])
    ENDIF
     
    ENDIF
     
    //-------------------------------------//
    // KFJE - Kalman Filter by John Ehlers //
    //-------------------------------------//
     
    IF MATypev2 = 27 THEN
     
    IF BarIndex < 3 THEN
    AFRV2 = Seriesv2
    ELSE
    AFRV2 = 0.33 * (Seriesv2 + 0.5 * (Seriesv2 - Seriesv2[3])) + 0.67 * AFRV2[1]
    ENDIF
     
    ENDIF
     
    //---------------------------------------------//
    // KF - Kalman Filter (Responsiveness Version) //
    //---------------------------------------------//
     
    IF MATypev2 = 28 THEN
     
    // K = 1000 ({1...2000})
    K = 1000
     
    ONCE Pred = Seriesv2
     
    IF BarIndex = 0 THEN
    AFRV2 = Seriesv2
    ELSE
    Smooth = Pred + (Seriesv2 - Pred) * SQRT((K / 10000) * 2)
    Velo = Velo + ((K / 10000) * (Seriesv2 - Pred))
    Pred = Smooth + Velo
    AFRV2 = Pred
    ENDIF
     
    ENDIF
     
    //--------------------//
    // KF - Kalman Filter //
    //--------------------//
     
    IF MATypev2 = 29 THEN
     
    // K = 500 ({1...2000})
    K = 500
     
    ONCE Pred = Seriesv2
     
    IF BarIndex = 0 THEN
    AFRV2 = Seriesv2
    ELSE
    Smooth = Pred + (Seriesv2 - Pred) * SQRT((K / 10000) * 2)
    Velo = Velo + ((K / 10000) * (Seriesv2 - Pred))
    Pred = Smooth + Velo
    AFRV2 = Pred
    ENDIF
     
    ENDIF
     
    //------------------------------------------//
    // LEMA - Leader Exponential Moving Average //
    //------------------------------------------//
     
    IF MATypev2 = 30 THEN
     
    Period2 = MAX(Period2, 1)
     
    IF BarIndex = 0 THEN
    p1 = Seriesv2
    p2 = 0
    ELSE
    alpha = 2 / (Period2 + 1)
    p1 = p1[1] + alpha * (Seriesv2 - p1[1])
    p2 = p2[1] + alpha * (Seriesv2 - p1 - p2[1])
    ENDIF
     
    AFRV2 = p1 + p2
     
    ENDIF
     
    //-------------------------------------//
    // LF - Laguerre Filter by John Ehlers //
    //-------------------------------------//
     
    IF MATypev2 = 31 THEN
     
    // gamma = 0.8
    gamma = 0.8
     
    once l0 = Seriesv2
    once l1 = Seriesv2
    once l2 = Seriesv2
    once l3 = Seriesv2
     
    IF BarIndex = 0 THEN
    AFRV2 = Seriesv2
    ELSE
    l0 = (1 - gamma) * Seriesv2 + gamma * l0[1]
    l1 = -gamma * l0 + l0[1] + gamma * l1[1]
    l2 = -gamma * l1 + l1[1] + gamma * l2[1]
    l3 = -gamma * l2 + l2[1] + gamma * l3[1]
    AFRV2 = (l0 + 2 * l1 + 2 * l2 + l3) / 6
    ENDIF
     
    ENDIF
     
    //------------------------------------//
    // LSMA - Least Square Moving Average //
    //------------------------------------//
     
    IF MATypev2 = 32 THEN
     
    Period2 = MAX(Period2, 2)
     
    AFRV2 = LinearRegression[Period2](Seriesv2)
     
    ENDIF
     
    //-----------------------//
    // MD - McGinley Dynamic //
    //-----------------------//
     
    IF MATypev2 = 33 THEN
     
    Period2 = MAX(Period2, 4)
     
    IF BarIndex = 0 THEN
    AFRV2 = Seriesv2
    ELSE
    Pow = (Seriesv2 / AFRV2[1]) * (Seriesv2 / AFRV2[1]) * (Seriesv2 / AFRV2[1]) * (Seriesv2 / AFRV2[1])
    AFRV2 = AFRV2[1] + (Seriesv2 - AFRV2[1]) / ((Period2 / 2) * Pow)
    ENDIF
     
    ENDIF
     
    //----------------------------------------------//
    // MHLMA - Middle High Low Range Moving Average //
    //----------------------------------------------//
     
    IF MATypev2 = 34 THEN
     
    Period2 = MAX(Period2, 1)
     
    // HLRange = 3
    HLRange = 3
     
    HH = highest[HLRange](High)
    LL = lowest[HLRange](Low)
     
    AFRV2  = Average[Period2]((HH + LL) / 2)
     
    ENDIF
     
    //---------------------------------//
    // MNMA - McNicholl Moving Average //
    //---------------------------------//
     
    IF MATypev2 = 35 THEN
     
    Period2 = MAX(Period2, 2)
     
    alpha = 2 / (1 + Period2)
     
    IF BarIndex = 0 THEN
    p1 = Seriesv2
    p2 = Seriesv2
    ELSE
    p1 = p1[1] + alpha * (Seriesv2 - p1[1])
    p2 = p2[1] + alpha * (p1 - p2[1])
    ENDIF
     
    AFRV2 = (((2 - alpha) * p1 - p2) / (1 - alpha))
     
    ENDIF
     
    //--------------------------------------------------------//
    // NLMA - Non Lag Moving Average (Responsiveness Version) //
    //--------------------------------------------------------//
     
    IF MATypev2 = 36 THEN
     
    Period2 = MAX(Period2, 1)
     
    // Amplitude = 1 (0...1)
    // Smooth = -1 (-2...2)
    Amplitude = 1
    Smooth = 1
     
    IF Amplitude > 0 THEN
    Coeff = 3 * 3.1415926535 / Amplitude
    ELSE
    Coeff = 3 * 3.1415926535
    ENDIF
     
    IF Smooth < -2 THEN
    Smooth = 0
    ENDIF
     
    vCycle = 4
    vWeight = 0
    vSum = 0
     
    Phase = Period2 + Smooth
     
    FOR i = 0 TO ((Period2 * vCycle) + Phase) - 1 DO
     
    IF i <= Phase - 1 THEN
    IF Phase = 1 THEN
    x = i
    ELSE
    x = i / (Phase - 1)
    ENDIF
    ELSE
    x = 1.0 + (i - Phase + 1) * (2.0 * vCycle - 1.0) / (vCycle * Period2 - 1.0)
    ENDIF
     
    g = Amplitude / (Coeff * x + 1.0)
    IF x <= 0.5 THEN
    g = 1.0
    ENDIF
     
    vSum = vSum + g * COS(180 * x) * Seriesv2[i]
    vWeight = vWeight + g * COS(180 * x)
     
    NEXT
            
    IF vWeight > 0 THEN
    AFRV2 = vSum / vWeight
    ELSE
    AFRV2 = Seriesv2
    ENDIF
     
    ENDIF
     
    //-------------------------------//
    // NLMA - Non Lag Moving Average //
    //-------------------------------//
     
    IF MATypev2 = 37 THEN
     
    Period2 = MAX(Period2, 1)
     
    // Amplitude = 0 (0...1)
    // Smooth = 1 (-2...2)
    Amplitude = 0
    Smooth = 1
     
    IF Amplitude > 0 THEN
    Coeff = 3 * 3.1415926535 / Amplitude
    ELSE
    Coeff = 3 * 3.1415926535
    ENDIF
     
    IF Smooth < -2 THEN
    Smooth = 0
    ENDIF
     
    vCycle = 4
    vWeight = 0
    vSum = 0
     
    Phase = Period2 + Smooth
     
    FOR i = 0 TO ((Period2 * vCycle) + Phase) - 1 DO
     
    IF i <= Phase - 1 THEN
    IF Phase = 1 THEN
    x = i
    ELSE
    x = i / (Phase - 1)
    ENDIF
    ELSE
    x = 1.0 + (i - Phase + 1) * (2.0 * vCycle - 1.0) / (vCycle * Period2 - 1.0)
    ENDIF
     
    g = Amplitude / (Coeff * x + 1.0)
    IF x <= 0.5 THEN
    g = 1.0
    ENDIF
     
    vSum = vSum + g * COS(180 * x) * Seriesv2[i]
    vWeight = vWeight + g * COS(180 * x)
     
    NEXT
            
    IF vWeight > 0 THEN
    AFRV2 = vSum / vWeight
    ELSE
    AFRV2 = Seriesv2
    ENDIF
     
    ENDIF
     
    //------------------------//
    // OMA - One More Average //
    //------------------------//
     
    IF MATypev2 = 38 THEN
     
    // Sensibility = 1.5
    Sensibility = 1.5
     
    Period2 = MAX(Period2, 1)
    Sensibility = MAX(Sensibility, -1.5)
     
    Data = Average[1](Seriesv2)
    averagePeriod2 = Period2
     
    IF BarIndex < Period2 THEN
    AFRV2 = Seriesv2
    ELSE
    IF averagePeriod2 > 1 THEN
    minPeriod2 = averagePeriod2 / 2.0
    maxPeriod2 = minPeriod2 * 5.0
    endPeriod2 = ROUND(maxPeriod2)
    signal = ABS((Data - Data[endPeriod2]))
    noise = 0.00000000001
    FOR k = 1 TO endPeriod2 DO
    noise = noise + ABS(Data - Data[k])
    averagePeriod2 = ROUND(((signal / noise) * (maxPeriod2 - minPeriod2)) + minPeriod2)
    NEXT
    ENDIF
     
    alpha = (2.0 + Sensibility) / (1.0 + Sensibility + averagePeriod2)
     
    e1 = e1 + alpha * (Data - e1)
    e2 = e2 + alpha * (e1 - e2)
    v1 = 1.5 * e1 - 0.5 * e2
    e3 = e3 + alpha * (v1 - e3)
    e4 = e4 + alpha * (e3 - e4)
    v2 = 1.5 * e3 - 0.5 * e4
    e5 = e5 + alpha * (v2 - e5)
    e6 = e6 + alpha * (e5 - e6)
    AFRV2 = 1.5 * e5 - 0.5 * e6
     
    ENDIF
     
    ENDIF
     
    //--------------------------------------------//
    // PEMA - Pentuple Exponential Moving Average //
    //--------------------------------------------//
     
    IF MATypev2 = 39 THEN
     
    Period2 = MAX(Period2, 1)
     
    MA1 = ExponentialAverage[Period2](Seriesv2)
    MA2 = ExponentialAverage[Period2](MA1)
    MA3 = ExponentialAverage[Period2](MA2)
    MA4 = ExponentialAverage[Period2](MA3)
    MA5 = ExponentialAverage[Period2](MA4)
    MA6 = ExponentialAverage[Period2](MA5)
    MA7 = ExponentialAverage[Period2](MA6)
    MA8 = ExponentialAverage[Period2](MA7)
     
    AFRV2 = (8 * MA1) - (28 * MA2) + (56 * MA3) - (70 * MA4) + (56 * MA5) - (28 * MA6) + (8 * MA7) - MA8
     
    ENDIF
     
    //------------------------------------------//
    // PWMA - Parabolic Weighted Moving Average //
    //------------------------------------------//
     
    IF MATypev2 = 40 THEN
     
    Period2 = MAX(Period2, 1)
     
    Sum = SumW * Seriesv2
    SumW = Period2 * Period2
     
    FOR i = 0 TO Period2 DO
    Weight = (Period2 - i) * (Period2 - i)
    SumW = SumW + Weight
    Sum = Sum + Weight * Seriesv2[i]
    NEXT
     
    AFRV2 = Sum / SumW
     
    ENDIF
     
    //---------------------------------------------//
    // QEMA - Quadruple Exponential Moving Average //
    //---------------------------------------------//
     
    IF MATypev2 = 41 THEN
     
    Period2 = MAX(Period2, 1)
     
    MA1 = ExponentialAverage[Period2](Seriesv2)
    MA2 = ExponentialAverage[Period2](MA1)
    MA3 = ExponentialAverage[Period2](MA2)
    MA4 = ExponentialAverage[Period2](MA3)
    MA5 = ExponentialAverage[Period2](MA4)
    AFRV2 = (5 * MA1) - (10 * MA2) + (10 * MA3) - (5 * MA4) + MA5
     
    ENDIF
     
    //-------------------------------------------//
    // REMA - Regularized EMA by Chris Satchwell //
    //-------------------------------------------//
     
    IF MATypev2 = 42 THEN
     
    // Lambda = 0.5 ({0.5..9})
    Lambda = 0.5
     
    Period2 = MAX(Period2, 1)
    Lambda = MAX(Lambda, 0)
     
    IF BarIndex < 2 THEN
    AFRV2  = Seriesv2
    ELSE
    AFRV2 = (AFRV2[1] * (1 + 2 * Lambda) + (2 / (Period2 + 1)) * (Seriesv2 - AFRV2[1]) - Lambda * AFRV2[2]) / (1 + Lambda)
    ENDIF
     
    ENDIF
     
    //----------------------------------//
    // RFTL - Reference Fast Trend Line //
    //----------------------------------//
     
    IF MATypev2 = 43 THEN
     
    AFRV2 = -0.02232324*Seriesv2[0]+0.02268676*Seriesv2[1]+0.08389067*Seriesv2[2]+0.14630380*Seriesv2[3]+0.19282649*Seriesv2[4]+0.21002638*Seriesv2[5]+0.19282649*Seriesv2[6]+0.14630380*Seriesv2[7]+0.08389067*Seriesv2[8]+0.02268676*Seriesv2[9]-0.02232324*Seriesv2[10]-0.04296564*Seriesv2[11]-0.03980614*Seriesv2[12]-0.02082171*Seriesv2[13]+0.00243636*Seriesv2[14]+0.01950580*Seriesv2[15]+0.02460929*Seriesv2[16]+0.01799295*Seriesv2[17]+0.00470540*Seriesv2[18]-0.00831985*Seriesv2[19]-0.01544722*Seriesv2[20]-0.01456262*Seriesv2[21]-0.00733980*Seriesv2[22]+0.00201852*Seriesv2[23]+0.00902504*Seriesv2[24]+0.01093067*Seriesv2[25]+0.00766099*Seriesv2[26]+0.00145478*Seriesv2[27]-0.00447175*Seriesv2[28]-0.00750446*Seriesv2[29]-0.00671646*Seriesv2[30]-0.00304016*Seriesv2[31]+0.00143433*Seriesv2[32]+0.00457475*Seriesv2[33]+0.00517589*Seriesv2[34]+0.00336708*Seriesv2[35]+0.00034406*Seriesv2[36]-0.00233637*Seriesv2[37]-0.00352280*Seriesv2[38]-0.00293522*Seriesv2[39]-0.00114249*Seriesv2[40]+0.00083536*Seriesv2[41]+0.00215524*Seriesv2[42]+0.00604133*Seriesv2[43]-0.00013046*Seriesv2[44]
     
    ENDIF
     
    //----------------------------------//
    // RSTL - Reference Slow Trend Line //
    //----------------------------------//
     
    IF MATypev2 = 44 THEN
     
    AFRV2 = -0.00514293*Seriesv2[0]-0.00398417*Seriesv2[1]-0.00262594*Seriesv2[2]-0.00107121*Seriesv2[3]+0.00066887*Seriesv2[4]+0.00258172*Seriesv2[5]+0.00465269*Seriesv2[6]+0.00686394*Seriesv2[7]+0.00919334*Seriesv2[8]+0.01161720*Seriesv2[9]+0.01411056*Seriesv2[10]+0.01664635*Seriesv2[11]+0.01919533*Seriesv2[12]+0.02172747*Seriesv2[13]+0.02421320*Seriesv2[14]+0.02662203*Seriesv2[15]+0.02892446*Seriesv2[16]+0.03109071*Seriesv2[17]+0.03309496*Seriesv2[18]+0.03490921*Seriesv2[19]+0.03651145*Seriesv2[20]+0.03788045*Seriesv2[21]+0.03899804*Seriesv2[22]+0.03984915*Seriesv2[23]+0.04042329*Seriesv2[24]+0.04071263*Seriesv2[25]+0.04071263*Seriesv2[26]+0.04042329*Seriesv2[27]+0.03984915*Seriesv2[28]+0.03899804*Seriesv2[29]+0.03788045*Seriesv2[30]+0.03651145*Seriesv2[31]+0.03490921*Seriesv2[32]+0.03309496*Seriesv2[33]+0.03109071*Seriesv2[34]+0.02892446*Seriesv2[35]+0.02662203*Seriesv2[36]+0.02421320*Seriesv2[37]+0.02172747*Seriesv2[38]+0.01919533*Seriesv2[39]+0.01664635*Seriesv2[40]+0.01411056*Seriesv2[41]+0.01161720*Seriesv2[42]+0.00919334*Seriesv2[43]+0.00686394*Seriesv2[44]+0.00465269*Seriesv2[45]+0.00258172*Seriesv2[46]+0.00066887*Seriesv2[47]-0.00107121*Seriesv2[48]-0.00262594*Seriesv2[49]-0.00398417*Seriesv2[50]-0.00514293*Seriesv2[51]-0.00609634*Seriesv2[52]-0.00684602*Seriesv2[53]-0.00739452*Seriesv2[54]-0.00774847*Seriesv2[55]-0.00791630*Seriesv2[56]-0.00790940*Seriesv2[57]-0.00774085*Seriesv2[58]-0.00742482*Seriesv2[59]-0.00697718*Seriesv2[60]-0.00641613*Seriesv2[61]-0.00576108*Seriesv2[62]-0.00502957*Seriesv2[63]-0.00423873*Seriesv2[64]-0.00340812*Seriesv2[65]-0.00255923*Seriesv2[66]-0.00170217*Seriesv2[67]-0.00085902*Seriesv2[68]-0.00004113*Seriesv2[69]+0.00073700*Seriesv2[70]+0.00146422*Seriesv2[71]+0.00213007*Seriesv2[72]+0.00272649*Seriesv2[73]+0.00324752*Seriesv2[74]+0.00368922*Seriesv2[75]+0.00405000*Seriesv2[76]+0.00433024*Seriesv2[77]+0.00453068*Seriesv2[78]+0.00465046*Seriesv2[79]+0.00469058*Seriesv2[80]+0.00466041*Seriesv2[81]+0.00457855*Seriesv2[82]+0.00442491*Seriesv2[83]+0.00423019*Seriesv2[84]+0.00399201*Seriesv2[85]+0.00372169*Seriesv2[86]+0.00342736*Seriesv2[87]+0.00311822*Seriesv2[88]+0.00280309*Seriesv2[89]+0.00249088*Seriesv2[90]+0.00219089*Seriesv2[91]+0.00191283*Seriesv2[92]+0.00166683*Seriesv2[93]+0.00146419*Seriesv2[94]+0.00131867*Seriesv2[95]+0.00124645*Seriesv2[96]+0.00126836*Seriesv2[97]-0.00401854*Seriesv2[98]
     
    ENDIF
     
    //---------------------------------//
    // SATL - Slow Adaptive Trend Line //
    //---------------------------------//
     
    IF MATypev2 = 45 THEN
     
    AFRV2 = 0.0982862174*Seriesv2[0]+0.0975682269*Seriesv2[1]+0.0961401078*Seriesv2[2]+0.0940230544*Seriesv2[3]+0.0912437090*Seriesv2[4]+0.0878391006*Seriesv2[5]+0.0838544303*Seriesv2[6]+0.0793406350*Seriesv2[7]+0.0743569346*Seriesv2[8]+0.0689666682*Seriesv2[9]+0.0632381578*Seriesv2[10]+0.0572428925*Seriesv2[11]+0.0510534242*Seriesv2[12]+0.0447468229*Seriesv2[13]+0.0383959950*Seriesv2[14]+0.0320735368*Seriesv2[15]+0.0258537721*Seriesv2[16]+0.0198005183*Seriesv2[17]+0.0139807863*Seriesv2[18]+0.0084512448*Seriesv2[19]+0.0032639979*Seriesv2[20]-0.0015350359*Seriesv2[21]-0.0059060082*Seriesv2[22]-0.0098190256*Seriesv2[23]-0.0132507215*Seriesv2[24]-0.0161875265*Seriesv2[25]-0.0186164872*Seriesv2[26]-0.0205446727*Seriesv2[27]-0.0219739146*Seriesv2[28]-0.0229204861*Seriesv2[29]-0.0234080863*Seriesv2[30]-0.0234566315*Seriesv2[31]-0.0231017777*Seriesv2[32]-0.0223796900*Seriesv2[33]-0.0213300463*Seriesv2[34]-0.0199924534*Seriesv2[35]-0.0184126992*Seriesv2[36]-0.0166377699*Seriesv2[37]-0.0147139428*Seriesv2[38]-0.0126796776*Seriesv2[39]-0.0105938331*Seriesv2[40]-0.0084736770*Seriesv2[41]-0.0063841850*Seriesv2[42]-0.0043466731*Seriesv2[43]-0.0023956944*Seriesv2[44]-0.0005535180*Seriesv2[45]+0.0011421469*Seriesv2[46]+0.0026845693*Seriesv2[47]+0.0040471369*Seriesv2[48]+0.0052380201*Seriesv2[49]+0.0062194591*Seriesv2[50]+0.0070340085*Seriesv2[51]+0.0076266453*Seriesv2[52]+0.0080376628*Seriesv2[53]+0.0083037666*Seriesv2[54]+0.0083694798*Seriesv2[55]+0.0082901022*Seriesv2[56]+0.0080741359*Seriesv2[57]+0.0077543820*Seriesv2[58]+0.0073260526*Seriesv2[59]+0.0068163569*Seriesv2[60]+0.0062325477*Seriesv2[61]+0.0056078229*Seriesv2[62]+0.0049516078*Seriesv2[63]+0.0161380976*Seriesv2[64]
     
    ENDIF
     
    //-----------------------------//
    // SMA - Simple Moving Average //
    //-----------------------------//
     
    IF MATypev2 = 46 THEN
     
    Period2 = MAX(Period2, 1)
     
    AFRV2 = Average[Period2](Seriesv2)
     
    ENDIF
     
    //---------------------------------------//
    // SSF2P - 2-Pole Super Smoothing Filter //
    //---------------------------------------//
     
    IF MATypev2 = 47 THEN
     
    Period2 = MAX(Period2, 1)
     
    a1 = EXP(-1.414 * 3.14159 / Period2)
    b1 = 2 * a1 * COS(1.414 * 180 / Period2)
     
    coef2 = b1
    coef3 = -a1 * a1
    coef1 = 1 - coef2 - coef3
     
    IF BarIndex < 2 THEN
    AFRV2 = Seriesv2
    ELSE
    AFRV2 = coef1 * Seriesv2 + coef2 * AFRV2[1] + coef3 * AFRV2[2]
    ENDIF
     
    ENDIF
     
    //---------------------------------------//
    // SSF3P - 3-Pole Super Smoothing Filter //
    //---------------------------------------//
     
    IF MATypev2 = 48 THEN
     
    Period2 = MAX(Period2, 1)
     
    a1 = EXP(-3.14159 / Period2)
    b1 = 2 * a1 * COS(1.738 * 180 / Period2)
    c1 = a1 * a1
     
    coef2 = b1 + c1
    coef3 = -(c1 + b1 * c1)
    coef4 = c1 * c1
    coef1 = 1 - coef2 - coef3 - coef4
     
    IF BarIndex < 3 THEN
    AFRV2 = Seriesv2
    ELSE
    AFRV2 = coef1 * Seriesv2 + coef2 * AFRV2[1] + coef3 * AFRV2[2] + coef4 * AFRV2[3]
    ENDIF
     
    ENDIF
     
    //---------------------------------------//
    // SSMA - Smoothed Simple Moving Average //
    //---------------------------------------//
     
    IF MATypev2 = 49 THEN
     
    Period2 = MAX(Period2, 1)
     
    IF BarIndex = 0 THEN
    AFRV2 = Seriesv2
    ELSE
    AFRV2 = AFRV2[1] + (Seriesv2 - AFRV2[1]) / Period2
    ENDIF
     
    ENDIF
     
    //-------------------------------------//
    // SWMA - Sine Weighted Moving Average //
    //-------------------------------------//
     
    IF MATypev2 = 50 THEN
     
    Period2 = MAX(Period2, 1)
     
    Sum = 0
    CSum = 0
     
    FOR j = 0 TO Period2 - 1 DO
    Sum = Sum + Seriesv2[j] * SIN(90 * (1 - j / Period2))
    CSum = CSum + SIN(90 * (1 - j / Period2))
    NEXT
     
    IF CSum <= 0 THEN
    AFRV2 = Seriesv2
    ELSE
    AFRV2 = Sum / CSum
    ENDIF
     
    ENDIF
     
    //--------------------------//
    // T3MA - T3 Moving Average //
    //--------------------------//
     
    IF MATypev2 = 51 THEN
     
    Period2 = MAX(Period2, 1)
     
    // Hot = 0.7 ({-1.5..1.5})
    Hot = 0.7
     
    e1 = ExponentialAverage[Period2](Seriesv2)
    e2 = ExponentialAverage[Period2](e1)
    e3 = ExponentialAverage[Period2](e2)
    e4 = ExponentialAverage[Period2](e3)
    e5 = ExponentialAverage[Period2](e4)
    e6 = ExponentialAverage[Period2](e5)
     
    b = Hot
    b2 = (b * b)
    b3 = (b * b * b)
     
    c1 = -b3
    c2 = (3 * b2) + (3 * b3)
    c3 = (-6 * b2) - (3 * b) - (3 * b3)
    c4 = 1 + (3 * b) + b3 + (3 * b2)
     
    AFRV2 = c1 * e6 + c2 * e5 + c3 * e4 + c4 * e3
     
    ENDIF
     
    //------------------------------------------//
    // TEMA - Triple Exponential Moving Average //
    //------------------------------------------//
     
    IF MATypev2 = 52 THEN
     
    Period2 = MAX(Period2, 1)
     
    AFRV2 = TEMA[Period2](Seriesv2)
     
    ENDIF
     
    //---------------------------------//
    // TMA - Triangular Moving Average //
    //---------------------------------//
     
    IF MATypev2 = 53 THEN
     
    Period2 = MAX(Period2, 1)
     
    AFRV2 = TriangularAverage[Period2](Seriesv2)
     
    ENDIF
     
    //---------------------------//
    // TSA - Time Seriesv2 Average //
    //---------------------------//
     
    IF MATypev2 = 54 THEN
     
    Period2 = MAX(Period2, 1)
     
    AFRV2 = TimeSeriesAverage[Period2](Seriesv2)
     
    ENDIF
     
    //----------------------------------------//
    // VIDYA - Variable Index Dynamic Average //
    //----------------------------------------//
     
    IF MATypev2 = 55 THEN
     
    Period2 = MAX(Period2, 4)
     
    // Smooth = 5
    Smooth = 5
     
    ONCE SC = 2 / (Smooth + 1)
     
    AbsCMO = (ABS(Chandle[Period2](Seriesv2))) / 100
     
    IF BarIndex < Period2 THEN
    AFRV2 = Seriesv2
    ELSE
    AFRV2 = (SC * AbsCMO * Seriesv2) + (1 - (SC * AbsCMO)) * AFRV2
    ENDIF
     
    ENDIF
     
    //-------------------------------//
    // VMA - Variable Moving Average //
    //-------------------------------//
     
    IF MATypev2 = 56 THEN
     
    Period2 = MAX(Period2, 4)
     
    IF BarIndex < Period2 THEN
    AFRV2 = Seriesv2
    ELSE
    k = 1.0 / Period2
    pdm = MAX((Seriesv2 - Seriesv2[1]), 0)
    mdm = MAX((Seriesv2[1] - Seriesv2), 0)
    pdmS = ((1 - k) * (pdmS[1]) + k * pdm)
    mdmS = ((1 - k) * (mdmS[1]) + k * mdm)
    s = pdmS + mdmS
    pdi = pdmS / s
    mdi = mdmS / s
    pdiS = ((1 - k) * (pdiS[1]) + k * pdi)
    mdiS = ((1 - k) * (mdiS[1]) + k * mdi)
    d = ABS(pdiS - mdiS)
    s1 = pdiS + mdiS
    iS = ((1 - k) * (iS[1]) + k * d / s1)
    hhv = highest[Period2](iS)
    llv = lowest[Period2](iS)
    d1 = hhv - llv
    vI = (iS - llv) / d1
    AFRV2 = (1 - k * vI) * (AFRV2[1]) + k * vI * Seriesv2
    ENDIF
     
    ENDIF
     
    //--------------------------------------//
    // VWAP - Volume Weighted Average Price //
    //--------------------------------------//
     
    IF MATypev2 = 57 THEN
     
    Period2 = MAX(Period2, 1)
     
    SumVol = summation[Period2](Volume)
    IF SumVol = 0 THEN
    SumVol = 1
    ENDIF
     
    AFRV2 = summation[Period2](Seriesv2 * Volume) / summation[Period2](Volume)
     
    ENDIF
     
    //------------------------------//
    // WIMA - Wilder Moving Average //
    //------------------------------//
     
    IF MATypev2 = 58 THEN
     
    Period2 = MAX(Period2, 1)
     
    AFRV2 = WilderAverage[Period2](Seriesv2)
     
    ENDIF
     
    //----------------------------------------------//
    // WLSMA - Weighted Least Square Moving Average //
    //----------------------------------------------//
     
    IF MATypev2 = 59 THEN
     
    Period2 = MAX(Period2, 1)
     
    // NumBars = 4
    NumBars = 4
     
    LR = LinearRegression[NumBars](Seriesv2)
     
    AFRV2 = WeightedAverage[Period2](LR)
     
    ENDIF
     
    //-------------------------------//
    // WMA - Weighted Moving Average //
    //-------------------------------//
     
    IF MATypev2 = 60 THEN
     
    Period2 = MAX(Period2, 1)
     
    AFRV2 = WeightedAverage[Period2](Seriesv2)
     
    ENDIF
     
    //----------------------//
    // ZLBMT - Zero Lag BMT //
    //----------------------//
     
    IF MATypev2 = 61 THEN
     
    Period2 = MAX(Period2, 1)
     
    EMA0 = ExponentialAverage[Period2](Seriesv2)
    EMA1 = ExponentialAverage[Period2](EMA0)
     
    AFRV2 = EMA0 + (EMA0 - EMA1)
     
    ENDIF
     
    //-----------------------------------------------------//
    // ZLDEMA - Zero Lag Double Exponential Moving Average //
    //-----------------------------------------------------//
     
    IF MATypev2 = 62 THEN
     
    Period2 = MAX(Period2, 1)
     
    DEMA0 = DEMA[Period2](Seriesv2)
    DEMA1 = DEMA[Period2](DEMA0)
     
    AFRV2 = DEMA0 + (DEMA0 - DEMA1)
     
    ENDIF
     
    //----------------------------//
    // ZLFF - Zero Lag FIR Filter //
    //----------------------------//
     
    IF MATypev2 = 63 THEN
     
    AFRV2 = (Seriesv2 + 2 * Seriesv2[1] + 3 * Seriesv2[2] + 3 * Seriesv2[3] + 2 * Seriesv2[4] + Seriesv2[5]) / 12
     
    ENDIF
     
    //----------------------------//
    // ZLIF - Zero Lag IIR Filter //
    //----------------------------//
     
    IF MATypev2 = 64 THEN
     
    Period2 = MAX(Period2, 1)
     
    k = 2 / (Period2 + 1)
    x = ROUND((Period2 - 1) / 2)
     
    IF BarIndex <= MAX(x, 0) THEN
    AFRV2 = Seriesv2
    ELSE
    AFRV2 = k * (2 * Seriesv2 - Seriesv2[x]) + (1 - k) * AFRV2[1]
    ENDIF
     
    ENDIF
     
    //-----------------------------//
    // ZLJE - Zero Lag John Ehlers //
    //-----------------------------//
     
    IF MATypev2 = 65 THEN
     
    Period2 = MAX(Period2, 2)
     
    alpha = 2 / (1 + Period2)
    per = ROUND((Period2 - 1) / 2)
     
    IF BarIndex < per THEN
    AFRV2 = Seriesv2
    ELSE
    AFRV2 = AFRV2[1] + alpha * (2 * Seriesv2 - Seriesv2[per] - AFRV2[1])
    ENDIF
     
    ENDIF
     
    //--------------------------------//
    // ZLWBMT - Zero Lag Weighted BMT //
    //--------------------------------//
     
    IF MATypev2 = 66 THEN
     
    Period2 = MAX(Period2, 1)
     
    WMA0 = WeightedAverage[Period2](Seriesv2)
    WMA1 = WeightedAverage[Period2](WMA0)
     
    AFRV2 = WMA0 + (WMA0 - WMA1)
     
    ENDIF
    
    //-----------------------------------------//
    // Range based AV  high + STD - low - STD  //
    //-----------------------------------------//
    IF MATypev2 = 67 THEN
    Type = 1 //exponential average
    NxStd = 1 //Standard dev multiplier
    AvH= Average[Period2,Type](high) + NxStd * STD[Period2](high) //higher green line  HIGH + Std
    AvL= Average[Period2,Type](low) + NxStd * STD[Period2](low) //lower green line  LOW + Std
    Av= Average[Period2,Type](close)
    AvHL= Average[Period2,Type](high) - NxStd * STD[Period2](high)  //higher red line HIGH - Std
    AvLL= Average[Period2,Type](low) - NxStd * STD[Period2](low) //lower red line   LOW - Std
    AFRV2 = average[Period2,Type]((close +AvH + AvL + Av + AvHL + AvLL)/6)
    endif
    
    //--------------------------------//
    // Average lowest plus highest //
    //--------------------------------//
     
    IF MATypev2 = 68 THEN
     
    Period2 = MAX(Period2, 1)
    AFRV2 = (lowest[Period2](seriesv2) + highest[Period2](seriesv2))/2
     
    ENDIF
    
    //--------------------------------//
    // 69  DEMA adjusted by itself //
    //--------------------------------//
     
    IF MATypev2 = 69 THEN
     
    Period2 = MAX(Period2, 1)
    AFRV2 = 2 * DEMA[Period2](Seriesv2) - DEMA[Period2](DEMA[Period2](Series))
     
    ENDIF
    
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    
    
    /////////////////////////////////////
    wAFR = exponentialaverage[30](AFR)  ///for smoothing the AFR, to reduce market noice
    wAFRv2 = exponentialaverage[30](AFRv2)  ///for smoothing the AFRv2, to reduce market noice
    
    if time >= StartE And time <= StartL and OTD  then //and not onmarket then
    IF wAFR  > wAFRv2  and wAFR[1] < wAFRv2[1] then
    buy N shares AT MARKET
    SET STOP PLOSS TSL
    //SET STOP PTRAILING TSL
    //SET TARGET PPROFIT TSL
    else
    if wAFR < wAFRv2  and wAFR[1] > wAFRv2[1] then
    sellshort N shares at market
    SET STOP PLOSS TSL
    //SET STOP PTRAILING TSL
    //SET TARGET PPROFIT TSL
    endif
    endif
    endif
    
Viewing 1 post (of 1 total)
  • You must be logged in to reply to this topic.
ProRealAI ProRealAI New

Stuck on this ProBuilder code?

Describe what this topic is trying to build, in plain English, and ProRealAI writes the ProRealTime™ indicator, screener or system for you.

Available in 7 languages
Try ProRealAI

errore di programmazione


ProOrder: Trading Automatico & Backtesting

New Reply
Author
author-avatar
emanuele81 @emanuele81 Participant
Summary

This topic contains 1 voice and has 0 replies.

Topic Details
Forum: ProOrder: Trading Automatico & Backtesting
Language: Italian
Started: 12/27/2020
Status: Active
Attachments: No files
ProRealCode ProRealCode
Loading...