Блог им. 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:
Фото
⚡️ Объявляем условия нового размещения
20 января финтех-сервис ПСБ Финанс (бренд CarMoney) начнет размещение нового выпуска облигаций с плавающим купоном 002P-02 на 500 млн...
Фото
Группа «Аэрофлот» опубликовала операционные результаты за 2025 год
Друзья, начинаем наш год на Smart-Lab с подведения операционных итогов за 2025 год. ✈️ Группа «Аэрофлот» успешно выполнила цель по поддержанию...
Российский рынок получил заряд оптимизма
Торги 14 января на российских фондовых площадках начались в плюсе. К 12:30 мск индекс Мосбиржи поднялся на 0,37%, до 2707 пунктов, РТС вырос на...
Фото
Хэдхантер. Ситуация на рынке труда в декабре идет ко дну - хуже не было никогда
Вышла статистика рынка труда за декабрь 2025 года, которую Хедхантер публикует ежемесячно, что же там интересного: Динамика...

теги блога Karim

....все тэги



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