Блог им. AndreiSk

Про обмен данными из QUIK в робота


Так как у меня есть робот, то на досуге решил подумать,
чего у него можно улучшить с целью повышения быстродействия.
Робот написан на .Net (C#).
Получает данные (стакан, таблицы) из QUIK по DDE (на моей стороне стоит компонент NDDE)
и отправляет-снимает заявки через trans2quik.dll
В последнее время стал подозреваать, что DDE для десятка стаканов уже тормознуто
как-то выглядит.  
Решил покопать инет, с целью обнаружить более быстрый способ.
И, кажется нашел. Начиная с версии 6.15 в квике как оказывается в Lua есть вывод через
стандартный дебажный канал 
http://quik2dde.ru/viewtopic.php?id=108
 
Сообщения из которого можно отловить например этой утилиткой:  
https://technet.microsoft.com/en-us/sysinternals/bb896647

А тут пример на .Net, вполне рабочий 
http://www.codeproject.com/Articles/13345/DbMon-NET-A-simple-NET-OutputDebugString-capturer
Проверил x86 и x64 сборки, под x64 есть небольшая бажка,
// Everything after the first DWORD is our debugging text    
IntPtr pString;     
if (Environment.Is64BitProcess)
     pString = new IntPtr(m_SharedMem.ToInt64() + Marshal.SizeOf(typeof(int)));     
else
     pString = new IntPtr(m_SharedMem.ToInt32() + Marshal.SizeOf(typeof(int)));

Вот код скрипта на Lua 

is_run = true

MAIN_SLEEP_MS = 500  — Спим в мсек

function main()
  counter = 1
  while is_run do
    counter = counter + 1
    PrintDbgStr(«Time:»… os.date("%H:%M:%S")… " counter:"… tostring(counter))
    sleep(MAIN_SLEEP_MS)
  end;
end

function OnStop()
  is_run = false
end

(если что, вот здесь http://quik2dde.ru/viewtopic.php?id=16 написано куда это совать в квике). 

Я проверил, 500 сообщений в секунду передается.
И в цикле он еще спит 500мс в сумме. Т.е. скорость порядка 1000
сообщений из квика вполне можно получить. 
Ну понятно, что из main слать глупо, лучше через подписку на события.
Думаю с понедельника начать переделку.
Кто-нибудь пробовал так уже? Есть невидимые грабли?
Вроде как стоящая замена DDE...

Еще вопрос. Давно думаю о Прямом подключении,
если у кого есть такое уже, просветите по бюджету.

Возьмем допустим ITInvest http://www.itinvest.ru/pricing-n-docs/tariffs/direct-access/
Меня интересует ФОРТС (вторая табличка).
Я так понимаю, что сразу отдать 2360р за подключение и 2360р сразу же за первый месяц,
т.е. 4720р за первый месяц и 2360р за последующие. Кроме того 50% от биржевого сбора также надо платить брокеру. Правильно? И что такое 50% для «разово»?

На какую технологию лучше сделать упор если работать напрямую? FIX/FAST/Плаза2?
Интересует мнение опытных товарищей. 

У меня не высокочастотный бот, но и тормозить ему незачем :)

650 | ★9
13 комментариев
У айти за апи смарткома платить вроде тоже надо…
avatar
Андрей Ерохин, хмм… насколько я понял, это если роботов продаешь. А если для себя одного, 1 лицензию то бесплатно. Но вообще SmartCom это API доступа к серверам ITInvest, больше ни к чему. Я про SmartCom вроде не говорил.
Счастливый Конец, айти инвест печально знаменит своими серверами и работой. даже не думай. кидало клиента с тех проблемами.
А через сокет/shared memory кидать не проще?
avatar
Анзорик, возможно. Я видел тут на смартлабе человек выкладывал как в Lua работать через порты. Но что то мне подсказывает, что через Windows API оно будет шустрее.
Счастливый Конец, ссылочку плиз
Андрей Вячеславович (Ganesh), кажется эта была smart-lab.ru/blog/225497.php. Я тогда не сильно интересовался, просто запомнилось что пролетало
Блин, я вот читаю и охреневаю, мужики. Вот оно откуда берется конкурентное преимущество: дебажный канал, сокеты, shared memory? Долбануться просто :)

Да вы хотя бы разок прочитайте мануал по Lua, там глава по взаимодействию с внешним кодом. Ее даже если бегло по диагонали между строк пробежать, то понятно будет, как все сделать ПРАВИЛЬНО с максимальной производительностью и надежностью.

Не, реально, я всегда говорил, что этот C# до добра не доводит. Хорош на раслабоне сидеть — давайте работайте, если хотите отбирать деньги у других участников биржи на постоянной основе. Только С++, только хардкор :)
avatar
bstone, ну торговая стратегия это полдела, инфраструктурная поддержка тоже важна. Все же есть различие, ответит робот быстро или через минуту…
Счастливый Конец, ну так я и сказал, что дебажный канал и MAIN_SLEEP_MS = 500 — это просто абзац какая плохая идея в разрезе инфраструктурной поддержки.
avatar
bstone, давайте все же без фанатизма. Кодить на lua под квиком — совершенно недружелюбное занятие. Меня вполне устраивает C# и совершенно не нравится писать на lua, чего и пытаюсь избежать.
Я делал так: подписываюсь на уведомления изменения стакана в 33 инструментах. При изменении пересчитываю показатели, плюс беру информацию из таблицы параметров. Получается очень быстро. Правда луа в квике плохо документирован.
и попробуйте делать обмен через луа. Где-то в комментариях давал ссылку на рабочий пример. Доберусь до компа и напишу.
avatar
нашел предыдущие записи.
выгрузка через OLE сервер:
www.bot4sale.ru/projects/utils-menu/utils-list/423-quik-ole.html
через odbc: либо через lua_odbc либо через luasql
подписываетесь на событие при обновлении стакана нужного инструмента (Subscribe_Level_II_Quotes)
потом получаете стакан OnQuote.
дальше внутри функции OnQuote экспортируете в нужный вам драйвер (OLE, ODBC).
avatar

Читайте на SMART-LAB:
🖥 Яндекс выбирает дивиденды
IT-компания отчиталась за 4 квартал и прошлый год   Яндекс (YDEX) ➡️ Инфо и показатели     Результаты за 4 квартал — выручка: ₽436...
Фото
Как заработать на переговорах по Украине: любимые миркоины трейдеров
  В преддверии нового раунда переговоров по Украине редакция Т-Инвестиций спросила трейдеров об их ожиданиях, планах и инструментах, с...
Фото
Арбитраж фьючерс vs базовый актив: почему расхождение есть всегда и где здесь деньги
Не все расхождения одинаково полезны Классическая идея арбитража простая. Hа двух рынках один и тот же актив стоит по-разному:...
Фото
Россети Урал. Отчет об исполнении инвестпрограммы за Q4 2025г. Считаем дивиденды!
Компания Россети Урал опубликовала отчет об исполнении инвестпрограммы за Q4 2025г., где показаны финансовые показатели компании по РСБУ в...

теги блога Счастливый Конец

....все тэги



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