Блог им. gemmaster
В первой части робот на реале показал результат значительно хуже, чем на тесте. Но все таки заработал. Надо сказать, что чаще все таки бывает, что при крайне позитивном тесте на свечных данных, на реале робот сливает. У слившего депозит трейдера после этого есть несколько путей:
1. Все это лохотрон. Пойду на завод.
2. Я понял, что это лохотрон, но другие об этом еще не знают. Буду впаривать им роботов и обучающие курсы, и жить с этого.
3. Этот робот слил, поставлю другой, у меня еще есть, что сливать.
4. Куплю очень дорогой обучающий курс по программированию роботов, потому, что у меня очень большие запасы времени и денег, чтобы учиться, программировать, и (со значительной, но уже не 100% долей вероятности)… сливать.
5. Разобраться, где брать точные тиковые данные на торгуемые инструменты. Добиться максимально возможного соответствия тестов реальности, учитывать возможные проскальзывания и все издержки в тестах. Только в таком случае тестирование роботов / торговых стратегий будет иметь смысл.
Шансы маленькие, но все таки мы пошли по последнему пути. Чудом наткнулись на специально программное обеспечение для соответствующих тестов. Чудом, не потому, что оно потом разбухло, а потому, что на сайтах брокеров, инстраграммах чудо трейдеров, и даже сайтах очень продвинутых алготрейдеров об этом не пишут.
Разобрались, как скачать нужные котировки именно того брокера у которого мы торгуем. Правильно выставили все комиссии и свопы. Пара EURUSD, лот фиксированные 0.1, потому что при таком лоте на всех парах, где вторым идет символ USD 1 пункт (по четвертом знаку после запятой) равен одному доллару. Так удобней сравнивать тесты между собой и с реалом.
Делаем тест с 1.08.2022 по 30.01.2023.
И сравниваем результат теста с мониторингом реального счета за тот же период.
В первую очередь делаем общее сравнение по двум показателям: количество сделок и чистая прибыль в пипсах. На скринах они подчеркнуты красным.
Первое, что бросается в глаза это разница в количестве сделок. 59 в тесте против 54 на реале. Пусть разница не такая большая, как разница между тестом по свечным данным и реалом в первой части, она все таки есть и надо выяснить почему есть различия.
Теперь уже глазками высматриваем какие из сделок тестера отсутствуют на реале. Или наоборот. Удивительно, но есть и наоборот. В перспективе, я так полагаю, не очень сложно автоматизировать этот процесс.
9 сделок было на тесте, но не было на реале. 4 сделки было на реале, но не случилось на тесте.
Сначала разберемся с лишними сделками на тесте:
Сделка 31 августа.На реале соответственно ее нет. Но можно посмотреть логи терминала, что же происходило в это время.
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 недели. В этом роботе я не отладил нормальный учет этого момента, поэтому на всякий случай его отключаю в этот интервал.
Кроме того я придерживаюсь старого суеверия, что в рождественско-новогодние праздники роботов скальперов, особенно ночников лучше выключать.
Если этого не помнить по прошествии времени это можно проверить по логам терминала и это будет выглядеть так:
И так:
Или так:
И просто считаем и анализируем сделки робота в тестере в выпавший с реала период. Таких сделок оказалось 6.
Итак, причина 2: в широком смысле — ручное вмешательство или сбои инфраструктуры.
Итого мы нашли 9 потерянных сделок, которые присутствуют в тесте, то есть должны были случится по логике робота, но не случились на реале. А также выявили причины их отсутствия. Интересно?
Еще интересней, то что в тестере у нас в этот период 59 сделок. Минус 9 потерянных, получается 50. Но в реальной торговле у нас случилось 54 сделки. При том, что руками я не торгую категорически. А в анализ сделки других роботов попасть не могли. Целых 4 лишних сделки.
Сделка в реале. Дырка в тестереИ опять надо лезть в логи терминала:
Невзначай вспоминаем, что в тестере не только ведется история сделок робота, но робот записывает свои логи. Обнаруживаем там следующее:
Сравниваем по времени со сделкой на реальном счете. Совпадение вплоть до секунды, то есть это оно. ordersend error 130. Ошибка в коде, которая иногда почему то показывает себя в тестере, но никак не проявляла себя при реальной торговле. Таких сделок у нас за полгода в тестере одна из 59. Так, не в значай, мы глядя в код мы обнаружили там ошибку, сравнивая тест с реалом.
И еще у нас остаются 3 сделки, которые присутствуют на реале, но отсутствуют в тестере. Снова лезем в лог терминала с реальным счетом, видим такую картину:
Робот устанавливает отложенный ордер на покупку по цене 1.07913, но брокер устанавливает его на 1 пипс (5 знак после запятой) хуже, 1.07914.
На платформе мт4 отсутствует возможно отправлять лимитные ордера хуже рынка. Но брокер может отправлять такие ордера через свое апи поставщику. Это реализовано через соответствующие настройки в личном кабинете брокера. Не баг, но инфраструктурная фича. Я это и сделал, теперь брокер плюсует 1 пипс (5 знак после запятой) к моим лимитным ордерам отправляемы на сервер поставщика. Сделано это для увеличения вероятности срабатывания лимитного ордера. Действие это фичи видно в логах реального счета только в сравнении с тестом. Цена дошла ровно до значения цены лимитного ордера в реале и ушла обратно в плюсовую зону. Если бы все было, как в тестере, ордер бы не открылся.
Ну вот с количеством сделок, с присутствием или отсутствием каких то конкретных из них разобрались. С количеством сошлось. Теперь проанализируем общий результат и если, что-то не сходится будем разбираться с торговыми результатами конкретных сделок.
Как я писал ранее мне гораздо удобнее сравнивать прибыль/убыток в пунктах (4 знак после запятой). По тесту прибыль в пунктах 47.2. Все отсутствующие на реале, но присутствующие на тесте сделки прибыльные. Значит наша прибыль на реале должна быть меньше. Логично же?
Но на реальном счете прибыль составила:
62.9 пунктов (4 знак после запятой) ??? То есть на, без малого, 16 пунктов больше. Интересно же разобраться почему?
В правой колонке комментарии. В квадратных скобках первым идет проскальзывание при открытии ордера, вторым при закрытии ордера. Плюс означает, что на данную величину ордер был исполнен лучше (для трейдера)), чем было указано в лимитном ордере. И это опять же чудесное свойство лимитных ордеров (не у всех брокеров) на форекс. Также как на централизованных биржах он не может исполниться хуже цены указанной в нем, но на форекс, в отличии от бирж, в случае ecn/stp/ndd вывода ордера на поставщиков, он может быть исполнен лучше.
И таких положительных проскальзываний у нас набралось за полгода на почти 16 пунктов (по 4 знаку).
Итак… нахрена, то есть выводы зачем все это было нужно в данном конкретном случае?
1. Разобрались почему исчезает часть сделок на реале по сравнению с тестером. Если робот пробует исполнять сделки в ролловер около 24-00 по Москве, то они могут быть не исполнены совсем. Можно улучшить ситуацию поставив время начала торговли, скажем с 24-02. Конкретно в тестах статьи этих бы сделок не было. Это улучшило бы соответствие тестов реалу. Возможно у роботов для бирж могут быть подобные инфраструктурные нюансы. Скажем, время сразу после открытия или перед закрытием торгов.
2. Разобрались с особенностями исполнения лимитных ордеров у конкретного брокера. Убедились, что выбор открывать и закрывать ордера только лимитными ордерами является правильным и даже увеличивает нашу прибыль на реале по сравнению с тестером. Мне кажется, что эту фичу можно было бы реализовать и в биржевых роботах.
3. Выяснили, как влияет наше ручное вмешательство в работу робота в период проверки. В случае теста из статьи на время отключений робота приходились, только прибыльные сделки. Если есть возможность, лучше не отключать. Получена дополнительная мотивация, чтобы допиливать переход по времени ...
4. Нашли баг в коде, не влазя в код.
Мы выявили все причины расхождений тестера с реалом у конкретного робота, в конкретный период времени и их влияние на результаты торговли. Игнорировать эти моменты это, как полететь на Луну, дать начальный импульс и до самой смерти в межпланетном пространстве ни разу не проверить правильным ли курсом полетели.
Главный вывод, это то что у нас и в тестере, и на реале, торгует один и тот же робот, а не две «разные сущности».
Я — алготрейдер. И я не сливаю. Что я делаю не так?
Теперь подробнее
1. Сделки по отношению к теор. исполнению исчезают только при недостатке ликвидности. С этим можно и нужно бороться. Но это не про алго, а про его исполнение.
2. Нет никаких особенностей (кроме механизма отмены или перестановки ордеров). Если брокер косячит — следует найти другого брокера. А лучше — оптовика (ECN или Broker Tier 1)
3. А вмешиваться то зачем?
4. Вообще не понял. Лично у меня, кроме боевого бота, крутится тестовый бот (с меньшим объемом на том же алго) и раз в сутки отдельная прога проверяет идеальное исполнение на истории и сравнивает его с результатами обоих ботов. Расхождение 3-4 пипса за сутки — это уже Red Alert !!!
С уважением
«Чушь полнейшая и неприкрытая»
«Мои слова подтверждаются мониторингами и логами. Ваши чем?
Я — алготрейдер. И я не сливаю. Что я делаю не так?
Мониторинги реальных счетов есть? Покажете? До тех пор пока у Вас их не будет, чушь у Вас и в тексте, и между ушами.»
«1. Сделки по отношению к теор. испо...» покажите реальные примеры с мониторингов с логами из терминала. Нет? )
«2. Нет никаких особенностей ...» Вы просто не в курсе, потому что не проверяли. Проверяли? Покажите мониторинги и логи. Нет?)
И т. д. После слов у чуши, возникает вопрос, а сами то реально торгуете, доводы свои достоверно подтвердить можете? Если нет, то ваш текст это просто буквы, ну или чушь, говоря вашими словами.
С уважением.
Начнем с Вас — в конце концов это Ваш топик
Мониторинги и логи в студию, плз
Но сперва — эквити в формате выписки по счету
С депо хотя бы $100k (здесь вроде не детский сад)
С уважнением
P.S. Мои извинения — не хотел Вас обидеть. Просто характер не позволяет не реагировать на чушь. Сорри
Я как раз за то, что свои слова нужно достоверно подтверждать.
Все публичные мониторинги, на myfxbook:
www.myfxbook.com/members/gemmaster
Скрин с аккаунта на myfxbook со всеми замониторенными счетами, включая непубличные.
Суммы депозитов видно? ) Демо счетов у меня нет)
Отчет по счету без мониторинга на myfxbook
Маловато будет? У Вас больше? Покажете? )
1. Все эти счета Ваши? Или под Вашим управлением?
2. Пока меня заинтересовал самый крупный счет с депо 417к
ВОПРОС:
Как прибыль -$220 коррелирует с убытком -99.64%
С уважением
«1. Все эти счета Ваши? Или под Вашим управлением?»
Все счета только мои, но деньги есть и инвесторов.
«2. Пока меня заинтересовал самый крупный счет с депо 417к»
И?
«Как прибыль -$220 коррелирует с убытком -99.64%»
Видимо деньги были выведены в основном, а на остатках проводились эксперименты и эти остатки были слиты.
Так не пойдет
Пруфов в виде выписок не прошу
Но понимать финрез обязательно
Есть ли возможность переформатировать Вашу выписку так, чтобы результат от депо коррелировал с прибылью?
С уважением
В моменте мяч на Вашей стороне
Просто приведите список счетов с начальным депо и финрезом. Но не в формате Excel, а скриншотом с Вашего любимого сайта
В момете получается, что самые крупные счета были слиты практичекси в ноль. Если это так — это плохо, конечно.
Но я пока в это не верю — просто прошу представить данные
С уважением
Я максимально полно и достоверно насколько это возможно технически показал свою торговлю.
И теперь мяч на вашей стороне. Вы в принципе, что-то подобное можете сделать? Или сами не торгуете, либо настолько все плохо, что показывать стыдно? Но ходите по форумам в поисках, где бы пристроить свое ЧСВ? )
Всё делается гораздо проще — делается стресстест с явно завышенными параметрами издержек — большой спред и большие проскальзывания. Выдерживает хотя бы на неслив — значит реал ему не страшен.
Всё.
Перефразирую вышесказанное, чтобы всем было понятно:
тиковые данные при тесте на короткой истории НЕ СПАСУТ.
А длинную на тиках невозможно оптимизировать, нужен суперкомп.
Все нормально тестируется и оптимизируется на всех доступных тиках. А доступны они, из некоторых источников аж с 2003 года (Dukascopy)
Таймфрейм в контексте моих слов ВАЖЕН, т.к. длинная история м1 — это может быть (условно) год, тогда история такой же значимости для н1 будет в 60 раз больше — т.е. 60 лет.
Тиками??? Любой тестер обсер**ся, сорь за выражение.
А по сути метода стресстестирования наверно вообще не прочли?
«Тиками??? Любой тестер обсер**ся, сорь за выражение.»
Не любой. Я думаю, что тики по инструментам с мосбиржи возможно организовать так, чтобы с тестером не случилась подобная неприятность. Если очередной тик не содержит никаких изменений ( в ценах бида и аска) их учитывать необязательно. Цену последней сделки можно в принципе не учитывать, это уже прошлое. Имеют значение цены по которым можно купить или продать сейчас, сию миллисекунду (с поправкой на пинг и время исполнения).
Количество сделок имеет значение — это вы про 50 штук? )))))
Слушайте, программист, а какая экономия от того, что вы вместо тупого учета фактических значений цен будете выяснять надо ли их учитывать.?
Что в лоб обработка каждого тика, что полбу обрабатывать...
Про неучитывать цену предыдущей сделки — ващще перл какой-то незнамо о чём… Кто об ЭТОМ говорит? В этом м.быть необходимость только когда следующая сделка поставлена в зависимость от предыдущего ордера, такие фокусы мало кто использует.
«а про количество ваших тиков! Которых на каждом баре хрен знает сколько может быть!»
В посте есть скрин с отчета по тесту на нем есть запись 20184575 тиков. Это за полгода. «хрен знает» это в принципе не про алготрейдинг. Как и «долдоните».
«Количество сделок имеет значение — это вы про 50 штук? )))))»
Надо было здесь в посте пару тысяч сделок разобрать, так для разогрева )?
«Про неучитывать цену предыдущей сделки — ващще перл какой-то незнамо о чём»
Я действительно могу быть не в курсе, о том, что из себя представляет тиковая информация на рынках, которыми я давно плотно не занимаюсь. В посте достаточно четко видно о каком рынке идет речь. Цена последней сделки не входит в тиковую информацию на мосбирже, например?
Это не отразит полностью работу робота. Например в периоды с высоким спредом, спред может на пару тиков сужаться и давать войти с нормальными условиями. В роботе это регулируется фильтром спреда. Проскальзывания эмулируются в тестере. Ко времени исполнения ордера по условиям робота добавляется 100мс и тестерный ордер исполняется по ценам следующего тика. В случае разбора соответствия тестера и реальной торговли в посте, это работает.
По-русски ведь написал — это СТРЕССтест! У него задача другая — определить стрессоустойчивость робота!
А ваше стремление к идеальности совпадений рано или поздно приведет к неприятностям — как только у брокера чуток изменятся условия или произойдет что-то другое, чего вы в своём идеале на догадались или не сумели предусмотреть.
Короче, я понял, что вы меня не слышите, а я вас не понимаю.
Вместо дискуссии у вас чисто «о своём, о девичьем».
«Не отразит полностью работу робота»… Как только догадался?
Кто к этому стремится, кроме вас?
«По-русски ведь написал — это СТРЕССтест! У него задача другая — определить стрессоустойчивость робота!»
Вы пост читали? П русски же написано. Темой поста является достоверность теста. Его соответствие реальной торговле. А не
«СТРЕССтест!» Тем более, что такие тесты тем более нужно проводить на реальных тиковых данных. А с роботом у которого есть фильтры по спредам. Расширение спредов далеко не самое плохое, что может произойти.
«Вместо дискуссии у вас чисто «о своём, о девичьем».»
Думаю, чтобы поговорить об этом для Вас есть более подходящие места. И компанию там себе соответствующую найдете. Это не не относится ни к посту, ни ко мне.
«Кто к этому стремится, кроме вас?»
Ну наверно, тот кто стремится к достоверности тестов, их максимальному соответствию реальной торговле и, как следствие, к заработку на роботах
О чем вы написали???
1. Глубина вашего тестирования какая?
2. На оптимизации тиков глубокой истории ваш тестер тоже не об.ся?
Завидую — вашему тестеру не нужно трусы стирать.
В добывании тиков для MOEX никакого «чуда», а бесплатная доступность
www.qscalp.ru/download
erinrv.qscalp.ru/
www.qscalp.ru/store/qsh.pdf
Но я так и не понял, зачем тики, которых в секунду проходят сотни и тысячи, если терминал брокера показывает мне биржу с опозданием на 0.1 сек и моя заявка приходит на биржу с таким же опозданием.
Можно сгруппировать тики в секундные бары.
Но и это излишество, т.к. за секунду цена не сделает движения, большего, чем размер комиссии.
«Я думаю, что тики по инструментам с мосбиржи возможно организовать так, чтобы с тестером не случилась подобная неприятность. Если очередной тик не содержит никаких изменений ( в ценах бида и аска) их учитывать необязательно. Цену последней сделки можно в принципе не учитывать, это уже прошлое. Имеют значение цены по которым можно купить или продать сейчас, сию миллисекунду (с поправкой на пинг и время исполнения).»
Частично совпало с ответом на предыдущий комментарий. И это предположение. В любом случае тестирование на свечных данных это иллюзия.
Вопрос вот какой есть: а нахрена эти мутные форекс-конторы мучать, если есть богический брокер NinjaTrader и M6E на котором можно $500 торговать спокойно ваще, на CME Карл!))
1. Кто с чего начал и к чему привык. И где получается. Возможно у меня руки дойдут и до CME когда-нибудь.
2. Не все форекс брокеры офшорные. Есть с серьезными регуляциями: FCA, NFA, ASIC и т.д
3. В нынешних условиях для граждан РФ возможно безопаснее торговать через ориентированных на русскоязычных офшорных брокеров, чем на CME.
4. Репутация офшорных брокеров держится не на регуляциях, судах, законах. А на репутации в сети, прежде всего на тематических форумах. Некоторые десятилетиями создают себе имя и дорожат им, независимо от регуляции. В отличии от солидных регулируемых контор, которые если могут по закону кинуть, то это сделают. Чего стоит только ситуация с фьючами на нефть в 2020г.
С переходом на алго я, б@ядь, так или иначе надзираю за торговлей 16 часов в сутки. Проблема в софте. Пишу свой, кастомный и надежный терминал. Надеюсь закончить в конце 2023.
С уважением
Блин, не проще ли руками)?
Ну просто если трейдер достиг уровня что может алгоритмизировать торговлю, если эмоции уже не играют роли, если следует плану и проблем с этим особо нет. Не проще ли продолжать руками?
Не будет должной валидности
Алго можно потестить в широком диапазоне (я лично не рассматриваю тесты короче, чем 1.5 млн. минутных баров)
На длинных тестах можно попытаться угадать закономерности
Торговля руками проще, конечно
Но, когда она начнет факапить, абсолютно неясно, что делать дальше?
С уважением
Могу вместе со своим супер-программером написать книгу страниц на 500 на тему, какое TSLab говно… Но не буду, т.к. на TSLab была заработана масса бабла.
При этом мой программер умудрялся реверс-инжинирить почти все косяки TSLab, кроме ядра… В ядро лезть некошерно...
В реале для HFT TSLab, конечно, в-принципе не приспособлен. Но ругать на этом форуме я его не буду, буду строго хвалить по причинам, изложенным выше.
Пока пытаемся тюнинговать QuanTower и дописывать свой терминал.
Свой терминал нужен для моих чувствительных алго, когда важно, чтобы прога умела подсасывать хотя бы 2048 баров, не сбоила при пропадании коннекта с биржей, не жрала память больше 16 Гб (это пох, на самом деле, но непонятно, зачем это нужно) и не сходила с ума при некорретных внешних (биржевых, ессно) данных.
С уважением
Просто ребята ищут себе занятие, чтобы не заниматься трейдингом.
При этом их немало и все они уверены, что в одиночку сделают лучше, чем целые команды профи-прогеров, руководимых грамотными трейдерами (в любой популярной платформе).
На чём основана их уверенность не понимаю, видимо на ощущении собственной гениальности.