| Код |
|---|
function CMOExtremum()
local CMOlenght = 20
local FCMO = CMO()
return function (I, Fsettings, ds)
local CMOValues = {}
CMOValues[1] = FCMO(I, Fsettings, ds)
CMOValues[2] = FCMO(I+1, Fsettings, ds)
return CMOValues[2]
end
end
|
Добрый день!
Для расчета индикатора мне нужны пара десятков последних значений индикатора CMO, который я рассчитываю в этом же файле.
Я предположил, что для этого мне нужно создать массив, в который вызвать функцию СМО для значений индекса от I до I-20
Но получается какая-то ерунда.
Т.е. если смотреть код выше: если возвращать CMOValues[1], то выход индикатора совпадает с СМО
Ожидается, что возврат CMOValues[2] даст ту же картину, но смещенную на один бар назад.
Но нет. Получается совсем другая кривая.
Предположу, что нужно задействовать Squeeze и GetValueEX, не предположу как.
Подскажите, пожалуйста, как решить задачу эффективно?
Для понимания опишу постановку. При возникновении экстремума на CMO
| Код |
|---|
if CMOValues[2] > CMOValues[1] and CMOValues[2] > CMOValues[3] then maxCMO1 = CMOValues[2] end if CMOValues[2] < CMOValues[1] and CMOValues[2] < CMOValues[3] then minCMO1 = CMOValues[2] end |
В зависимости от их соотношения выдать сигнал