Andrei Shevelev
Andrei Shevelev личный блог
26 февраля 2023, 12:39

Где лось? Или почему алготрейдеры все таки сливают. Часть 2.

Где лось? Или почему алготрейдеры все таки сливают. Часть 2.


Начало здесь
Где лось? Или почему алготрейдеры все таки сливают. Часть 1.
Продолжение ...

В первой части робот на реале показал результат значительно хуже, чем на тесте. Но все таки заработал. Надо сказать, что чаще все таки бывает, что при крайне позитивном тесте на свечных данных, на реале робот сливает. У слившего депозит трейдера после этого есть несколько путей:

1. Все это лохотрон. Пойду на завод.

2. Я понял, что это лохотрон, но другие об этом еще не знают. Буду впаривать им роботов и обучающие курсы, и жить с этого.

3. Этот робот слил, поставлю другой, у меня еще есть, что сливать.

4. Куплю очень дорогой обучающий курс по программированию роботов, потому, что у меня очень большие запасы времени и денег, чтобы учиться, программировать, и (со значительной, но уже не 100% долей вероятности)… сливать.

5. Разобраться, где брать точные тиковые данные на торгуемые инструменты. Добиться максимально возможного соответствия тестов реальности, учитывать возможные проскальзывания и все издержки в тестах. Только в таком случае тестирование роботов / торговых стратегий будет иметь смысл.

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

Разобрались, как скачать нужные котировки именно того брокера у которого мы торгуем. Правильно выставили все комиссии и свопы. Пара EURUSD, лот фиксированные 0.1, потому что при таком лоте на всех парах, где вторым идет символ USD 1 пункт (по четвертом знаку после запятой) равен одному доллару. Так удобней сравнивать тесты между собой и с реалом.

Делаем тест с 1.08.2022 по 30.01.2023.

  Где лось? Или почему алготрейдеры все таки сливают. Часть 2. 

И сравниваем результат теста с мониторингом реального счета за тот же период.

  Где лось? Или почему алготрейдеры все таки сливают. Часть 2. 

В первую очередь делаем общее сравнение по двум показателям: количество сделок и чистая прибыль в пипсах. На скринах они подчеркнуты красным.

Первое, что бросается в глаза это разница в количестве сделок. 59 в тесте против 54 на реале. Пусть разница не такая большая, как разница между тестом по свечным данным и реалом в первой части, она все таки есть и надо выяснить почему есть различия.

Теперь уже глазками высматриваем какие из сделок тестера отсутствуют на реале. Или наоборот. Удивительно, но есть и наоборот. В перспективе, я так полагаю, не очень сложно автоматизировать этот процесс.

9 сделок было на тесте, но не было на реале. 4 сделки было на реале, но не случилось на тесте.

Сначала разберемся с лишними сделками на тесте:

  Где лось? Или почему алготрейдеры все таки сливают. Часть 2. Сделка 31 августа.

На реале соответственно ее нет. Но можно посмотреть логи терминала, что же происходило в это время.

  Где лось? Или почему алготрейдеры все таки сливают. Часть 2. 

1. В 00:00:10.272 Робот отправил на сервер брокера лимитный ордер ровно по той цене, которая у нас была и по тесту. 1.00145

2. В 00:00:10. 491 приходит отчет от брокера об открытии лимитного ордера даже на 1 пипс (5 знак после запятой) выше. На 1.00146

3. В 01:00:01.147 мой несработавший лимитный ордер удаляется роботом согласно его логике.

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

По тестеру сделка была прибыльной. Ага! Брокер тырит мою прибыль! А убыток оставляет мне. И вообще форекс — лохотрон. Идем гневно писать об этом по всем форумам. То есть, если серьезно, мы нашли ситуацию, которая уменьшает нашу прибыль и которая, раз уж она случилась, вполне может и повторяться. Разве не интересно с этим разобраться? Если мы с таким не сталкивались, то выявив такую ситуацию, вполне естественно обратиться к брокеру за разъяснениями:

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

2. Лимитный ордер на форекс имеет свои дополнительные особенности. При его установке он есть только на сервере у брокера. Когда цена доходит до его уровня, он отправляется на сервер поставщика ликвидности, который первым дал активировавшую его цену. За те миллисекунды, пока ордер будет идти до него, цена может сходить даже ниже, а потом уйти выше уже к моменту его прихода, и поставщик его не исполнит.

