Блог им. Karim

Quik. Экспорт свечей в dll на С++.

    • 28 марта 2017, 13:30
    • |
    • Karim
  • Еще



Как создавать и подключать внешнюю dll на С++ к скриптам в Quik показано здесь http://smart-lab.ru/blog/387954.php.

Следующий важный шаг — это передача данных из Quik в библиотеку. В видео показано, как передавать данные свечей. Есть несколько вариантов.

1. С помощью функции CreateDataSource(ClassCode, SecCode, INTERVAL_M1)  подписаться на источник данных, зарегистрировать свой калбэк, и при возникновении события уже обрабатывать нужные данные.

2. Использовать функцию OnAllTrade(table), которая вызывается при каждой сделке. Получать эти данные и самостоятельно нарезать свечи по нужному таймфрейму.

3.  С помощью функции getCandlesByIndex (ind, 0, n — quantity, quantity)  забрать нужное количество свечей с графика.

В видео рассматривается третий вариант, как самый простой с точки зрения реализации.

Аналогичным образом можно передавать и данные таблиц заявок, стоп-заявок, сделок и т.д. А дальше остается только обработать эти данные по заданному алгоритму и отдать команду в Quik (есть тоже 3 способа). И робот готов.

Архив проекта: yadi.sk/d/nllkzMHV3GQqPg

Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
737 | ★20
12 комментариев
«Таблица всех сделок» как ввести в файл. Может сделаете урок?
Сергей Кошелев, Вы имеете ввиду вывести в файл? Так там все просто:
n = getNumberOf(«all_trades»)
а дальше в цикле берете, например, цену 
getItem(«all_trades», i).price
и пишите в файл.
avatar
«Таблица текущий торгов» какое значение сейчас RTS или Si.
Сергей Кошелев, «Таблица текущий торгов»

А что это за таблица? Что за данные там?
avatar
Надо на С++, а не Lua. Я как понял на OnAllTrade как на C++ вызвать?
Сергей Кошелев,  Вы ее никак не вызовете, это callback. Ее вызывает Quik при каждой сделки. Самый простой вариант это добавить в скрипт на QLua такой код:

function OnAllTrade(trade)
Sl.SendTrades(trade)
end

а в библиотеке создать свою функцию «SendTrades» и обрабатывать таблицу trade.
Если посложнее, то можно прямо из библиотеки переопределить глобальное имя OnAllTrade на свое функцией 
lua_setglobal(L, «OnAllTrade»);

avatar
https://github.com/elelel/qluacpp есть либа которая это все делает. Но там нету .sln проекта.

Здесь есть только он не под Visual Studio не компилится. Может сделаете .sln проект из этой либы?

void OnAllTrade(lua::state& l, const qlua::alltrade& data) {
// Create extended QluaCpp API object.
qlua::extended_api q(l);
// Call message Quik LUA function
q.message(std::string(«OnAllTrade: „) + data.sec_code + std::to_string(data.price));
}

Сергей Кошелев, А зачем какая то сторонняя библиотека нужна?
Я же написал, как сделать. Всего две строчки добавить в код.
avatar
Вы написали на Lua, а надо C++. А так писать можно и без C++ вообще.
 Lua тормоз.
Сергей Кошелев, Другого в квике нет. QPILE вообще отстой.
avatar

Читайте на SMART-LAB:
Фото
Где предел падения рынка акций?
На фоне тотальных распродаж бумаг Индекс МосБиржи ныряет на минимумы 2023 г. Определить дно на росте волатильности — нетривиальная задача....
Фото
3 торговые идеи на этой неделе. Неопределенность не дает инвесторам действовать
Индекс МосБиржи за неделю потерял еще 5% с учетом дополнительных торговых сессий, тем самым завершив падением 18 недель подряд. Поводов для...
Фото
BITCOIN: рынок на распутье?
Биткоин продолжает плавное восхождение и вплотную приблизился к сопротивлению 66 500, которое выступает верхней границей узкого флета. Поскольку...
Мой Рюкзак #66: Потрепанная шкура в игре, но есть ли смысл выходить по текущим? Только если ребаланс
Мой Рюкзак #67: Стратегическое плечо под дивиденды
Последний раз писал пост 23 июня smart-lab.ru/company/mozgovik/blog/1319727.php Счет продолжает растворяться в жерле Мосбиржи, было 21,5...

теги блога Karim

....все тэги



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