SciFi
SciFi личный блог
17 февраля 2015, 15:29

Запустил первого робота на бою

Завершил разработку своего первого торгового робота — свинг-трейдера и запустил его без режима отладки. Иду на работу, посмотрим что будет ) Надеюсь, он не сойдет с ума и не сольет мне счет. Все утро делал отладку и вроде исправил все возможные недочеты.

Естественно, он не тупо торгует скользящие средние. Мой алгоритм с диверсификацией, продвинутыми многолинейными индикаторами и учитывает проскальзывание, шаг и точность цены, причем не привязан к одному активу, а торгует заданный набор. Кроме этого, все транзакции и причины открытия сделок подробно записываются в логи, у каждого торгового дня свой отдельный лог файл. 

Не продается и не будет продаваться ) Куриц, несущих золотые яйца, не продают )

Запустил первого робота на бою 

Я не сразу пришел к этому. Начал разработку на QPILE под QUIK с трех простых вспомогательных программ (выгрузка котировок, показания многолинейных индикаторов, отображение состояния портфеля и доходности). На основе этого опыта уже смог написать робота буквально за 4 дня — 2 дня проектировал, 1 день писал, 1 день делал отладку.

Я рад тому, что в принципе написал и запустил робота в бою. Мне даже не важно, принесет ли он прибыль. Может быть, принесет небольшие убытки. Но сам факт этого достижения позволит мне теперь совершенствовать уже что есть и доводить это до ума.

Что могу посоветовать и рассказать начинающим разработчикам роботов?

1. Почитал книгу «Торговые роботы на рос. фондовом рынке» Чеботарева. Ничего не узнал конкретного о создании роботов, но узнал важные философские моменты. Во-первых, трудно мириться с силами с инсайдерами, с которыми у нас не борятся, и торговать новости. Во-вторых, робот будет торговать без эмоций и моя задача уже теперь сводится только к поиску и оптимизации хороших стратегий. Человеку сложно справиться с эмоциями, он находит все новые и новые оправдания для удерживания убыточных позиций. По себе знаю.

2. Что использовал? Я пользовался несколькими статьями по QUIK, QPILE и за основу взял уже готового робота, торгующего скользящие средние. В частности, этой статьей. А также экстенсивно использовал документацию по QUIK, особенно раздел «Алгоритмическая торговля». Также гуглил все сомнительные моменты по языку QPILE. 

3. У меня 8 лет опыта программирования. Я профессиональный программист, зарабатываю этим на жизнь. Несмотря на это, баги были и не мало. Я делал отладку очень долго и тщательно и исправил множество моментов. В отличие от других разработок, при разработке робота любая мелкая ошибка — признак наличия существенных проблем более общего уровня. И я переходил на этот общий уровень и старался устранить корень ошибки, а не симптом. Дебажить надо и при чем много. С первого раза у Вас не получится разработать робота без ошибок.

4. Я не использовал такие инструменты как TS Lab. Возможно, они полезны, но у меня не было необходимости. Все писал сам на уровне кода и писал то, что сам ясно понимаю. Я понимаю каждую запятую в своем коде, каждую строчку, каждую букву. 

5. Торговую стратегию раскрывать не буду, скажу лишь, что робот делает ровно то, что я делал до этого полтора месяца и зарабатывал на этом. Активно торгую полтора месяца всего и уже решил перейти на робота, так как не выжал за это время максимум из своих закономерностей из-за психологических проблем. 

Запустил первого робота на бою

6. Больше мудрость, чем конкретика — не бойтесь ничего. Fortis fortuna adiuvat — храбрым судьба помогает. Я боялся, что робот сольет счет. Но смог перебороть страх и довериться своей программе после отладки. 
 
Буду добавлять апдейты сюда по мере появления новостей. 

17.02.15. Пока все хорошо, +0.37 % к счету за день. Робот закрыл мои убыточные позиции и открыл новые позиции как и должен был. Итого, 8 сделок за день.