3. Время исполнения в тестере 00:00. Когда-то давно ночные скальперы именно в это время активней всего превращали брокеров в тыквы. Теперь брокеры и поставщики ликвидности создали целую мифологию о перезапусках серверов, низкой ликвидности в это время и т. д. и т. п., очень сильно расширяют спреды и частенько превращают ордера клиентов в тыквы.

То есть ордер был отправлен брокером поставщику, но тот его не исполнил, отправил обратно реджект.

Мы выявили первую причину потери сделок на реале.

Причина 1: цена дошла до уровня нашего лимитного ордера, но либо до него не дошла очередь на исполнение у поставщика, либо пока ордер шел до него, цена успела уйти обратно. Таких сделок в рассматриваемый период выявлено 3.

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

Например я выключаю этого робота во время перехода с летнего времени на зимнее и обратно. Америка и Европа осуществляют переход не одновременно, с интервалом в 1 — 2 недели. В этом роботе я не отладил нормальный учет этого момента, поэтому на всякий случай его отключаю в этот интервал.

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

Если этого не помнить по прошествии времени это можно проверить по логам терминала и это будет выглядеть так:

  Где лось? Или почему алготрейдеры все таки сливают. Часть 2. 

И так:

  Где лось? Или почему алготрейдеры все таки сливают. Часть 2. 

Или так:

  Где лось? Или почему алготрейдеры все таки сливают. Часть 2. 

И просто считаем и анализируем сделки робота в тестере в выпавший с реала период. Таких сделок оказалось 6.

Итак, причина 2: в широком смысле — ручное вмешательство или сбои инфраструктуры.

Итого мы нашли 9 потерянных сделок, которые присутствуют в тесте, то есть должны были случится по логике робота, но не случились на реале. А также выявили причины их отсутствия. Интересно?

Еще интересней, то что в тестере у нас в этот период 59 сделок. Минус 9 потерянных, получается 50. Но в реальной торговле у нас случилось 54 сделки. При том, что руками я не торгую категорически. А в анализ сделки других роботов попасть не могли. Целых 4 лишних сделки.

  Где лось? Или почему алготрейдеры все таки сливают. Часть 2. Сделка в реале.  Где лось? Или почему алготрейдеры все таки сливают. Часть 2. Дырка в тестере

И опять надо лезть в логи терминала:

  Где лось? Или почему алготрейдеры все таки сливают. Часть 2. 
В логах все на месте. В истории на реальном счете сделка есть и результат ее отобразился на счете. Если бы советник, как должен, выставлял бы лимитный ордер, а он потом в тестере не исполнился, то в истории в тестере была бы запись об открытии отложенного ордера, а потом… deleted… Но этого нет.

Невзначай вспоминаем, что в тестере не только ведется история сделок робота, но робот записывает свои логи. Обнаруживаем там следующее:

  Где лось? Или почему алготрейдеры все таки сливают. Часть 2. 

Сравниваем по времени со сделкой на реальном счете. Совпадение вплоть до секунды, то есть это оно. ordersend error 130. Ошибка в коде, которая иногда почему то показывает себя в тестере, но никак не проявляла себя при реальной торговле. Таких сделок у нас за полгода в тестере одна из 59. Так, не в значай, мы глядя в код мы обнаружили там ошибку, сравнивая тест с реалом.

И еще у нас остаются 3 сделки, которые присутствуют на реале, но отсутствуют в тестере. Снова лезем в лог терминала с реальным счетом, видим такую картину:

  Где лось? Или почему алготрейдеры все таки сливают. Часть 2. 

Робот устанавливает отложенный ордер на покупку по цене 1.07913, но брокер устанавливает его на 1 пипс (5 знак после запятой) хуже, 1.07914.

На платформе мт4 отсутствует возможно отправлять лимитные ордера хуже рынка. Но брокер может отправлять такие ордера через свое апи поставщику. Это реализовано через соответствующие настройки в личном кабинете брокера. Не баг, но инфраструктурная фича. Я это и сделал, теперь брокер плюсует 1 пипс (5 знак после запятой) к моим лимитным ордерам отправляемы на сервер поставщика. Сделано это для увеличения вероятности срабатывания лимитного ордера. Действие это фичи видно в логах реального счета только в сравнении с тестом. Цена дошла ровно до значения цены лимитного ордера в реале и ушла обратно в плюсовую зону. Если бы все было, как в тестере, ордер бы не открылся.

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

