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