Постов с тегом "lua": 329

lua


Требуется помощь с плагином на Lua для QUIK (Брокер БКС)

Всех привествую!
Надеюсь у меня получится сделать плагин для удобства подсчета комиссии для БКС. 
Итак, у БКС комиссия от количества контрактов за сутки на тарифе Трейдер.  
Хочется сделать плагин, который сможет считать количество контрактов за сутки + оборот по срочке. 
Ибо считать вручную как то не удобно..
Или может у кого есть похожие наработки или плагин ? 
Буду признателен за любую помощь) 

Отображение ГО в QUIK

Всем привет!
Итак имеем скрипт у БКС брокера который показывает ГО, мне очень удобно...
Отображение ГО в QUIK

Решил прикрутить к Брокеру ВТБ… Но скрипт не работает ><
Отображение ГО в QUIK

( Читать дальше )
  • обсудить на форуме:
  • QUIK

Lua - форматирование таблицы

Всем привет!

Что-то не нашел информацию в инете, может кто поможет  )

1) как увеличить шрифт таблицы

2) как сделать так, что закрашивалась не вся строка, а только отдельные клетки?
 текущий скрипт окраски строки SetColor(Table,1,QTABLE_NO_INDEX, RGB (50,205,50), RGB (0,0,0), RGB (50,205,50), RGB (0,0,0))

Есть ли кодеры на Lua для Квик на Stackoverflow?

Подскажите, плиз, есть ли на стэке (в русской секции) общение по роботам на Луа для Квика?
Форум есть на сайте Арки, но общение там паршивенькое, особенно для новичков.
Просто задать такой вопрос на Стэке не хочется — легко в бан попасть.

Скрипт для QUIK, показывающий, какое количество сделок у вас исполняется по рынку об встречные заявки, а также как изменится комиссия на срочной секции в случае принятия изменений тарифов.

В соседнем блоге пишут, что биржа опять что-то мутит с комиссиями: Биржа снова повышает комиссии на Срочном рынке
Скрипт для QUIK, показывающий, какое количество сделок у вас исполняется по рынку об встречные заявки, а также как изменится комиссия на срочной секции в случае принятия изменений тарифов.

Вот наваял Lua-скрипт для QUIK, показывающий, какое количество сделок у вас исполняется по рынку об встречные заявки.
Для работы скрипта в QUIK должны быть заказаны обезличенные сделки по тем инструментам, которыми вы торгуете.

Также скрипт покажет текущую биржевую комиссию и будущую в случае принятия указанных изменений. Если вы торгуете интрадей (скальперские сделки), то текущую комиссию надо разделить на два.

Напишите в комментариях, сильно ли изменится ваша комиссия?

function main()
  local Trades = {}
  local comission = 0
  SearchItems('trades', 0, getNumberOf('trades')-1,
    function (class_code, trade_num, flags, exchange_comission)
      if class_code == 'SPBFUT' or class_code == 'SPBOPT' then  -- Учитываем только сделки на срочной секции
        comission = comission + exchange_comission
        local t = {flags & 0x4, exchange_comission}
        if Trades[class_code] then
          Trades[class_code][trade_num] = t
        else
          Trades[class_code] = {[trade_num] = t}
        end
      end
      return false
    end,
  'class_code,trade_num,flags,exchange_comission')

  local total = 0
  local maker = 0
  local taker = 0
  local comission2 = 0
  SearchItems('all_trades', 0, getNumberOf('all_trades')-1,
    function (class_code, trade_num, flags, sec_code)
      if Trades[class_code] then
        local t = Trades[class_code][trade_num]
        if t then
          total = total + 1
          if flags & 0x1 ~= 0 then
            if t[1] == 0 then
              maker = maker + 1
            else
              taker = taker + 1
              comission2 = comission2 + t[2]
            end
          elseif flags & 0x2 ~= 0 then
            if t[1] == 0 then
              taker = taker + 1
              comission2 = comission2 + t[2]
            else
              maker = maker + 1
            end
          else
            comission2 = comission2 + t[2]
          end
        end
      end
      return false
    end,
  'class_code,trade_num,flags,sec_code')
  message(string.format('total:   %u\nmaker: %u\ntaker:  %u\n\ncomission\nсейчас:       %.2f\nскальпинг: %.2f\nстанет:       %.2f', total, maker, taker, comission, comission / 2, comission2 * 3))
end
  • обсудить на форуме:
  • QUIK

Алготрейдинг. Приостановка скрипта на определённый временной интервал

function main
	-- пример работы функции. Приостановка на клиринг
	local ServerTime = getInfoParam("SERVERTIME")
	local tTime = {"14:00:00","14:05:00"} -- время начала/окончания неторгового периода
	local result = diffTime(tTime[1], tTime[2])

	if ServerTime>=tTime[1] and ServerTime<=tTime[2] then
		message("Приостановка работы скрипта на ".. tostring(result).." сек.")
		sleep(result*1000) -- время приостановки в секундах. Время в Quik в миллисек., поэтому * 1000
	end
end

function diffTime(time1, time2)
-- возвращает разницу в секундах между time2-time1; либо 0, если time1 > time2
-- time1 = "14:00:00"
-- time2 = "14:05:00"
-- result = diffTime(time1, time2) -- = 300 секунд

local dt1 = {}
local dt2 = {}
local dTime1 = 0
local dTime2 = 0
local result = 0

	dt1.hour,dt1.min,dt1.sec = string.match(time1,"(%d*):(%d*):(%d*)")
	for key,value in pairs(dt1) do
		dt1[key] = tonumber(value)
	end

	dt2.hour,dt2.min,dt2.sec = string.match(time2,"(%d*):(%d*):(%d*)")
	for key,value in pairs(dt2) do
		dt2[key] = tonumber(value)
	end

	--часы*3600 + минуты*60 + секунды.
	dTime1 = dt1.hour*3600 + dt1.min*60 + dt1.sec
	dTime2 = dt2.hour*3600 + dt2.min*60 + dt2.sec
	result = dTime2 - dTime1

	if result <= 0 then
		return 0
	else
		return result
	end
end

Бен, это Данила. Бен, ай нид хелп! Колбеки пропали...

    • 08 февраля 2022, 12:23
    • |
    • Vkt
  • Еще
У меня отдельный скрипт ведет полный реестр колбеков за день.
OnOrder и OnTrade приходят,  OnTransReply нет.
Раньше были. В чем может быть проблема? Первый раз такое. Может сталкивался кто?
  • обсудить на форуме:
  • Quik Lua

Алготрейдинг. Получение имени запускаемого скрипта

— Функция возвращает имя запускаемого скрипта
— может пригодиться для логирования результата (лог_<имя_запускаемого_скрипта>)

scName=""

function OnInit(script_path)
    scName=tostring(get_file_name(script_path)) -- получение полного пути к исполняемому скрипту
end

function main()
    message("имя файла = "..scName)
end

function get_file_name (file)
    local file_name = file:match("[^\\]*.lua$") -- поиск в строке полного пути к файлу названия скрипта.lua
    return file_name:sub(0, #file_name - 4) -- обрезка '.lua' в конце строки
end

В Quik 9 автоматический сбор мусора в lua не работает?

Скрипт, нормально работающий в Quik 8.7, жрет и не освобождает память в Quik 9.2. Пришлось накостылить периодический вызов collectgarbage() в потоке обработчиков (вызов в потоке main() не помогает). Это норма в 9-м квике?

....все тэги
UPDONW
Новый дизайн