Как я писал ранее мне гораздо удобнее сравнивать прибыль/убыток в пунктах (4 знак после запятой). По тесту прибыль в пунктах 47.2. Все отсутствующие на реале, но присутствующие на тесте сделки прибыльные. Значит наша прибыль на реале должна быть меньше. Логично же?

Но на реальном счете прибыль составила:

  Где лось? Или почему алготрейдеры все таки сливают. Часть 2. 

62.9 пунктов (4 знак после запятой) ??? То есть на, без малого, 16 пунктов больше. Интересно же разобраться почему?

  Где лось? Или почему алготрейдеры все таки сливают. Часть 2. 

В правой колонке комментарии. В квадратных скобках первым идет проскальзывание при открытии ордера, вторым при закрытии ордера. Плюс означает, что на данную величину ордер был исполнен лучше (для трейдера)), чем было указано в лимитном ордере. И это опять же чудесное свойство лимитных ордеров (не у всех брокеров) на форекс. Также как на централизованных биржах он не может исполниться хуже цены указанной в нем, но на форекс, в отличии от бирж, в случае ecn/stp/ndd вывода ордера на поставщиков, он может быть исполнен лучше.

И таких положительных проскальзываний у нас набралось за полгода на почти 16 пунктов (по 4 знаку).

Итак… нахрена, то есть выводы зачем все это было нужно в данном конкретном случае?

1. Разобрались почему исчезает часть сделок на реале по сравнению с тестером. Если робот пробует исполнять сделки в ролловер около 24-00 по Москве, то они могут быть не исполнены совсем. Можно улучшить ситуацию поставив время начала торговли, скажем с 24-02. Конкретно в тестах статьи этих бы сделок не было. Это улучшило бы соответствие тестов реалу. Возможно у роботов для бирж могут быть подобные инфраструктурные нюансы. Скажем, время сразу после открытия или перед закрытием торгов.

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

3. Выяснили, как влияет наше ручное вмешательство в работу робота в период проверки. В случае теста из статьи на время отключений робота приходились, только прибыльные сделки. Если есть возможность, лучше не отключать. Получена дополнительная мотивация, чтобы допиливать переход по времени ...

4. Нашли баг в коде, не влазя в код.

Мы выявили все причины расхождений тестера с реалом у конкретного робота, в конкретный период времени и их влияние на результаты торговли. Игнорировать эти моменты это, как полететь на Луну, дать начальный импульс и до самой смерти в межпланетном пространстве ни разу не проверить правильным ли курсом полетели.

Главный вывод, это то что у нас и в тестере, и на реале, торгует один и тот же робот, а не две «разные сущности».

