(QUIK Lua) Здравствуйте, я знаю что вас задолбали такие как я) но прошу помочь с кодом, конкретно нужен код для получения цены открытой позиции,цена нужна для выставления точного стоп ордера.
Спасибо
(QUIK Lua) Здравствуйте, я знаю что вас задолбали такие как я) но прошу помочь с кодом, конкретно нужен код для получения цены открытой позиции, цена нужна для выставления точного стоп ордера.Спасибо
Есть функция. Она бегает по «trades» циклом и ищет последнее значение. На вход функция получает SEC_CODE, например RIH8, SiH8. Возвращает она цену последней ВАШЕЙ сделки.
function getLastPrice(sec)
for i = 0,getNumberOf(«trades») do
local pr = getItem(«trades», i)
if pr ~= nil and type(pr) == «table» then
if pr.sec_code == sec and i == getNumberOf(«trades»)-1 then
return pr.price
end
end
end
end
В вашей main функции создайте локальную переменную, которая в необходимый момент будет дергать эту функцию. Не забудьте передавать в параметрах код инструмента.
Здравствуйте, спасибо вам за ответ, я попробовал сделать как вы сказали, но что то пошло не так
подправьте пожалуйста где ошибка?
p_classcode=«SPBFUT» --Код класса
p_seccode=«RIH8» --Код инструмента
is_run = true
function getLastPrice(sec)
for i = 0,getNumberOf(«trades») do
local pr = getItem(«trades», i)
if pr ~= nil and type(pr) == «table» then
if pr.sec_code == sec and i == getNumberOf(«trades»)-1 then
return pr.price
message (pr.price)
end
end
end
end
function cb(index)
local t = ds:T(index)
local str = «свеча № »..tostring(index-1).." из "..tostring(ds:Size()).." open="..ds:O(index-1)
str = str.." close="..tostring(ds:C(index-1))
---high="..tostring(ds:H(index)).." low="..tostring(ds:L(index))
local lastPrice = getLastPrice(p_seccode)
message (lastPrice)
Alex Hell, попробуйте сделать так в функции main в цикле.
while is_run do
local lastPrice = getLastPrice(p_seccode)
message («Цена:»..lastPrice)
sleep(10)
Если я правильно понимаю, cb получает на вход index, т.е. каждую свечу? По идее, каждую свечу вы должны получать значение цены последней вашей сделки. Но так как переменная локальная, функция main ничего про нее не знает и она видна только в функции cb.
Alex Hell, не знаю, со стаканом не работал. Но можно получить цену последней сделки
local lPrice = tonumber(getParamEx(«SPBFUT»,SEC_CODE,«last»).param_value)
Moses007,
Бренд — конечно может быть активом и стоить денег.
Но у Т-банка с этим проблемы!
1. Скандал с иноагентом — основателем, чья фамилия заложена в бренд.
2. Ребрендинг
3. ...
вот так и сливаются по 10 раз на дню горящие по 24/7 в комментах пердаки украинских ципсотарасиков от бессилия. Назвал его ципсошником, а выхлопные газы на 7 часов с 19 по 02:40, как и обещал, зафикси...
Инвестиционно-спекулятивный портфель, 30.06.2024. Изменения месяц спустя 📈 Продолжаю регулярную традицию и раз в месяц выкладываю портфель. Напоминаю, что цель последних нескольких лет — это обгонять ...
Инвестиционно-спекулятивный портфель, 30.06.2024. Изменения месяц спустя 📈 Продолжаю регулярную традицию и раз в месяц выкладываю портфель. Напоминаю, что цель последних нескольких лет — это обгонять ...
Тимофей, 2 вопроса у меня к тебе, 1. Написал недавно пост «Продукт дешевеет» про то, что водка стала в России дешевле, чем была 5-10 лет назад. Мне написал модератор, что это флуд, снесли в оффтоп, и ...
Есть функция. Она бегает по «trades» циклом и ищет последнее значение. На вход функция получает SEC_CODE, например RIH8, SiH8. Возвращает она цену последней ВАШЕЙ сделки.
function getLastPrice(sec)
for i = 0,getNumberOf(«trades») do
local pr = getItem(«trades», i)
if pr ~= nil and type(pr) == «table» then
if pr.sec_code == sec and i == getNumberOf(«trades»)-1 then
return pr.price
end
end
end
end
В вашей main функции создайте локальную переменную, которая в необходимый момент будет дергать эту функцию. Не забудьте передавать в параметрах код инструмента.
local lastPrice = getLastPrice(SEC_CODE)
Ну как-то так.
Здравствуйте, спасибо вам за ответ, я попробовал сделать как вы сказали, но что то пошло не так
подправьте пожалуйста где ошибка?
p_classcode=«SPBFUT» --Код класса
p_seccode=«RIH8» --Код инструмента
is_run = true
function getLastPrice(sec)
for i = 0,getNumberOf(«trades») do
local pr = getItem(«trades», i)
if pr ~= nil and type(pr) == «table» then
if pr.sec_code == sec and i == getNumberOf(«trades»)-1 then
return pr.price
message (pr.price)
end
end
end
end
function cb(index)
local t = ds:T(index)
local str = «свеча № »..tostring(index-1).." из "..tostring(ds:Size()).." open="..ds:O(index-1)
str = str.." close="..tostring(ds:C(index-1))
---high="..tostring(ds:H(index)).." low="..tostring(ds:L(index))
local lastPrice = getLastPrice(p_seccode)
message (lastPrice)
end — конец функции
function main()
ds=CreateDataSource(p_classcode, p_seccode, INTERVAL_M1)
ds:SetUpdateCallback(cb)
while is_run do
sleep(10)
end
end
function OnStop(stop_flag)
is_run=false
end
while is_run do
local lastPrice = getLastPrice(p_seccode)
message («Цена:»..lastPrice)
sleep(10)
Если я правильно понимаю, cb получает на вход index, т.е. каждую свечу? По идее, каждую свечу вы должны получать значение цены последней вашей сделки. Но так как переменная локальная, функция main ничего про нее не знает и она видна только в функции cb.
так же можно вызвать из другой функции?
local lPrice = tonumber(getParamEx(«SPBFUT»,SEC_CODE,«last»).param_value)