Блог им. 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

716 | ★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:
Фото
EUR/USD: котировки прощупывают дно в попытке возобновить рост
Европейская валюта закрыла пятницу выше уровня поддержки 1.1807, сформировав при этом свечную модель «бычье поглощение». Сигнал для покупателей...
Фото
Астра купила долю в компании у своего контролирующего акционера😢
В среду 4 февраля на сайте раскрытия вышли сущфакты от Астры о совершении сделки с заинтересованностью. Ссылки на сущфакты: ➡️ сделка с...
Фото
Итоги первичных размещений ВДО и некоторых розничных выпусков на 6 февраля 2026 г.
Следите за нашими новостями в удобном формате:  Telegram ,  Youtube ,  RuTube,   Smart-lab ,  ВКонтакте ,  Сайт
Фото
Рублевые корпоративные облигации: подбираем оптимальные выпуски
С начала текущего года ситуация в рублевых корпоративных облигациях в целом довольно спокойная – пока не наблюдается какая-либо выраженная...

теги блога Karim

....все тэги



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