1

Тема: Индикатор Pair traiding

Здравствуйте.Подскажите пожалуйста.Есть код индикатора,но там где-то ошибка.Самому не получается разобраться..Ошибка в том,что индикатор не выводит последние значения,а зависает в режиме когда его загрузили.

--*********************************************

Settings =
{
    Name = "PairsTrading2",     --имя индикатора
    line1 = "L1",                    -- имя первой исследуемой кривой пары
    line2 = "L2",                    -- имя второй исследуемой кривой пары
    -- коэффициенты
   -- для чего это нужно, например акция Газпрома стоит 133 рубля, а акция Лукойла 1970
   -- рублей и нам надо вывести кривую разности этой пары
   --  можно вычесть из 1970 133 и вывести разницу, но она будет невыразительной и
   -- неинформативной, а если принять, что на 1 акцию Лукойла приходится 1970 / 133 примерно 14 акций Газпрома, то графиком спреда уже можно пользоваться для теханализа.
    k_line1 = 1,                     --  коэффициент, на который будем умножать значения первой кривой
    k_line2 = 1,                     -- коэффициент, на который умножим значение второй кривой


   
--  мы будем строить три вида графиков, как отношение котировок, их разницу и произведение
-- кстати, для того, чтобы понять как соотносятся цена на золото в долларах и курс доллара в
-- рублях и получить цену на золото в рублях как результат - котировки требуется именно
-- перемножить

        relation ="отношение.разница.произведение",
-- описание внешнего вида линий
    line =
    {
        {
            Name = "PairsTrading",
            Color = RGB(255, 0, 255),
            Type = TYPE_LINE,
            Width = 2
        }
    }
}
function Init()
    return 1
end


function OnCalculate(index)
-- обращаемся к исходным кривым
local LINEPRICE =Settings.line1
local LINEPRICE2 =Settings.line2
CL_CURR=0
CL_CURR2=0

-- читаем цену закрытия свечки первой линии
        MAINqty = getNumCandles(LINEPRICE)

        t, num, legend = getCandlesByIndex(LINEPRICE, 0, index-1, 1)
        if index<MAINqty then
        CL_CURR=t[0].close
        end
-- читаем цену закрытия свечки второй  линии
        MAINqty2 = getNumCandles(LINEPRICE2)
        t2, num2, legend2 = getCandlesByIndex(LINEPRICE2, 0, index-1, 1)
        if index< MAINqty2 then
        CL_CURR2=t2[0].close
        end



        if index <= 0 or CL_CURR2==0 or CL_CURR==0 or index>= MAINqty or   index>= MAINqty2 then
        return nil
    else
                local pair = 0
--   обсчитаем результирующую линиу требуемым способом
                if Settings.relation =="отношение" then
                  pair= (CL_CURR2*Settings.k_line2)/(CL_CURR*Settings.k_line1)
                end
                if Settings.relation =="разница" then
                  pair= (CL_CURR2*Settings.k_line2)-(CL_CURR*Settings.k_line1)
                end
                if Settings.relation =="произведение" then
                  pair= (CL_CURR2*Settings.k_line2)*(CL_CURR*Settings.k_line1)
                end


        return pair
    end

end

2

Re: Индикатор Pair traiding

хоть напишите в какой строке??или он вообще не будет показывать каждое изменение цены графика и не стоит заморачиваться??