Блог им. AlexGood

Нужен скрипт для КВИК вычисляющий среднюю цену фьючей в позиции!

Друзья и коллеги, всем привет! Кто сможет написать или достать скрипт (на lua?) считающий среднюю цену фьючей в моей позиции?!
Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
424 | ★3
16 комментариев
Я программистом был в позапрошлой жизни, а сейчас только и исключительно для себя. Да и то, по правде сказать, больше чтоб мозги не ржавели. Но дам наводку.
quikluacsharp.ru/landing/
Сам не обращался, но у них всякие примеры подсматриваю периодически.
Сохраняй ежедневно сделки в эксель по итогам дня и считай среднюю какие проблемы
avatar
astic, мне не в конце дня надо, а в оперативном режиме для мани/риск-менеджмента в своем трейдинге, чтобы в числовом виде или лучше линии на графике была средняя цена набранных фьючей!
avatar
AlexGood,  так если интрадей в течении для до клиринга есть же поле «Эффективная цена позиции». В клиринг она пересчитывается по цене закрытия но до клиринга это и есть твоя средняя цена.
avatar
astic, 
поле «Эффективная цена позиции»

это в какой таблице?
avatar
AlexGood, «Позиции по клиентским счета (фьючерсы)»
avatar
divertam-se :)

Все что ниже в отдельный файл с расширением 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
avatar
astic, добавляю в КВИКе ваш код в Доступные скрипты, пытаюсь запустить, выдает ошибку синтаксиса!
avatar
AlexGood, а все правильно скопировал? у меня все ок щас проверил. А в настройках поставь версию луа 5.3.5 может из-за этого. Ну и таблица сделок должна существовать и сделки в ней.
avatar
astic, все правильно скопировал и учел ваши рекомендации, та же проблема!Идентификатор на графике не нужен?
avatar
AlexGood, кинь скриншотик что пишет. Нет она берет данные из таблицы сделок. Тикер поменял на тикер своего фьючерса?
avatar
AlexGood, 

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)
avatar
funjpg, пишет ошибку 5: attempt to get length of a nil value, после совершения сделки по фьючам заданного в коде тикера просто не запускается, ничего не пишет!
avatar
AlexGood, не находит трейды заданного фьюча, напиши точно тикер, может в нем ошибка. У меня не было сегодня трейдов по золоту, такая же ошибка. Как вариант, можно добавить проверку на nil, если nil, то выводить сообщение, не нашел трейдов по инструменту. 
avatar
AlexGood, 

...
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
...

можно добавить строчку выделенную жирным
avatar
Кстати да изза кавыче двойных может вполне синтаксис давать их лучше понять на одинаровные
avatar

Читайте на SMART-LAB:
Фото
Бот Иволги Капитал
Друзья, напоминаем о нашем боте в Telegram и Мах Для чего он нужен? ✅ для персональных анонсов по новым размещениям наших...
Фото
Изменение рейтингов
Индекс штурмует локальные минимумы — самое время снижать рейтинги (повышать тоже). 
Фото
Набираем трейдеров в команду!
Ты уже знаком с трейдингом, но пока нет стабильности и уверенности в сделках? Приглашаем тебя на бесплатную офлайн-практику в нашем дилинге....
Фото
Т-Технологии 1 кв. 2026 г. - так близко к Сберу еще никогда не было
Т-технологии опубликовала финансовые результаты за 1 кв. 2026 г. Чистая прибыль составила 35 млрд руб. (+4%) к прошлому году, без учета...

теги блога AlexGood

....все тэги



UPDONW
Новый дизайн