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

Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
760 | ★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:
📌 Возобновляем максимальный кэшбек при покупке конвертируемых облигаций МГКЛ
По просьбам инвесторов мы возобновили максимальный кэшбек при покупке конвертируемых облигаций серии СО-001 (ISIN RU000A10ENZ0). Этот...
Фото
Магнитная аномалия: Когда еще, если не сейчас?
Год назад я писал пост " Магнитная аномалия " о том, как Магнит прячет свою «казначейку» в РЕПО, чтобы обойти требование закона об...
Фото
Евро и фунт готовятся к техническому отскоку, но потенциал ограничен
В четверг EUR/USD торгуется около 1,1380, стабилизировавшись вблизи двухмесячного минимума. Менее чем за две недели пара потеряла почти 2%....
Фото
Часть 4. Худший сектор за 10 лет: Почему рост бизнеса не привел к росту доходов акционеров?
Продолжаю серию заметок на тему: «Какие бизнесы на Мосбирже смогли успешно „впитать“ инфляцию за 10 лет?» Напомню, что инфляция за 10 лет...

теги блога Karim

....все тэги



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