Я программистом был в позапрошлой жизни, а сейчас только и исключительно для себя. Да и то, по правде сказать, больше чтоб мозги не ржавели. Но дам наводку. quikluacsharp.ru/landing/
Сам не обращался, но у них всякие примеры подсматриваю периодически.
astic, мне не в конце дня надо, а в оперативном режиме для мани/риск-менеджмента в своем трейдинге, чтобы в числовом виде или лучше линии на графике была средняя цена набранных фьючей!
AlexGood, так если интрадей в течении для до клиринга есть же поле «Эффективная цена позиции». В клиринг она пересчитывается по цене закрытия но до клиринга это и есть твоя средняя цена.
function main()
local avgprice = 0
local pos = 0
function myFind(C,S) return C == «SPBFUT» and S == «SiM3» end
local tradeTable = SearchItems(«trades», 0, getNumberOf(«trades»)-1, myFind, «class_code,sec_code»)
for n = #tradeTable, 1, -1 do
trade = getItem(«trades», tradeTable[n])
if bit.band(trade.flags, 0x4) == 0 then
avgprice = avgprice — trade.value
pos = pos + trade.qty
elseif bit.band(trade.flags, 0x4) ~= 0 then
avgprice = avgprice + trade.value
pos = pos — trade.qty end end
avgprice = avgprice/-pos
message(«avgprice = »..tostring(avgprice))
end
AlexGood, а все правильно скопировал? у меня все ок щас проверил. А в настройках поставь версию луа 5.3.5 может из-за этого. Ну и таблица сделок должна существовать и сделки в ней.
function main()
local avgprice = 0
local pos = 0
local tradeTable = SearchItems('trades', 0, getNumberOf('trades')-1, myFind, 'class_code,sec_code')
for n = #tradeTable, 1, -1 do
trade = getItem('trades', tradeTable[n])
if bit.band(trade.flags, 0x4) == 0 then
avgprice = avgprice-trade.price
pos = pos + trade.qty
elseif bit.band(trade.flags, 0x4) ~= 0 then
avgprice = avgprice+trade.price
pos = pos-trade.qty end end
avgprice = avgprice/-pos
message('avgprice = '..tostring(avgprice))
end
function myFind(C,S) return C == 'SPBFUT' and S == 'GDM3' end
попробуй этот вариант, я заменил двойные кавычки на одинарные, либо Расширенный символ с кодом 171 в таблице символов это кавычка вида «. Менять вид кавычек на " (код 187). (с форума поддержки квика)
В двух местах при копипасте минус заменился на дефис.
Также заменил вытаскиваемое значение с объема на цену (trade.value на trade.price)
funjpg, пишет ошибку 5: attempt to get length of a nil value, после совершения сделки по фьючам заданного в коде тикера просто не запускается, ничего не пишет!
AlexGood, не находит трейды заданного фьюча, напиши точно тикер, может в нем ошибка. У меня не было сегодня трейдов по золоту, такая же ошибка. Как вариант, можно добавить проверку на nil, если nil, то выводить сообщение, не нашел трейдов по инструменту.
...
local tradeTable = SearchItems('trades', 0, getNumberOf('trades')-1, myFind, 'class_code,sec_code') if tradeTable == nil then message('not found trades', 2); return end
for n = #tradeTable, 1, -1 do
...
Долги «Самолета» и обвал биткоина: разбор активов, которые еще интересны
Критическое долговое положение «Самолета» заставляет посмотреть шире на риски остальных девелоперов — и на последствия для металлургов, чья выручка напрямую зависит от количества строек. Почему...
Комментарий аналитиков БКС. Биткойн: активная фаза снижения в рамках фазы «дораспределения»
По состоянию на начало февраля биткойн скорректировался к уровню $60 тыс., предварительно реализовав технический отскок, о котором мы писали ранее. Текущую динамику мы по-прежнему оцениваем как...
📌Редактируемая версия таблицы — в 👉👉👉 чате Иволги : 👉https://t.me/ivolgavdo/72115
Сделки новой недели — по 0,1% от активов портфеля за торговую сессию, начиная с сегодняшней, для...
Что я думаю по Векусу? Это дебютный выпуск, а дебютные выпуски можно смело держать 6 месяцев с даты начала размещения. За это время ничто с ними не случится. Размещаться начали 17.10.2025, значит до 1...
Александр Даровских, Да, риски больше, поэтому цена должна быть с учётом премии за риск. И только если вы любитель риска, можно брать осторожно, при цене меньше 100 смотреть. На сумму, которую не ж...
Kopiraiter, хорошо со стороны рассуждать. Если стройка 3 года, то залезли в активы ещё при низких ставках и хорошем спросе. Это цб ошибся со сроками и методами решения проблемы, бюрократы ошиблись ...
ОЗОН: сегодня совет директоров одобрил доп. эмиссию Мнение о компании Почему продал ОЗОН 10 декабря 2025 года общее собрание акционеров уполномочило Совет директоров МКПАО «Озон» одобрить дополнительн...
Тимофей Мартынов, Согласен. Второй тоже понравился. Но чем старше становятся главные герои, тем меньше магии и очарования. А когда появились " плохие русские"-стало грустно.)
quikluacsharp.ru/landing/
Сам не обращался, но у них всякие примеры подсматриваю периодически.
это в какой таблице?
Все что ниже в отдельный файл с расширением lua:
function main()
local avgprice = 0
local pos = 0
function myFind(C,S) return C == «SPBFUT» and S == «SiM3» end
local tradeTable = SearchItems(«trades», 0, getNumberOf(«trades»)-1, myFind, «class_code,sec_code»)
for n = #tradeTable, 1, -1 do
trade = getItem(«trades», tradeTable[n])
if bit.band(trade.flags, 0x4) == 0 then
avgprice = avgprice — trade.value
pos = pos + trade.qty
elseif bit.band(trade.flags, 0x4) ~= 0 then
avgprice = avgprice + trade.value
pos = pos — trade.qty end end
avgprice = avgprice/-pos
message(«avgprice = »..tostring(avgprice))
end
function main()
local avgprice = 0
local pos = 0
local tradeTable = SearchItems('trades', 0, getNumberOf('trades')-1, myFind, 'class_code,sec_code')
for n = #tradeTable, 1, -1 do
trade = getItem('trades', tradeTable[n])
if bit.band(trade.flags, 0x4) == 0 then
avgprice = avgprice-trade.price
pos = pos + trade.qty
elseif bit.band(trade.flags, 0x4) ~= 0 then
avgprice = avgprice+trade.price
pos = pos-trade.qty end end
avgprice = avgprice/-pos
message('avgprice = '..tostring(avgprice))
end
function myFind(C,S) return C == 'SPBFUT' and S == 'GDM3' end
попробуй этот вариант, я заменил двойные кавычки на одинарные, либо Расширенный символ с кодом 171 в таблице символов это кавычка вида «. Менять вид кавычек на " (код 187). (с форума поддержки квика)
В двух местах при копипасте минус заменился на дефис.
Также заменил вытаскиваемое значение с объема на цену (trade.value на trade.price)
...
local tradeTable = SearchItems('trades', 0, getNumberOf('trades')-1, myFind, 'class_code,sec_code')
if tradeTable == nil then message('not found trades', 2); return end
for n = #tradeTable, 1, -1 do
...
можно добавить строчку выделенную жирным