Код |
---|
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 |
В зависимости от их соотношения выдать сигнал