Разрабатываем роботов для торговли на бирже с 2015 года

Автор записи: Дмитрий (Admin)
1 звезда2 звезды3 звезды4 звезды5 звезд (Голосов 33, среднее: 3,79 из 5)
Загрузка...

Bot

  • Всегда ОТКРЫТЫЙ КОД
  • БЫСТРЫЙ ЯЗЫК QLua
  • ИНДИВИДУАЛЬНЫЕ РЕШЕНИЯ
  • БЕССРОЧНАЯ ТЕХ. ПОДДЕРЖКА
  • ПОДРОБНЕЕ

 

 

Наша команда готова в кратчайшие сроки, по адекватным ценам автоматизировать Ваши торговые стратегии.
Создать индикаторы по Вашим заданиям.
Сделать для Вас любые другие вспомогательные инструменты.
 

QUIKМосковская Биржа

 

Совместное написание робота/индикатора по Skype, обучение
2000 р/час
Простой робот - 1 час
Средний по сложности робот - 3 часа
 

 

По поводу обучения.
Я не педагог, я практик, по этому, своими словами и никакой "воды".
Созваниваемся по Skype, я включаю демонстрацию своего экрана, пишу код, объясняю, отвечаю на вопросы.
В конце занятия отправляю Вам видеозапись.
 

 

Автоматизация работы трейдера. Скорость и точность. Торгуйте уверенно.

С чего начать самостоятельное обучение?

Автор записи: Дмитрий (Admin)
1 звезда2 звезды3 звезды4 звезды5 звезд (Голосов 15, среднее: 3,67 из 5)
Загрузка...

LogoNew
Во первых, Вам потребуются удобные среды разработки (программы, где Вы сможете писать свой код), о том, где их взять и как установить прочтите здесь. Минимально для написания скриптов QLua Вам понадобится только Notepad++, но мы рекомендуем Visual Studio Code с плагинами
Russian Language Pack for Visual Studio Code и Lua

Во вторых, получите терминал QUIK с демо-счетом, можете получить его либо в компании Arqa (разработчик терминала) по данной ссылке, либо у практически любого брокера.

И в третьих, начинайте изучать QLua.
Рекомендую начать с разделов меню "QLua(Lua) основы", в частности со статьи "База скрипта в QLua (lua)", остальные статьи данного раздела используйте как справочники при написании скрипта, в них практически к каждой функции есть пример кода с комментариями.
Смотреть полностью...

Модуль сереализации/десереализации и печати таблиц Lua

Автор записи: TGB
1 звезда2 звезды3 звезды4 звезды5 звезд (Голосов 19, среднее: 2,95 из 5)
Загрузка...

Сереализация таблицы Lua (со всеми ее, возможно, многоуровневыми вложенностями и перекрестными ссылками) это представление ее в виде строки. Десереализация это обратная операция – восстановление таблицы из строки.

Эти операции могут потребоваться, например, при хранении таблиц на внешнем накопителе или при передачи таблиц между различными скриптами.

Особенность представленного модуля состоит в том, что на вид сереализуемых/десереализуемых таблиц накладываются более слабые ограничения, чем это обычно принято.

--

В модуле реализовано два варианта сереализации/десереализации таблиц Lua:

1) Сереализация/десереализация (функции tbl_to_string и string_to_tbl) таблиц частного вида со следующими ограничениями:

- ключи и поля таблицы только типа : table (простые, не метатаблицы), booleannumberstring;

- все внутренние элементы таблицы (ключи и поля) типа table (ссылки на них) должны быть уникальными (в пределах таблицы с учетом всех ее вложенностей).

2) Сереализация/десереализация (функции tbl_to_str  и str_to_tb ) таблиц общего вида (при условиях,  детально рассмотренных далее в описании модуля), элементами (ключами и полями) которых могут быть любые Lua-типы (включая метатаблицы и ссылки на functionthread, userdata). Связи между элементами таблиц могут быть произвольными.

Кроме того, в модуле реализована функция печати любых Lua-данных, в том числе произвольных таблиц в удобном для анализа виде (со всеми вложенностями и перекрестными связями, включая метатаблицы, а также ссылки на functionthread, userdata).

----

В представленном скрипте-тесте выполняется сереализация/десереализация глобальной таблицы Lua _G, хранящей стандартные и подключаемые пакеты скрипта, все его переменные без спецификации local и т.д. Там же приведены примеры  сереализации/десереализации более простых таблиц, например:

local t1 = {5, 't1'}

