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