XXM
XXM личный блог
27 декабря 2018, 09:39

Торговый робот на Lua для QUIK.

4 года и 4 месяца прошло с выхода поста «Торговый робот на LUA для QUIK» (https://smart-lab.ru/blog/200767.php) про конструктор Lbot. За это время он повзрослел, лишился графического интерфейса и… превратился в младшего брата для Lbot3D. И если раньше для Lbot была пробная версия (с одним инструментом и одним лотом), то теперь, фактически, сам превратился в пробную версию для Lbot3D и, с этого дня, предоставляется в свободное пользование с полным функционалом:

Торговый робот на Lua для QUIK.

Скачать Lbot180.zip можно тут: drive.google.com/open?id=1DL9jGEBm2Uhk89PcQdlK-ObaOe2zihnx
INI-файл написан для демо-QUIK на 3 инструмента — Сбербанк, Газпром и Лукойл. Стратегия на Газпроме — безиндикаторная, на Сбербанке — на скользящих средних, на Лукойле — на пересечениях MACD.

encoding = "UTF-8"
FREQUENCY = 1000
account = NL0011100043, 10110
PositionSize = 300000
xy = 421, 0, 859, 118
;-------------------------------------------------------------------------------
[GAZP]
Security = GAZP, QJSIM, Gazp_moex
WorkSize = 3		//  рабочий объем, в штуках;
LossLimit = 100		// ограничение на убыток по стратегии
OpenSlippage = 10	// допустимое проскальзывание на сделке, в количестве минимальных шагов цены;
OpenLong =  {Close, 1} < {High, 2}	// цена 'close' предыдущей 'полной' свечи превысила 'high' предшествующего ей бара;
OpenShort = {Close, 1} > {Low, 5-2}	// цена 'close' предыдущей 'полной' свечи принизила 'low' 5-2 баров;
StopLoss = 2
TakeProfit = 3, 1, 1
EOD = 18:29:00	//закрытия позиции в указанное время.
autoBot = Y
[SBER]
Security = SBER, QJSIM, Sber_moex
WorkSize = 10
LossLimit = 100
OpenSlippage = 10
OpenLong	= {Ema1} > {Ema2}
CloseLong	= {Ema1} < {Ema2}
OpenShort	= {Ema1} < {Ema2}
CloseShort	= {Ema1} > {Ema2}
autoBot = Y
[LKOH]
WorkSize = 2
Security = LKOH, QJSIM, Lkoh_moex
LossLimit = 225
OpenSlippage = 10
OpenLong	= cross(macd_Lkoh.0, macd_Lkoh.1)
OpenShort	= cross(macd_Lkoh.1, macd_Lkoh.0)
;OpenLong =  {Close, 1} < {Low, 5-2}
;OpenShort = {Close, 1} > {High, 2}
StopLoss = 30
TakeProfit = 50, 10, 10
autoBot = Y

Параметры приведены исключительно как пример для составления собственных стратегий. Для облегчения процесса запуска приложен файл Lbot180.tab для экспорта вкладки в QUIK.
На этих примерах вы можете сконструировать свои стратегии для реального счета на своих любимых акциях, фьючерсах.

Обновлена программа LbotTest (также в свободном пользовании с полным функционалом) в части корректной обработки параметра EOD (ежедневное закрытие позиций в определенное время). В комплекте для тестера 17 стратегий для Сбербанка:
Торговый робот на Lua для QUIK.

[SB_A1] Стратегия на двух скользящих средних, реверсная;
[SB_A2] На двух скользящих средних, с тэйк-профитом и стоп-лоссом;
[SB_A3] Лонг/шорт на пересечениях MACD, реверсная;
[SB_A4] Лонг/шорт на пересечениях MACD, с тэйк-профитом и стоп-лоссом;
[SB_A5] входы на MACD с применением фильтра из пары скользящих средних;
[SB_A6] Лонг/шорт и выход - на фиксированных уровнях;
[SB_A7] Лонг/шорт - на фиксированных уровнях, с выходами по тэйк-профиту или стоп-лоссу;
[SB_A8] Лонг и выход - на фиксированных уровнях;
[SB_A9] Шорт и выход - на фиксированных уровнях;
[SB_AA] Лонг от нижней линии канала, продажа - по верхней, фиксированный стоп-лосс;
[SB_AB] Лонг от нижней линии канала, с фильтром на MACD, стоп-лосс на MACD;
[SB_AC] Шорт от верхней линии канала, продажа - по верхней;
[SB_AD] Шорт от верхней линии канала, с фильтром на MACD;
[SB_AE] Лонг пр прорыве верхней линии, шорт - от нижней, со стопом и трейлинг-профитом;
[SB_AF] Лонг от нижней линии канала, шорт - от верхней, со стопом и трейлинг-профитом. Только при пересечениях ценой линий канала;
[SB_AG] входы - на свечных комбинациях, стоп и тейк-профиты - в пунктах;
[SB_AX] входы - на пересечениях RSI и уровней, стоп и тейк-профиты - в процентах;

Графические пояснения:
Торговый робот на Lua для QUIK.
Торговый робот на Lua для QUIK.
Для облегчения запуска примеров имеются файлы-вкладки для QUIK: LbotTest_TQBR.tab (QUIK 7.19.0.51) и LbotTest_QJSIM.tab (QUIK 7.23.1.14)

Программы «as is», никаких гарантий и обязательств.
На вопросы отвечу с удовольствием!
Успехов в алготорговле!
С наступающим Новым Годом!
Торговый робот на Lua для QUIK.

71 Комментарий
  • KarL$oH
    27 декабря 2018, 09:45
    Вот молодец!

    Не то, что говнобобот.рф, готовый продать мать родную.
      • KarL$oH
        27 декабря 2018, 10:27
        XXM, не, это была пародия на одного местного 3,14yesбола ;)
    • Wallstep
      27 декабря 2018, 14:20
      KLoYH, )) он её уже продал)) теперь «фуфельками» приторговывает ))
  • Shadow
    27 декабря 2018, 10:01
    Спасибо, будет интересно изучить его! :)
  • dilettante
    27 декабря 2018, 10:23
    А более подробное описание характеристик и логики действий бота на сайте есть?
  • А. Г.
    27 декабря 2018, 11:15
    Странный какой-то Код класса. У меня TQBR в квике.
    • Юрий Ч.
      27 декабря 2018, 11:22
      А. Г., QJSIM — это на игровом сервере от разработчиков квика.
      P.S. В этом «конструкторе» зачем-то сетевые функции используются.
      • А. Г.
        27 декабря 2018, 12:20
        XXM, а, это демка.
  • Mope
    27 декабря 2018, 11:41
    И как успехи?
  • NikGood
    27 декабря 2018, 11:55

    У Вас в примере:
    OpenLong = {Close, 1} < {High, 2}
    OpenShort = {Close, 1} > {Low, 5-2}
    Ошибки со знаком больше/меньше нет?

    • ch5oh
      27 декабря 2018, 12:05

      NikGood, какая разница какие там знаки? Это же просто пример. Или Вы ожидаете, что оно начнет Вам рубить бабло вот прямо сразу? =)

       

      Кстати, лучшая реклама робота (или платформы) — эквити портфеля торговых роботов, которые сам на свои деньги торгует автор этого торгового комплекса… ;-)

      • NikGood
        27 декабря 2018, 14:23
        XXM, да ясень пень:) просто знак в строке OpenLong = {Close, 1} < {High, 2} не соответствует её описанию "//цена 'close' предыдущей 'полной' свечи превысила 'high' предшествующего ей бара" и только это я хотел Вам напомнить.
  • @SMARTECONOMIST
    27 декабря 2018, 12:11
    Побольше бы таких постов и блогов на СЛ. Автору большое спасибо! … а то все жуют вокруг да около… Олейниковы в общем 
  • Поджигатель Жирафов
    27 декабря 2018, 12:14
    Большое спасибо, XXM! Таких годных постов на SL действительно мало
  • anvil
    27 декабря 2018, 12:54
    благодарю.

    вы наш местный дед мороз
  • transmega
    27 декабря 2018, 13:03
    бросайте вы этот QUIK… MT5 — вот терминал с тестером и в 5 раз более быстрыми заявками и своим языком MQL…
    • tranquility
      27 декабря 2018, 14:36
      transmega, насколько я знаю, в мт5 эксперт подсоединяется к одному конкретному графику. А если я хочу корзину инструментов торговать, то подсоединять эксперта должен только к одному инструменту? Что-то мне подсказывает, что в таком случае все будет очень криво и костыльно реализовываться, если это вообще возможно.
      • Friendly Deep Space
        27 декабря 2018, 15:06
        tranquility, там можно в эксперте задать корзину торгуемых инструментов и повесить на любой график, но все равно для mql5 надо разбираться в программировании)
      • Пафос Респектыч
        27 декабря 2018, 16:35
        tranquility, это решается через внешнюю DLL. Можно накидать на каждый график по эксперту, но DLL-ка будет загружена только одна всё равно, всё происходящее на графиках передаётся в неё, и через сокет по например GRPC она уже общается с внешним «мозгом», который рулит торговлей всей корзины. Логику стратегии всё равно удобнее на питоне или го писать во внешнем процессе, MQL только для непосредственно торговых операций. 
        • tranquility
          27 декабря 2018, 17:34
          Zweroboi, собственно, у меня такая же архитектура бота (длл + внешний сервер который содержит в себе торговый алгоритм), но применительно к луа/квик, изначально я так под mql5 писал).
          • Пафос Респектыч
            27 декабря 2018, 17:41
            tranquility, ну значит не костыль )
          • Пафос Респектыч
            28 декабря 2018, 18:45
            tranquility, а есть какие-то плюсы у Lua/Quik перед MT5 в такой конфигурации? Кроме набора инструментов, если сравнивать
            • tranquility
              28 декабря 2018, 21:16
              Zweroboi, главная моя мотивация перейти с мт5 на квик была в том, что появилась байка что в первом есть функционал, который позволяет брокеру нарисовать в терминале тебе любой график и тем самым злонамеренно слить твои бабки. Насколько это имеет отношение к действительности я не знаю)) А так, квик вроде как по скорости проигрывает мт5, хотя я не измерял, сам пока на стадии бектестирования нахожусь все еще… Судя по документации, QLua из квика может больше информации об инструментам извлекать через api, но пока я не могу оценить насколько велика в этом выгода.
              • Пафос Респектыч
                28 декабря 2018, 23:42
                tranquility, понятно. Мне интерфейс метатрейдейский как-то больше по душе как выглядит ) а так работает и работает, сомневаюсь что кто-то лично для меня будет котировки рисовать )
        • ch5oh
          28 декабря 2018, 23:58
          Zweroboi, стесняюсь спросить… кто такой «GRPC»? Ну, то есть «Remote Procedure Call» — это понятно. Но все же?..
          • Пафос Респектыч
            29 декабря 2018, 00:58
            ch5oh, http://lmgtfy.com/?q=grpc
            • ch5oh
              29 декабря 2018, 15:21

              Zweroboi, тонкий стеб. Улыбнуло.

              grpc.io

               

              С Наступающим! Пусть в следующем году все Ваши месяцы будут зеленые.

  • Friendly Deep Space
    27 декабря 2018, 15:04
    Автор, поясните, а то не совсем понятно, что это такое. Это плагин для Квика, который позволяет в рабочем файле в текстовом виде специально «упрощенным» языком без рутины описать правила входов для каждой системы у необходимого инструмента, и после этого, запуск плагина приведет к автоматической торговле в соответствии с описанными правилами?
      • Friendly Deep Space
        27 декабря 2018, 15:25
        XXM, понятно, и вижу, что еще в двух вариантах бывает, а чем LBot от LBot3D отличается, что у второго ценник 12т?
          • Friendly Deep Space
            27 декабря 2018, 16:49
            XXM, т.е. в версии 3D, в отличии от предшественника, добавилась возможность на один тикер вешать сразу несколько алгоритмов и применять лимитные заявки. Понятно, так бы сразу и сказали)
  • Boris Golf
    27 декабря 2018, 17:30
    XXM, а можно ли в условиях открытия/закрытия ордеров использовать «события» — например, факт исполнения заявки? Или факт изменения количества открытых позиций по инструменту? (чтобы построить алгоритм «лесенки»)
  • ves2010
    27 декабря 2018, 22:25
    таймфрейм 60 минут???? лол афтор не торговал вживую ниразу
  • Oleg Only Algo
    28 декабря 2018, 06:50
    Movsber1  и movsber2? А что такое?
  • Oleg Only Algo
    28 декабря 2018, 06:50
    И как скачать то, если ошибка выскакивает?
  • Oleg Only Algo
    28 декабря 2018, 06:59
     Там исходники есть?
  • Влад(и)Мир
    28 декабря 2018, 07:20
    Хорошая работа.

    Параметры задокументированы?
    Например, какие в валюте а какие в процентах?
    LossLimit 
  • Максим Поплавский
    19 апреля 2019, 10:31
    Подскажите, пожалуйста, у меня индикатор «ind» из двух линий на некоторых участках графика не выдает значений. Правильно ли я думаю, что там ind.0 = ind.1, то есть в луа nil = nil? И поймет ли меня Lbot, если я в какой-либо из команд типа CloseLong, TakeProfitLong, StopLossLong захочу закрыть позиции с таким дополнительным условием ind.0 = ind.1?

    P.S. Спасибо большое за робота!
  • Максим Поплавский
    08 июня 2019, 08:58
    Добрый день!
    Снова небольшой вопрос возник. У меня интернет бывает вылетает и в последней стратегии, которую я запускаю, сделки почему-то закрываются после переподключения.

    Вот настройки ini:

    [marsi]
    Security = RIM9, SPBFUT, Price_chart, A1
    OpenSlippage = 20
    QuontForOpen = 10
    WorkSize = 1
    OpenLong = cross(marsi.2, marsi.3, 1)
    OpenShort = cross(marsi.3, marsi.2, 1)
    StopLoss = 0.7%
    TakeProfit = 4.2%, 0.01%, 0.02%
    autoBot = N


    И часть лог файла:

    16:00:01; [RIM9]; i_gO_01 OpenLong; cross(marsi.2, marsi.3, 1) => Есть кросс: return 65 >59 <=> return 69 >66
    16:00:01; [RIM9]; 02 Есть заявка: buyS = 130710 x 1, id= 338349831, OpenLong, Price_chart, Bar№ =45173
    16:00:02; [RIM9]; OnTrade, ПОКУПКА: 1 x 130510, OpenLong, trade_num = 2301531758, order_num= 35778202063, 1 сек.
    16:00:02; [RIM9]; 03 исполнена заявка «ПОКУПКА», всего: 1 x 130510, QUIK: 1, робот: 1
    16:00:02; [RIM9]; 04 OnTransReply, OpenLong, Заявка 35778202063 успешно зарегистрирована., t_id= 338349831
    19:00:04; Робот работает.
    21:56:20; Связь с брокером потеряна.
    21:56:35; Связь с брокером установлена.
    21:56:49; Робот работает.
    21:57:08; [RIM9]; 01 STOP_Long; вход= 130510; Цена= 116290; SL= 129596.43. Запрет на OpenLong на баре 45344
    21:57:08; [RIM9]; 02 Есть заявка: sellS = 130370 x 1, id= 108912361
    21:57:11; [RIM9]; Profit=-370 => -310, (1*(130570-130510))
    21:57:11; [RIM9]; OnTrade, ПРОДАЖА: 1 x 130570, SLL_01, trade_num = 2301894315, order_num= 35787978957, 3 сек.
    21:57:11; [RIM9]; 03 исполнена заявка «ПРОДАЖА», всего: 1 x 130570, QUIK: 0, робот: 0
    21:57:11; [RIM9]; 04 OnTransReply, SLL_01, Заявка 35787978957 успешно зарегистрирована., t_id= 108912361


    Подскажите, пожалуйста, можно ли как-то решить эту проблему?
      • Максим Поплавский
        09 июня 2019, 11:57
        XXM, это боевой счет. Отправил скайп в личку, добавьте меня. В принципе, я думаю, что эту ситуацию можно воспроизвести простым отключением соединения в квике. Когда будет подходящая ситуация — напишу в скайп и покажу он-лайн, по возможности.
  • Ирина Большухина
    01 июня 2020, 17:43
    А есть живой рабочий пример стратегии на Lbot?
  • Ирина Большухина
    02 июня 2020, 10:41
    Вот я про «свои» параметры и цифры. Что корректнее поставить для начала*? Планирую открыть отдельный субсчет, на него поставить робота и посмотреть. Ведь, насколько вижу, здесь проведено 3 стратегии, релевантные каждой бумаге.
    *в своё время упоминание про «скользящие средние» на просторах интернета находила. В примере это на какой бумаге? Спасибо.
  • Алексей Чирва
    06 сентября 2020, 20:31
    Добрый вечер. Можете сделать мне робота на lua для quik, или посоветовать мастера?
    Задача простая: на любом графике валют на ммвб(но скорее всего на м5 или м1) в определенный оператором момент в торговую сессию крутится лонг/шорт определенным количеством лотов от точки задаваемой оператором пока не станет позиция по тренду…
  • swerg
    24 ноября 2020, 10:28
    encoding = "UTF-8"

    Но почему? и как вы это дружите с остальным скриптом?
    • Игорь  Кадыров
      15 августа 2021, 16:03
      XXM, я не понял, это демо версия или ее можно запускать в квик и рубить бабло мешками?

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн