Тема: Индикатор 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
endfunction 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
endif 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)
endreturn pair
endend