Тема: Индикатор арбитраж спред
Возможно ли посредством LUA в QUIKe построить в виде графика:
D=Заявки на покупку-Заявки на продажу;
т.е. спред между двумя графиками, по типу арбитража?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
QUIK -> DDE → Lua-индикаторы → Индикатор арбитраж спред
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Возможно ли посредством LUA в QUIKe построить в виде графика:
D=Заявки на покупку-Заявки на продажу;
т.е. спред между двумя графиками, по типу арбитража?
shishkir_aleksandr,
Приветствую вас на этом форуме! заходите почаще )
По поводу вашего вопроса: хорошо бы вы картинку покрупнее выложили...
В принципе, нарисовать можно, но не просто: надо придумывать как именно заявки привязывать к координатам графика и что делать с заявками, которые уже сняты/сыграли. Но в принципе так или иначе задача решаемая.
Хорошо бы вы еще уточнили между какими именно параметрами заявок надо спред вычислять? количество? цена? объем?
Хорошо бы вы еще уточнили между какими именно параметрами заявок надо спред вычислять? количество? цена? объем?
Прошу прощения за неточную постановку вопроса)
В QUIKe по каждому инструменту транслируется такой параметр как "СУММАРНОЕ КОЛИЧЕСТВО ЗАЯВОК НА ПОКУПКУ" и "СУММАРНОЕ КОЛИЧЕСТВО ЗАЯВОК НА ПРОДАЖУ", по этим значениям из ТАБЛИЦЫ ИСТОРИИ ЗНАЧЕНИЙ ПАРАМЕТРОВ можно построить графики (картинку я поменял СМ. ВЫШЕ).
Т. е. в принципе имеем два графика Price построенным по некоторым параметрам, между которыми и необходимо найти "спред"(разность) и вывести на график. Надеюсь я понятно объяснил?)
Ну и уточняю свой вопрос: По какому алгоритму это возможно реализовать? получение данных с графика->вывод в таблицу->расчет->вывод из таблицы на график? или получение данных с графика->расчет->вывод графика? или я совсем не прав и написал бред?)))
ЗЫ: В программировании я очень новичок, не судите строго)
у заявок получится график похожий на график цены. Вряд ли что то полезное даст такой график. имхо
Вот что у меня получилось, реализовал расчет спреда на основе МА.
Вот только при при пропущенных данных рисует криво), как это устранить? А и еще кто-нить знает как сделать индикатор CumDelta? HELP!
Settings=
{
Name = "Spread",
tag = "Si",
Ves =1,
value_type = "C",
line =
{
{
Name = "MA",
Color = RGB(255, 0, 0),
Type = TYPE_LINE,
Width = 1
}
}
}
function dValue(i,param)
local v = param or "C"
if v == "O" then
return O(i)
elseif v == "H" then
return H(i)
elseif v == "L" then
return L(i)
elseif v == "C" then
return C(i)
elseif v == "V" then
return V(i)
elseif v == "M" then
return (H(i) + L(i))/2
elseif v == "T" then
return (H(i) + L(i)+C(i))/3
elseif v == "W" then
return (H(i) + L(i)+2*C(i))/4
else
return C(i)
end
end
function Init()
return 1
end
function OnCalculate(index)
n = getNumCandles (Settings.tag)
t,n,s = getCandlesByIndex(Settings.tag,0,n-1,1)
function dMas(i,param)
local v = param or "C"
if v == "O" then
return t[0].open
elseif v == "H" then
return t[0].high
elseif v == "L" then
return t[0].low
elseif v == "C" then
return t[0].close
elseif v == "M" then
return (t[0].high + t[0].low)/2
elseif v == "T" then
return (t[0].high + t[0].low+t[0].close)/3
elseif v == "W" then
return (t[0].high + t[0].low+t[0].close*2)/4
else
return t[0].close
end
end
if index < 1 then
return nil
else
local sum = 0
for i = index, index do
sum = sum +dValue(i, Settings.value_type)-Settings.Ves*dMas(i, Settings.value_type)
end
return sum
end
end
Вставлю и свои пять копеек.
Settings=
{
Name = "Spread",
tag = "SI",
Period = 10,
value_type = "C",
Reverse = -1,
line =
{
{
Name = "Spread",
Color = RGB(100, 200, 100),
Type = TYPE_HISTOGRAM,
Width = 2
}
}
}
function dValue(i,param)
local v = param or "C"
if v == "O" then
return O(i)
elseif v == "H" then
return H(i)
elseif v == "L" then
return L(i)
elseif v == "C" then
return C(i)
elseif v == "V" then
return V(i)
elseif v == "M" then
return (H(i) + L(i))/2
elseif v == "T" then
return (H(i) + L(i)+C(i))/3
elseif v == "W" then
return (H(i) + L(i)+2*C(i))/4
else
return C(i)
end
end
function Init()
return 1
end
function OnCalculate(index)
local period = Settings.Period
local Ves = 0
local R = Settings.Reverse
function dMas(i,param)
local n = getNumCandles (Settings.tag)
local t,_,_ = getCandlesByIndex(Settings.tag,0,n-Size()-1+i,1)
local v = param or "C"
if v == "O" then
return t[0].open
elseif v == "H" then
return t[0].high
elseif v == "L" then
return t[0].low
elseif v == "C" then
return t[0].close
elseif v == "M" then
return (t[0].high + t[0].low)/2
elseif v == "T" then
return (t[0].high + t[0].low+t[0].close)/3
elseif v == "W" then
return (t[0].high + t[0].low+t[0].close*2)/4
else
return t[0].close
end
end
if index < period*3+2 then
return nil
else
local sum = 0
local per = 0
local base_inc = 0
local add_inc = 0
local avg_k=0
local sum_b=0
local sum_a=0
for c = index-period*3, index do
base_inc=math.abs(dValue(c, Settings.value_type)-dValue(c-1, Settings.value_type))
add_inc=math.abs(dMas(c, Settings.value_type)-dMas(c-1, Settings.value_type))
if (base_inc/math.abs(dValue(c-1, Settings.value_type))<0.3 and add_inc/math.abs(dMas(c-1, Settings.value_type))<0.3) then
sum_b = sum_b+math.abs(base_inc)
sum_a = sum_a+math.abs(add_inc)
end
end
avg_k=sum_b/sum_a
for c = index-period, index do
base_inc=((dValue(c, Settings.value_type)-dValue(c-1, Settings.value_type))/dValue(c-1, Settings.value_type))*100
add_inc=((dMas(c, Settings.value_type)-dMas(c-1, Settings.value_type))/dMas(c-1, Settings.value_type))*100
if (math.abs(base_inc)<10 and math.abs(add_inc)<10) then
sum = sum+(base_inc-R*add_inc*avg_k)
per=per+1
end
end
return sum/per
end
end
вот моя версия индикатора спреда, параметры по умолчанию для спреда RTS/Si
День добрый, могли бы вы подсказать как этим индикатором воспользоваться? Я сделал файл текстовый с расширение lua, но после добавления на график выдаёт ошибку... я что-то пропускаю наверно.
Надо файл положить в папку LuaIndicators внутри папки с QUIK.
Тогда это индикатор появится в списке индикаторов, доступных в терминале.
Если же при этом возникает какое-то сообщение об ошибке - напишите какое, тогда можно будет сто-то предметно подсказать.
у заявок получится график похожий на график цены. Вряд ли что то полезное даст такой график. имхо
отчего же? вполне себе хороший трендовый показатель. Только одного спроса/предложения мало, нужен такой же, только с объемами, участников в заявках на покупку может быть больше, а денег в заявках - меньше.
Надо файл положить в папку LuaIndicators внутри папки с QUIK.
Тогда это индикатор появится в списке индикаторов, доступных в терминале.Если же при этом возникает какое-то сообщение об ошибке - напишите какое, тогда можно будет сто-то предметно подсказать.
Вот что пишет ошибка:
"...:\Open_Broker_QUIK\LuaIndicators\paveldifference.lua:79: attempt to perform arithmetic on a nil value"
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
QUIK -> DDE → Lua-индикаторы → Индикатор арбитраж спред
Форум работает на PunBB, при поддержке Informer Technologies, Inc