18.02.15. Первый день робот отторговал без слива счета. Выяснилось, что в нем во время боевой торговли оставались 2 ошибки. Но они оказались не столь критичными, так как я подтверждал один трендовый индикатор другим. Исправил их. В одном месте забыл поставить взятие по модулю, а в другом — фильтр, запрещающий покупать, когда поезд уже ушел. Кроме этого, когда я пришел домой, интернет не работал. Возможно, интернет упал во время торговли. Буду покупать интернет-флешку и, возможно, даже второй роутер — для страховки. Добавил утром еще 20 активов, которыми может торговать робот, и убрал 2 неликвидных актива — сделал усовершенствование. 
101 Комментарий
  • Lafert
    17 февраля 2015, 15:36
    Да… если профессиональные программисты с 8-ми летнем стажем пишут роботов на QPILE, то мне даже трудно представить, как пишут роботов начинающие программисты.
    • Юрий Елисов
      17 февраля 2015, 15:37
      Lafert, просто скорее всего так как это его первый робот, он не знает при помощи каких инструментов лучше писать и на чем… со временем придет… тем более совершенству там нет предела…
    • Redline
      17 февраля 2015, 15:44
      Lafert,
      вы настолько суровы, что сразу начали кодировать HFT роботов миновав стадию баровых страт?
      • Lafert
        17 февраля 2015, 15:49
        Redline, начинал я со спредера, который ддосил сервер квика в попытке быть первым в стакане, в том числе соревнуясь с самим собой) так, как видел людей, делающих на стоянии в спреде деньги.
      • Lafert
        17 февраля 2015, 15:58
        SciFi, вот только Луа и ТсЛаба Вам и не хватало) Джава-отличный, и весьма популярный, язык в финансовой индустрии. Берите FIX/FAST и вперед. Если не хотите расходов, получайте данные из квика через DDE (java это позволяет), а транзакции через текстовые файлы. Когда поймете, что надо скорость, подключите FIX/FAST.
        • Watcher
          17 февраля 2015, 16:03
          Lafert, на Java транзакции в Quik можно через trans2quik.dll отправлять с помощью JNI/JNA. А данные через связку «Lua-скрипт, пишуший в Windows Pipes + Java-класс для чтения из Windows Pipes».
          • Lafert
            17 февраля 2015, 16:09
            Enfernuz, думаете, «Lua-скрипт, пишуший в Windows Pipes + Java-класс для чтения из Windows Pipes» будет лучше старого доброго DDE?
            • Watcher
              17 февраля 2015, 16:23
              Lafert, я не проверял, конечно, но думаю, что будет быстрее. Кстати, по-моему, мы с Вами и с товарищем ПВМ такое уже обсуждали в его теме, где он выкладывал эту связку :)

              Upd. А, не, перепутал Вас с другим: smart-lab.ru/blog/216370.php
        • Сердюк Иван
          17 февраля 2015, 16:09
          Lafert, Интересно ваше мнение. Чем не устроил lua?
          • Lafert
            17 февраля 2015, 16:14
            Сердюк Иван, в чем смысл использования скриптового интерпретируемого языка (да и вообще зоопарка из языков и технологий), если можно обойтись стандартным подходом без лишних прослоек?
            • Сердюк Иван
              17 февраля 2015, 16:20
              Lafert, То, что он скриптовой не означает, что он плохой. Если работаешь в квике и пишешь на c#, приходится городить выгрузку данных.
              Да и к тому же если на луа, то есть колбеки.
              • Lafert
                17 февраля 2015, 16:27
                Сердюк Иван, возможно. Хотя, есть еще тема- открыть небольшой счет в алоре или IT, и получать данные через их апи, а торговать через квик. Раньше это нехило прибавляло не только в удобстве, но и в скорости.
  • Юрий Елисов
    17 февраля 2015, 15:36
    Ну… попутного ветра вам в этом направлении!:)
  • gib
    17 февраля 2015, 15:42
    Прочитал этот кусочек:

    «Естественно, он не тупо торгует скользящие средние. Мой алгоритм с диверсификацией, продвинутыми многолинейными индикаторами и учитывает проскальзывание, шаг и точность цены, причем не привязан к одному активу, а торгует заданный набор. Кроме этого, все транзакции и причины открытия сделок подробно записываются в логи, у каждого торгового дня свой отдельный лог файл. „

    и мне вспомнился анекдот почему-то:

    Киев, аэропорт “Борисполь». Стоят два пилота с Ту-134. Подходит к ним иностранец и спрашивает, как пройти для посадки на Боинг. Ему в ответ:
    — Шо?
    Повторяет вопрос на английском.
    — Шо?
    На немецком.
    — Шо?
    На французском.
    — Шо?
    Не получив ответа культурный заморский гость идет дальше. Один жлоболётчик другому говорит:
    — Дивысь Петро (Мыкола), який буржуин, сколько много языков знает!
    — Hу и шо, допомогло це ему?
    • Lafert
      17 февраля 2015, 15:45
      gib, анекдот тупой. Пилоты, как и другой персонал самолета, обязаны знать английский.
      • FrBr
        17 февраля 2015, 15:47
        Lafert, подтекст правильный =)
        • Lafert
          17 февраля 2015, 15:51
          Farmabear, это да, мысль правильно, но анекдот этот я слышал где-то в пяти интерпретациях (в том числе, он был обыгран в ролике в ералаше), и эта самая неадекватная.
      • gib
        17 февраля 2015, 15:53
        Lafert, я чтобы самому не набивать нашел в инете.
        Не обратил внимание про самолет. Вообще в первоисточнике он про Крещатик.
      • Иван Петров
        17 февраля 2015, 16:08
        Lafert, Хахаха-обязаны не значит что знают))) Или Вы не знаете как у нас все это делается
      • Иван Петров
        17 февраля 2015, 16:08
        SciFi, Я думаю пять сессий хватит))) Вернее депо на пять сессий хватит
    • Nemo_2000
      17 февраля 2015, 16:14
      gib, тут проглядывается такая жуткая религиозная догма — что прибыльность должна быть пропорциональна сложности торговых правил…
      • gib
        17 февраля 2015, 21:26
        Nemo_2000, о, вы в точку поймали мой сарказм. :-)
  • Redline
    17 февраля 2015, 15:44
    Молодец.
    Успехов.
    Переходи на MQL — не пожалеешь.
  • Prodik
    17 февраля 2015, 15:46
    Тоже все эти пункты проходил и написал на qpile, но опыта в программировании не было, за месяц изучил язык и потом множество роботов написал, пока не нашел свой грааль ) Писать на другом языке есть желание, но заставить себя не могу, приносит же прибыль и такой простой робот)
  • Profitwarrior
    17 февраля 2015, 15:48
    пару вопросов автору тестели на истории? какие результаты? какова максимальная просадка в пунктах на контракт и ожидаемая доходность в год? что робот делает в случаи попадания на геп? ( брокер повис, пауза на бирже открытие с гепом против вас?)
    • gib
      17 февраля 2015, 15:53
      Profitwarrior, вы наверное имел в виду не «тестели», а «ТЕФТЕЛИ»?
      • Profitwarrior
        17 февраля 2015, 18:04
        SciFi, вы недопускате возможность что торговали вы не так много пару месяцев по вашим словам, и просто рынок был благосклонен к вашей стратегии? то бишь то самое одураченные случайностью? ведь так можно делать бесконечно поработали ручками 2 месяца и в бой робота, если не пошло нову. страту пару месяцев ручками и снова автомат вперед. такой подход логичен если бы автомат работал на все депо и там уже по факту за пару месяцев удваивал депозит и при сливе 50% вы бы оставались при своих, а так если страта попала просто в удачный переод? есть вероятность потратить время и подслить депозит при неблагопиятном раскладе и снова искать Грааль и так до бесконечности, может лучше сначала все же помаксимуму бэктестить? в конечном итоге это экономия времени
  • vfreeman
    17 февраля 2015, 15:51
    «Не продается и не будет продаваться»
    пусть хотя бы месяц отторгует...
    а зачем выбрали qpile, думается для профессионального программиста это немного дауншифтинг, если конечно вы не программист на shell языках
  • Федор
    17 февраля 2015, 15:52
    Эх… помню себя в начале этого пути… тоже столько планов, море оптимизма… а потом уйма бессонных ночей в корректировании, оптимизации… и т.д… удачи Вам!
  • Eduard
    17 февраля 2015, 15:56
    Удачных торгов и поменьше злобных багов. Держите в курсе торговли.
  • Watcher
    17 февраля 2015, 15:57
    А я в QPILE как-то не въехал по-быстрому, и лень было разбираться. А там уже и Lua подоспел, но алгоритм вечно вешал терминал в виду особенностей работы потоков Quik. Написал в итоге на Java, так как на работе пишу на ней. Сейчас копаю в сторону Plaza2 и FIX/FAST — сначала на Java, потом буду переписывать на старом добром C++.

    Если Вы профессиональный программист, и прошли стадию языков типа Lua и QPILE в алготрейдинге, переходите на плюсы / C#.
    • Lafert
      17 февраля 2015, 16:07
      Enfernuz, к стати, с С# готов поспорить. Я, к примеру, делаю роботов на С#, но сталкиваюсь с рядом проблем, когда речь идет о достижении стабильного времени отклика. В шарпе ряд важных вещей, к примеру, GC являются черными ящиками. В яве, если не ошибаюсь, с этим чуть лучше. C++ понятно, вне конкуренции, но и писать, конечно, не так легко как на C#/java.
        • Lafert
          17 февраля 2015, 16:17
          SciFi, понимаю. Тоже приходилось на плюсах писать, и тоже примерно такие же ассоциации.
  • FrBr
    17 февраля 2015, 16:00
    эххх завидую я ботописателям — у них хоть есть четкая стратегия которую надо дать боту. А тут даже стратегии нет
  • SMA
    17 февраля 2015, 16:02
    успехов.
  • за сколько научите меня роботов писать?
  • Михаил Пиписькин
    17 февраля 2015, 16:05
    «Что могу посоветовать и рассказать начинающим разработчикам роботов?»

    Вы и есть начинающий, без обид.

    risovach.ru/upload/2013/03/mem/kakoy-pacan_13538766_orig_.jpeg
  • Иван Петров
    17 февраля 2015, 16:05
    Судя по стилю написания статьи-робот наверное написан ее хуже)))
    • Михаил Пиписькин
      17 февраля 2015, 16:10
      Иван Петров, после слов «Дебажить надо и при чем много.» понимаю что, тесты не не слышал.
            • Михаил Пиписькин
              17 февраля 2015, 16:54
              SciFi, такой ошибки быть не может по определению, параметры инструментов нужно брать из интерфейса а не писать от руки.
  • Маркиз Лафайет
    17 февраля 2015, 16:29
    «До чего дошёл прогресс -
    Труд физический исчез,
    Да и умственный заменит
    Механический процесс.

    Позабыты хлопоты, остановлен бег -
    Вкалывают роботы, а не человек.»
  • Alpinist573
    17 февраля 2015, 16:46
    SciFi, если вы освоили qpile, lua — проблем вообще для вас никаких не доставит. Позволю себе посоветовать 2 вещи, первое обязательно сделайте себе информирование на емейл о сделках, если робот зачудит, а это очень вероятно на стадии отладки (то что он несколько дней работает штатно — ничего не значит, могут быть редкие сочетания событий) вы это быстро поймете. И второе, все зависоопасные вызовы, типа обращения к графикам и таблицам запускайте из безопасного режима. Иначе скрипт ваш на луа будет регулярно подвешиваться при любом глюке от Квика.
      • Alpinist573
        17 февраля 2015, 17:20
        SciFi, нет этого геморроя с обращением к свечам по дате, можно просто по номеру свечи (на купели мне пришлось мастерить отдельный файл справочник, где датам был сопоставлен номер строки и тд, для упрощения обращения к конкретным свечам), далее можно вызывать внешние программы (так у меня реализована отправка алертов на мейл), там еще куча всего появилась типа коллбэков (событийная модель), якобы даже вроде можно тянуть данные не выводя на график (мне лично это не понадобилось). В целом на купайл похоже. Есть у Луа неприятная заморочка, если разложить скрипты в разные папки и при этом они обращаются к какой-нибудь внешней библиотеке, и начать их поочередно запускать, то они начнут терять пути и зависать. Откуда последнее запущено то и считается рабочей папкой, остальное все отвалится. Ну и в целом луа развивается, а купайл будет со временем убран. Для не ХФТ роботов луа за глаза и за уши, ноль заморочек с получением данных и отправкой транзакций, после первого рабочего робота все остальные написаны будут за 2-3 вечера (используя соотв наработки). Настоящая народная тема. Модель как и в купайле циклическая, опрос соотв параметров с заданным таймаутом. У меня стоит 3 секунды, это не мало конечно, Ри за это время даже на спокойном рынке 20-30 пунктов туда сюда пляшет. Конечно больших претензий к луа предъявлять не стоит, все будет очень простенько, визуализация и тд якобы возможна с помощью соотв библиотек, я проковырялся 2 вечера нормально ничего не работало и я забил, чистое исполнение, а все подробности в лог файл.
  • Просто Константин
    17 февраля 2015, 16:50
    как написано:
    «Естественно, он не тупо торгует скользящие средние. Мой алгоритм с диверсификацией, продвинутыми многолинейными индикаторами и учитывает проскальзывание, шаг и точность цены,....»
    как на самом деле:

    if ( ubitok < 1000 )
    {
    if ( random(1,2) = 1 ) {
    order->buy( random(1,5) );
    } else {
    order->sell( random(1,5) );
    }
    }

    • Просто Константин, аххахахаа
  • grevlanik
    17 февраля 2015, 16:53
    Удачи и поменьше багов, но их всё-равно будет немало, поскольку в алготрейдинге очень много краевых задач. Я своего робота целый год писал на Java. Правда сам не являюсь профессиональным программистом.
  • П М
    17 февраля 2015, 17:01
    Qpile прошлый век. Лучше сразу lua. Ну и надеяться что написанный за 4 дня робот принесёт стабильную прибыль — мягко говоря наивно.
  • Growex
    17 февраля 2015, 17:07
    «Естественно, он не тупо торгует скользящие средние»

    Чем дальше уходишь от средних тем быстрее к ним в итоге возвращаешься...))
      • Growex
        17 февраля 2015, 17:10
        SciFi, да, точно так… Три штуки… Система «адидас» ))
          • Growex
            17 февраля 2015, 17:19
            SciFi, неа… щас покажу...

            Это обычные средние, никакие не цифровые и не квантовымышленные…
            Вот прямо сейчас так показывает на Ри
              • Growex
                17 февраля 2015, 17:59
                SciFi, люди просто не хотят принимать убыток таким какой он должен быть… и поэтому принимают его гораздо бОльшим.

            • Alpinist573
              17 февраля 2015, 19:00
              Growex, это типа торгуете по пересечению краснозеленой МА с Синей только в сторону чисто зеленой МА с большим периодом, служащей фильтром? А какой это таймфрейм?
              • Growex
                17 февраля 2015, 20:12
                Alpinist573, нет, пересечение средних это что такое? Ничего абсолютно… оно уже не значимо там где оно появляется… направление линий гораздо более интересно...
                Зеленая — средняя за весь сегодняшний день. ))
                В направлении этой средней просто позиция побольше и закрывается частично… а против неё — меньше, со стопом и полным закрытием… Открывается поза на откатах и отскоках по направлению тренда… а он определяется уже по вашему желанию… в моём случае — самой быстрой из изображенных линий по восходящим минимумам и нисходящим максимумам...(короче говоря местам она меняет свой цвет) Ведь проще уже некуда, разве нет?
                Система трендовая и если по позиции лось то это значит что пришел такой боковик, который она не в состоянии отработать Нужно просто подождать...

                • Alpinist573
                  18 февраля 2015, 09:05
                  Growex, если я правильно все детали понял, это как раз пример системы, которую на Луа реализовать видимо не получится. Хотя, из тиков свечи Луем собирать можно, + время между сработками цикла уменьшить до упора, в итоге реальное время реакции усушится до 2 секунд где-то, может слипом на Ри все и не убьет.
                  Вы это роботом торгуете или руками?
                  • Growex
                    18 февраля 2015, 09:54
                    Alpinist573, насчет lua не могу ничего сказать так как не знаю на что он способен… хотя это обычные средние линии, поэтому интуитивно полагаю что не будет проблем.
                    Робот на амиброкере стоит, и скрин оттуда. Но в основном работаю руками, бота включаю только когда ухожу куда то.
                    • Alpinist573
                      18 февраля 2015, 10:12
                      Growex, А АмиБрокер связан с квиком чем-нибудь типа АмиШарпа?
                      • Growex
                        18 февраля 2015, 10:29
                        Alpinist573, да, именно так.
  • silentbob
    17 февраля 2015, 17:07
    слив обеспечен
  • Ivor
    17 февраля 2015, 18:55
    странно, что вы начав разработку робота не знаете об отличиях qpile и qlua.
    Вот почитайте: rusalgo.com/article/qpile-i-qlua
    И переходите на qlua. Это оч. легкий язык, и справки по нему море.
  • Goreloff
    17 февраля 2015, 19:01
    Приму робота в дар или обменяю на FLY IQ 441 немного б/у
    • SergeyEgorov
      17 февраля 2015, 21:18
      Goreloff, На смарт-лабе по-моему этих роботов бесплатных чуть ли не десяток раздают…
  • Макс
    17 февраля 2015, 20:02
    а какая оказалась сигма при профите 0.37%?
  • MGN
    17 февраля 2015, 22:17
    Быстрее и проще, чем Forex!
    Бинарные опционы с доходом до 92% всего за 60 секунд Подробнее: optionov.blogspot.com
  • Savin
    18 февраля 2015, 01:44
    Оооо какие фотки битвы роботов с тетками, скайнет от васи пупкина, рекламы то сколько + вкропление из истории жизни о том как создавалось… ммм, а призывы какие лозунги вау, ну ну.., еще пару таких статей и можно продавать робота лохам)), блеск и глянец красиво конечно, а в итоге сотни маленьких сделок в результате приходящее стадо лосей разрывает депозит трейдера, ну либо как у Греции просадка ростет ростет а потом туктук, кто там?.. откройте или двери выбью это маргин кол))
    • юрий савин, автор на заказ будет писать)) мне в первую очередь
  • pXhXXst
    18 февраля 2015, 02:55
    братиш, за 2 бутылки продашь?

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

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