local tbl_str = {1, 2

, { 3, 4, {5}, [t1] = '[t1]' }

, [ { {}, '[8]' } ] = {'Простой пример'}

}

------------------------------------------------------

Смотреть полностью...

Модуль реализации интерфейса обработки событий QUIK с использованием очередей событий

Автор записи: TGB
1 звезда2 звезды3 звезды4 звезды5 звезд (Голосов 11, среднее: 3,09 из 5)
Загрузка...

В существующих (на момент 15.10.21) версиях QUIK, его основной (и единственный) служебный поток обслуживания скриптов пользователя запускает их на выполнение (по команде из меню <Загруженные скрипты>). Этот же служебный поток, транслирует скриптам пользователя события, возникающие в QUIK, запуская все функции обратного вызова (колбеки), всех запущенных на исполнение его скриптов. Таким образом, в каждом работающем скрипте пользователя существует его поток main, а все его колбеки запускаются в отдельном, (единственном) служебном потоке QUIK.
Существуют два вида колбеков:
1) колбеки обслуживающие события фондового рынка;
2) колбеки обслуживающие события, возникающие в созданных пользователем таблицах QIUK.
То, что служебный поток QUIK один обслуживает колбеки всех, запущенных на исполнение скриптов пользователя, является проблемой: если функции колбеков некоторого скрипта выполняются долго, или в них возникают длительные блокировки, то перестают обслуживаться колбеки остальных, работающих скриптов пользователя. Кроме того, в скриптах пользователя необходимо учитывать факт параллелизма выполнения потока main и служебного потока QUIK, выполняющего колбеки. То есть, заниматься, сложным для непрофессионала, параллельным программированием.
Из, всего выше сказанного, можно сделать вывод о том, что: в том виде, как он представлен, в текущий момент времени, интерфейс обработки событий в QLua «сырой» для использования его «широким кругом» пользователей.
Для устранения выше озвученных проблем разработчиком QUIK рекомендуется использовать потокобезопасные очереди для передачи параметров, запус-каемых колбеков, потокам main, в которых должны выполняться функции реакции на такие колбеки (документ «Использование Lua в Рабочем месте QUIK»).
Как это можно реализовать, в удобном и эффективном для пользователя виде, представлено ниже в виде:
1) кода модуля even_handling_module.lua ;
2) шаблона использования этого модуля.
Особенности реализации модуля even_handling_module.lua:
1) код модуля написан на «чистом» QLua;
2) очереди передачи параметров колбеков в скриптах пользователя в его потоки main (в разных скриптах это разные потоки) потокобезопасные и при этом они реализованы без использования синхронизации;
3) при реализации записи/чтения очередей, количество операций (на языке Lua) < 6 и не зависит от текущего размера очередей.
Выше перечисленные особенности реализации модуля even_handling_module.lua обеспечивают минимальное влияние на служебный поток QUIK того, что выполняется в скриптах пользователя, а также удобство использования модуля в скриптах пользователя.
Детальное описание использования модуля even_handling_module.lua приведено в его коде и коде шаблона, описывающего схему обработки событий QUIK.
Для подключения модуля к шаблону его надо сохранить в файле под именем even_handling_module.lua в папку хранения кода запуска QUIK (info.exe).
Коды модуля и скрипта-примера его использования:

Смотреть полностью...

Индикатор экстремум

Автор записи: kalikazandr
1 звезда2 звезды3 звезды4 звезды5 звезд (Голосов 6, среднее: 3,67 из 5)
Загрузка...

Облегченная версия индикатора, определяет локальные макс/мин цены на графике. Надеюсь, индикатор станет полезен для ваших торговых алгоритмов.

жми

 

Операционная система разработки многопоточных роботов торговли ценными бумагами в QUIK «OS_Quesha»

Автор записи: TGB
1 звезда2 звезды3 звезды4 звезды5 звезд (Голосов 8, среднее: 3,13 из 5)
Загрузка...

OS_Quesha представляет собой специализированную операционную систему реального времени (с характеристиками, часть из которых будет детально представлены в конце статьи), реализованную в среде QUIK. Она обеспечивает разработку многопоточных торговых роботов для QUIK версий 7…, установленных в Windows 10 (32 , 64 р). С ее помощью могут быть решены сложные задачи эффективного использования многопроцессорности современных ПК с целью повышения скорости обработки данных в роботах, разрабатываемых на языке QLua и C++. OS_Quesha обеспечивает в языке программирования QLua, изначально отсутствующий в нем, параллелизм выполнения его, взаимодействующих между собой, функций в рамках одной его инсталляции. Кроме того, средства OS_Quesha решают и иные существенные задачи, возникающие при разработке торговых роботов, в том числе, обеспечивают устойчивость их функционирования при сбоях аппаратуры и программ.
OS_Quesha запускается в QUIKе в виде обычного QLua-скрипта. При этом, в рамках процесса QUIK, она разворачивается в виде нескольких, эффективно взаимодействующих между собой, потоков, количество которых определяется ее настройками. Ее реализация внутри процесса QUIK обеспечивает тесную интеграцию с ним, а значит высокую скорость взаимодействия с ним, недостижимую при межпроцессорном взаимодействии. Для пользователя OS_Quesha представлена формой диалога, запускаемой в отдельном потоке. Из OS_Quesha доступен весь программный интерфейс QUIK, существующий для скриптов QLua. Наличие работающего шаблона TS_QUIK.lua (в виде исходного кода на языке QLua), демонстрирующего применение средств OS_Quesha и ее компактность, обеспечивают низкий порог вхождения при ее использовании.Смотреть полностью...

Библиотека lua_share: обмен данными между скриптами и приложениями

Автор записи: toxa
1 звезда2 звезды3 звезды4 звезды5 звезд (Голосов 13, среднее: 3,92 из 5)
Загрузка...

ОПИСАНИЕ:
Библиотека предназначена для обмена данными между lua-скриптами, работающими в разных процессах, а так же в
одном процессе, но в разных lua-машинах. Прежде всего, она будет полезна пользователям терминала QUIK.

Комплект состоит из библиотеки lua_share.dll и файла lua_share_boot.lua. Для корректной работы оба файла должны
находиться в одном каталоге. Если файл lua_share_boot.lua отсутствует, то библиотека ведет себя несколько иначе,
но тоже работает, о чем ниже. Для межпроцессного взаимодействия в комплект так же входит IPC-сервер под названием
lua_share_server.exe и lua-скрипт lua_share_server.lua.
Смотреть полностью...

Благодарность

Автор записи: Jon
1 звезда2 звезды3 звезды4 звезды5 звезд (Голосов 9, среднее: 3,67 из 5)
Загрузка...

Уважаемые создатели данного ресурса!

Хочу поблагодарить Вас за данный сайт и ту информацию которая здесь представлена.. С уверенностью могу заявить что это один из самых информативных сайтов по данное теме. В частности по языку Lua и его применению в Quik для создания торговых систем.  Информация,  которая представлена на этом сайте,  в полном объеме отражает тот необходимый минимум для начала изучения вопроса создания мтс. Очень понравились оперативные и профессиональные ответы на вопросы . Удачи Вам!

Отсылка транзакций из С++ без использования Lua кода.

Автор записи: AndreyKrivcov
1 звезда2 звезды3 звезды4 звезды5 звезд (Голосов 5, среднее: 5,00 из 5)
Загрузка...

Доброго времени Суток.

Так как данный ресурс мне довольно сильно помог, и так как у меня появились неплохие свои наработки, которые могут быть полезны Вам, то я решил отдать "дань" данному ресурсу и посодействовать его развитию, поделившись с Вами одной из таких наработок.

ПРЕДУПРЕЖДЕНИЕ:
1) Код НЕ потокобезопасный и по этому требуется использовать разделяемые ресурсы для работы со стеком Луа (если проект многопоточный).

2) Предоставляется "Как Есть" и не несу не какой ответственности за Ваше использование кода

3) Если найдете недочеты или баги, то просьба сообщить тут. (поправим)

Код написан на плюсах и собственно разделен на 2 файла (заголовочный и реализации). Данная обертка функционирует следующим образом:
1) При использовании функций, автоматически формируется массив с полями таблицы. Если вдруг поле менялось дважды то оно просто меняет свое значение в массиве. Так же таблица сама нормализует цены и все прочие... Все команды вынесены в перечисления и по этому удобны для использования.

2) Вызывается функция std::string sentTransaction (Ttransaction &T) - принимающая в себя сформированную таблицу. Данная функция заносит в Луа все необходимые данные, вызывает lua_call и получает в качестве ответа сообщение об ошибке которое возвращает стандартная ф-ция lua_call.

Иными словами функционал таблицы и функции максимально схож с функционалом таблицы и функции из руководства пользователя луа.

Далее пойдет реализация:

Ttransactions.h

Теперь реализация данного заголовочного файла:

Ttransaction.cpp

В качестве примера использования, выложу открытие простого рыночного ордера с использованием данной таблицы:

Пример использования таблицы транзакций