Я программистом был в позапрошлой жизни, а сейчас только и исключительно для себя. Да и то, по правде сказать, больше чтоб мозги не ржавели. Но дам наводку. 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
...
Банк Санкт-Петербург: мультипликатор балансовой стоимости выглядит низким, пришло ли время покупать?
Банк Санкт-Петербург представил финансовые результаты по МСФО за 1-й квартал 2026 года.
Чистая прибыль в 1К26 составила 10,9 млрд руб., снизившись на 29,7% г/г на фоне падения...
AUD/JPY: Продавцы забирают инициативу на старте новой недели
Кросс-курс AUD/JPY повторно протестировал область сопротивления на дневном таймфрейме, сформированную между уровнями 113.96 и 114.71, и закрыл пятницу нисходящей свечой, закрепившись ниже...
Средние доходности облигаций в зависимости от кредитного рейтинга. От B- до AA+
Средние доходности облигаций в зависимости от рейтинга (бледные столбцы — доходности без сглаживания). И как они изменились за неделю. Как и ранее, растут доходности в диапазоне от B- до...
Стали ли интересными акции ФосАгро на фоне ралли в ценах на удобрения?
Здравствуйте! Эскалация напряжённости вокруг Ормузского пролива спровоцировала рост цен сразу на нескольких товарных рынках. Помимо нефтегазового сектора, одним из бенефициаров текущей ситуации...
Frillet,
Как мне кажется, изначально искусственно нагнали рост (кому надо), потом в сети напели про рост и как обычно, глядя на рост бумаги, люди сели в поезд, а после роста те кто пел просто сл...
Совкомбанк МСФО 1 кв. 2026 г. - возможно ли повторение рекорда по чистой прибыли?
Совкомбанк опубликовал финансовые результаты за 1 квартал 2026 года.Чистая прибыль выросла на 57% год к году до 19,...
Какова вероятность, что автор применяет в тексе длинное тире (—), поскольку является уникальным человеком, а не использует генеративный ИИ в качестве личного копирайтера?
Вопрос риторический
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
...
можно добавить строчку выделенную жирным