(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)
АФК «Система» — когда долг мешает раскрыть стоимость портфеля
На фоне затяжного снижения российского рынка акции АФК «Система» становятся все более интересными с точки зрения соотношения риска и потенциальной доходности. Бумаги компании торгуются с...
Кто сейчас самый дешевый сбыт? Сводный пост по сбытовым компаниям по отчетам РСБУ за Q1 26г.
Сбытовые компании по РСБУ за 1 квартал отчитались давно, но не было времени никак написать по ним комментарий и я решил написать сводный общий пост по их результатам, может кому интересно...
Конечно, на Талнахской обогатительной фабрике. Именно здесь специалисты выделяют из руды ценные минералы и производят концентрат, который затем отправляют на металлургические заводы. В 2026 году...
Свежие идеи Элвиса Марламова в ПИФ Alenka Capital на июнь 2026
Продолжаем серию ежемесячных постов с отслеживанием покупок/продаж профессиональными управляющими. Особенно теми, кто управляет МИЛЛИАРДАМИ рублей в акциях. Зачем? Посмотреть, как думают профи —...
Чудной Инвестор, думаю, там нужно заглядывать дальше. Не год-два и не четыре. Минимум десятилетка. «Компания роста» вполне может и стагнировать пару-тройку лет (из-за сочетания множества факторов)....
Farider,
зачем ты мне переписываешь мой вопрос и еще раз на него не отвечаешь? тебе задали вопрос, ответа у тебя нет. Дальше ненадо кривляться) Если пишешь глупость и не можешь пояснить, то зака...
Алроса приостановит работу... «Алроса» приостановит работу крупнейшего месторождения алмазов в Архангельской области из-за проблем на алмазном рынке, сообщает Reuters. С 1 июля «Севералмаз», который р...
Есть функция. Она бегает по «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)