Абсолютная величина различий в двух (2) диапазонах - ЧАСТЬ II - PullRequest
0 голосов
/ 14 мая 2019

Надеюсь, это легче читать, чем вчера. Попытка найти способ варьировать число периодов «N», которые измеряют «VOLATILITY» Код для полной функции, как было предложено вчера, приведен ниже и фиксирует «N» на 10. Функция прекрасно работает для KAMA со значением по умолчанию для «» N "(N0Addr и N1Addr не нужны в этой версии по умолчанию функции KAMA, но являются шагами для перехода к переменной" N ")

Эта формула работает в Excel:

=SUMPRODUCT((ABS(I26:I36-I25:I35)))

Я также могу получить правильную сумму разностей в двух диапазонах, но не абсолютную величину. Этот код VBA делает это с именованными диапазонами "N0Addr" и "N1Addr":

Rng0 = WorksheetFunction.Sum(Range(N0Addr)) - WorksheetFunction.Sum(Range(N1Addr))

Function nTEST(Price, nPer, mPer, N)        
    'Variables
    Fast = 2 / (nPer + 1)
    Slow = 2 / (mPer + 1)


    'One(1) Prior Period Calculation
    nTEST1 = Application.Caller.Offset(-1)

    N0Addr = Application.WorksheetFunction.Concat(Price.Offset(-N, 0).Address & ":" & Price.Address)
    N1Addr = Application.WorksheetFunction.Concat(Price.Offset(-(N + 1), 0).Address & ":" & (Price.Offset(-1, 0).Address))

    'Change Formula (Y - Yn)
    E = Abs(Price - Price.Offset(-N, 0))

    'Volatility Formula { =SUM(ABS(Y:Yn)-(Y1:Yn1))) }
    'VOLATILITY (N = 10)
    '1-10
    R = Abs(Price - Price.Offset(-1, 0)) + Abs(Price.Offset(-1, 0) - Price.Offset(-2, 0)) _
         + Abs(Price.Offset(-2, 0) - Price.Offset(-3, 0)) _
        + Abs(Price.Offset(-3, 0) - Price.Offset(-4, 0)) + Abs(Price.Offset(-4, 0) - Price.Offset(-5, 0)) _
        + Abs(Price.Offset(-5, 0) - Price.Offset(-6, 0)) + Abs(Price.Offset(-6, 0) - Price.Offset(-7, 0)) _
        + Abs(Price.Offset(-7, 0) - Price.Offset(-8, 0)) + Abs(Price.Offset(-8, 0) - Price.Offset(-9, 0)) _
        + Abs(Price.Offset(-9, 0) - Price.Offset(-10, 0))

    'EFFICIENCY RATIO
    ER = E / R

    Smooth = (ER * (Fast - Slow) + Slow) ^ 2

    'Formula Calculation
    nKAMA = Smooth * Price + (1 - Smooth) * nKAMA1

End Function

Поиск формулы или метода VBA для ввода рабочей формулы для «волатильности», которая может изменяться в течение N периодов. Я могу получить сумму различий, но не сумму абсолютных разностей.

Rng0 = WorksheetFunction.Sum(Range(N0Addr)) - WorksheetFunction.Sum(Range(N1Addr))

Я также могу ввести одну формулу в Excel, которая обеспечивает сумму абсолютных разниц.

=SUMPRODUCT((ABS(I26:I36-I25:I35)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...