46 Комментариев
  • Мальчик buybuy
    26 февраля 2023, 12:45
    Чушь полнейшая и неприкрытая

    Я — алготрейдер. И я не сливаю. Что я делаю не так?

    Теперь подробнее
    1. Сделки по отношению к теор. исполнению исчезают только при недостатке ликвидности. С этим можно и нужно бороться. Но это не про алго, а про его исполнение.
    2. Нет никаких особенностей (кроме механизма отмены или перестановки ордеров). Если брокер косячит — следует найти другого брокера. А лучше — оптовика (ECN или Broker Tier 1)
    3. А вмешиваться то зачем?
    4. Вообще не понял. Лично у меня, кроме боевого бота, крутится тестовый бот (с меньшим объемом на том же алго) и раз в сутки отдельная прога проверяет идеальное исполнение на истории и сравнивает его с результатами обоих ботов. Расхождение 3-4 пипса за сутки — это уже Red Alert !!!

    С уважением
      • Мальчик buybuy
        26 февраля 2023, 13:09
        Andrei Shevelev, ну Ок

        Начнем с Вас — в конце концов это Ваш топик

        Мониторинги и логи в студию, плз
        Но сперва — эквити в формате выписки по счету
        С депо хотя бы $100k (здесь вроде не детский сад)

        С уважнением

        P.S. Мои извинения — не хотел Вас обидеть. Просто характер не позволяет не реагировать на чушь. Сорри
          • Мальчик buybuy
            26 февраля 2023, 13:43
            Andrei Shevelev, спокойствие, мой друг, только спокойствие

            1. Все эти счета Ваши? Или под Вашим управлением?
            2. Пока меня заинтересовал самый крупный счет с депо 417к

            ВОПРОС:

            Как прибыль -$220 коррелирует с убытком -99.64%

            С уважением
              • Мальчик buybuy
                26 февраля 2023, 13:59
                Andrei Shevelev, не не не

                Так не пойдет

                Пруфов в виде выписок не прошу
                Но понимать финрез обязательно

                Есть ли возможность переформатировать Вашу выписку так, чтобы результат от депо коррелировал с прибылью?

                С уважением
                  • Мальчик buybuy
                    26 февраля 2023, 17:35
                    Andrei Shevelev, готов, но пока не хочу

                    В моменте мяч на Вашей стороне
                    Просто приведите список счетов с начальным депо и финрезом. Но не в формате Excel, а скриншотом с Вашего любимого сайта
                    В момете получается, что самые крупные счета были слиты практичекси в ноль. Если это так — это плохо, конечно.
                    Но я пока в это не верю — просто прошу представить данные

                    С уважением
      • Zvr
        27 февраля 2023, 00:25
        Andrei Shevelev, Попробуй сильно сливающего робота перепрограммировать реверсно т.е система антиробот по примеру антивася
  • VladMih
    26 февраля 2023, 13:00
    На тиковых данных тестировать, например, хотя бы часовой таймфрейм — это ж где такой тестер взять, чтобы длинную историю прогнать (понятно же короткая — это гарантированный слив)?
    Всё делается гораздо проще — делается стресстест с явно завышенными параметрами издержек — большой спред и большие проскальзывания. Выдерживает хотя бы на неслив — значит реал ему не страшен.
    Всё.

    Перефразирую вышесказанное, чтобы всем было понятно:
    тиковые данные при тесте на короткой истории НЕ СПАСУТ.
    А длинную на тиках невозможно оптимизировать, нужен суперкомп.
      • VladMih
        26 февраля 2023, 14:18
        Andrei Shevelev, написанное мною прочли не вдумываясь.
        Таймфрейм в контексте моих слов ВАЖЕН, т.к. длинная история м1 — это может быть (условно) год, тогда история такой же значимости для н1 будет в 60 раз больше — т.е. 60 лет.
        Тиками??? Любой тестер обсер**ся, сорь за выражение.

        А по сути метода стресстестирования наверно вообще не прочли?
          • VladMih
            26 февраля 2023, 19:01
            Andrei Shevelev, опять долдоните про «тайм неважен» — да хрен с ним, с таймом — я не про количество баров, а про количество ваших тиков! Которых на каждом баре хрен знает сколько может быть!
            Количество сделок имеет значение — это вы про 50 штук? )))))

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

            Про неучитывать цену предыдущей сделки — ващще перл какой-то незнамо о чём… Кто об ЭТОМ говорит? В этом м.быть необходимость только когда следующая сделка поставлена в зависимость от предыдущего ордера, такие фокусы мало кто использует.


          • VladMih
            26 февраля 2023, 19:06
            Andrei Shevelev, конечно не отразит «полную»!
            По-русски ведь написал — это СТРЕССтест! У него задача другая — определить стрессоустойчивость робота!
            А ваше стремление к идеальности совпадений рано или поздно приведет к неприятностям — как только у брокера чуток изменятся условия или произойдет что-то другое, чего вы в своём идеале на догадались или не сумели предусмотреть.

            Короче, я понял, что вы меня не слышите, а я вас не понимаю.
            Вместо дискуссии у вас чисто «о своём, о девичьем».
            «Не отразит полностью работу робота»… Как только догадался? 
            Кто к этому стремится, кроме вас?
          • zhorzh
            01 марта 2023, 19:41
            Andrei Shevelev, я по 3 сек добавлял, 100 мс для фортс это вообще даже меньше пинга до сервера брокера.
              • zhorzh
                01 марта 2023, 23:44
                Andrei Shevelev, Я под пингом имею в виду отправку ордера и получение ответа, на альфадиректе это было около секунды, а при сильных движениях десятки секунд, опытным путем выявил что надо 3 секунды закладывать

                типичные задержки 19.02.2010


        • zhorzh
          01 марта 2023, 19:37
          VladMih, Я ri на тиках тестировал, тестер свой, не обосрался. Что я делаю не так?
          • VladMih
            02 марта 2023, 00:04
            zhorzh, как дети, мля… Я тоже тестировал на тиках!
            О чем вы написали???
            1. Глубина вашего тестирования какая?
            2. На оптимизации тиков глубокой истории ваш тестер тоже не об.ся?
            Завидую — вашему тестеру не нужно трусы стирать.
  • Rostislav Kudryashov
    26 февраля 2023, 13:10
    «Никто не может объять необъятного», «Скажи лучше мало, но хорошо» © Козьма Прутков

    В добывании тиков для MOEX никакого «чуда», а бесплатная доступность
    www.qscalp.ru/download
    erinrv.qscalp.ru/
    www.qscalp.ru/store/qsh.pdf

    Но я так и не понял, зачем тики, которых в секунду проходят сотни и тысячи, если терминал брокера показывает мне биржу с опозданием на 0.1 сек и моя заявка приходит на биржу с таким же опозданием.
    Можно сгруппировать тики в секундные бары.
    Но и это излишество, т.к. за секунду цена не сделает движения, большего, чем размер комиссии.
  • Biopsyhose trader
    26 февраля 2023, 13:27
    По дебагу вопросов нет. Это такой ад, что я кланяюсь всем кто занимается алго и понимает какой это труд — постоянно искать и править ошибки, исправление которых вызывает другие ошибки которые ты ищешь с микроскопом на всех графиках и во всех логах))ч

    Вопрос вот какой есть: а нахрена эти мутные форекс-конторы мучать, если есть богический брокер NinjaTrader и M6E на котором можно $500 торговать спокойно ваще, на CME Карл!))



      • Biopsyhose trader
        26 февраля 2023, 19:01
        Andrei Shevelev, принял. Согласен!
  • Алан Хакунов
    26 февраля 2023, 13:56
    Алготоейдеры которые работают на себя. Напишите пожалуйста, начали ли вы тратить на «работу» больше времени нежели при ручной торговле?
    • Мальчик buybuy
      26 февраля 2023, 14:00
      Алан Хакунов, да

      С переходом на алго я, б@ядь, так или иначе надзираю за торговлей 16 часов в сутки. Проблема в софте. Пишу свой, кастомный и надежный терминал. Надеюсь закончить в конце 2023.

      С уважением
      • Алан Хакунов
        26 февраля 2023, 14:11
        Мальчик buybuy, я вот к тому и клоню, я конечно не имею знакомых лично алготоейдеров, но очень часто слышу на форумах и от трейдеров что они кучу времени убивают на алго. Вон Майтрейд в последнем ролике говорил что сам код строчит и убивает на это все кучу времени и уже сколько лет прошло.
        Блин, не проще ли руками)?
        Ну просто если трейдер достиг уровня что может алгоритмизировать торговлю, если эмоции уже не играют роли, если следует плану и проблем с этим особо нет. Не проще ли продолжать руками?
        • Мальчик buybuy
          26 февраля 2023, 14:21
          Алан Хакунов, нет

          Не будет должной валидности
          Алго можно потестить в широком диапазоне (я лично не рассматриваю тесты короче, чем 1.5 млн. минутных баров)
          На длинных тестах можно попытаться угадать закономерности
          Торговля руками проще, конечно
          Но, когда она начнет факапить, абсолютно неясно, что делать дальше?

          С уважением
    • Антон Иванов
      26 февраля 2023, 18:29
      Алан Хакунов, пользуюсь много лет ТСЛабом, трачу 5 минут в день примерно на контроль работы. Это все. Тестирование и оптимизация скриптов по-настроению, обычно пару раз в год.
    • Gypsy
      26 февраля 2023, 20:47
      Алан Хакунов, с переходом на алго очень много свободного времени появилось. За годы работы и корректировок в роботе он стал практически полным автоматом.
  • ICEDONE
    26 февраля 2023, 20:41
    Где взять данные на фьюч юаня. Почему то на финаме только квартальные есть
  • Gypsy
    26 февраля 2023, 20:45
    Лень читать эту простыню) Могу только сказать, что не все алго сливают, например я.

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

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