AlexGood
AlexGood личный блог
11 мая 2023, 19:18

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

Друзья и коллеги, всем привет! Кто сможет написать или достать скрипт (на lua?) считающий среднюю цену фьючей в моей позиции?!
16 Комментариев
  • sbc
    11 мая 2023, 19:39
    Я программистом был в позапрошлой жизни, а сейчас только и исключительно для себя. Да и то, по правде сказать, больше чтоб мозги не ржавели. Но дам наводку.
    quikluacsharp.ru/landing/
    Сам не обращался, но у них всякие примеры подсматриваю периодически.
  • astic
    11 мая 2023, 19:43
    Сохраняй ежедневно сделки в эксель по итогам дня и считай среднюю какие проблемы
      • astic
        11 мая 2023, 20:16
        AlexGood,  так если интрадей в течении для до клиринга есть же поле «Эффективная цена позиции». В клиринг она пересчитывается по цене закрытия но до клиринга это и есть твоя средняя цена.
          • astic
            11 мая 2023, 21:57
            AlexGood, «Позиции по клиентским счета (фьючерсы)»
  • astic
    11 мая 2023, 21:34
    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
      • astic
        11 мая 2023, 22:01
        AlexGood, а все правильно скопировал? у меня все ок щас проверил. А в настройках поставь версию луа 5.3.5 может из-за этого. Ну и таблица сделок должна существовать и сделки в ней.
          • astic
            12 мая 2023, 00:19
            AlexGood, кинь скриншотик что пишет. Нет она берет данные из таблицы сделок. Тикер поменял на тикер своего фьючерса?
          • funjpg
            12 мая 2023, 12:33
            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)
              • funjpg
                25 мая 2023, 17:46
                AlexGood, не находит трейды заданного фьюча, напиши точно тикер, может в нем ошибка. У меня не было сегодня трейдов по золоту, такая же ошибка. Как вариант, можно добавить проверку на nil, если nil, то выводить сообщение, не нашел трейдов по инструменту. 
              • funjpg
                25 мая 2023, 18:23
                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
                ...

                можно добавить строчку выделенную жирным
  • astic
    12 мая 2023, 14:43
    Кстати да изза кавыче двойных может вполне синтаксис давать их лучше понять на одинаровные

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн