Всем добрый вечер!
В последнее время на форуме было опубликовано несколько статей по поводу тестирования алгоритмических стратегий, приблизительно следующего содержания — «На тестах все хорошо и алгоритм дает прибыль +100%, в реальной жизни все плохо — и алгоритм дает убытки -100%».В этом посте я попытаюсь вставить свои «пять копеек», почему так случается. С торговлей на бирже знаком с 1994 года. Не скажу, что весь этот опыт был удачный, скорее совсем наоборот и поэтому с 2016 года занимаюсь разработкой алгоритмических стратегий, ну или по простому — пишу торговый собственный робот. В реальных торгах участвую, но только с помощью собственного робота. Разработка роботов — это не бизнес, а скорее хобби, пишу для себя. Торгую на ММВБ через Quik. Робот написан на C#, для тестирования использовал данные с сайтов finam и pitrading (покупал).
Так как я сам разработчик кода, то мне легко внести небольшие коррекции в свой же алгоритм и провести небольшой эксперимент. Я взял исторические минутные данные (OHLC) по трем инструментам — Apple, AUD/USD и XAUG/ USD за последние 4 года и рассмотрел три варианта заключения сделок при тестировании:
Вариант Average. Мы заключаем сделки ( продажа или покупка) по средней цене — (Open + High + Low + Close) / 4;
Вариант Best. Мы покупаем всегда по Low, а продаем по High.
Вариант Worst. Мы покупаем всегда по High, а продаем по Low.
Интуитивно понятно, что вариант Best должен дать самую хорошую доходность, а вариант Worst — худшую. Так и получилось. Результаты тестирования я свел в таблицу и получилось следующее :
Apple Average Best Worst Market
2017 28.03 38.7 16.62 46.32
2018 5.79 43.29 -33.52 -7.26
2019 61.32 97.87 23.63 85.87
2020 84.07 174.05 -7.23 70.68
AUD/USD Average Best Worst Market
2017 3.5 8.65 -2.08 7.98
2018 3.2 5.61 -3.68 -9.68
2019 12.84 16.24 10.69 -0.37
2020 29.34 47.56 8.71 9.86
XUG/USD Average Best Worst Market
2017 4.07 30.22 -10.2 6.36
2018 0.87 8.63 -8.2 -5.31
2019 8.64 27.5 -7.94 15.18
2020 85.25 252.56 -99.21 48.28
В таблице отражены доходности в процентах, положительно значение соответствует прибыли, отрицательное — убыткам. Для справки я также привел как изменялся рынок ( колонка Market) за отчетный год. При тестирование предполагалось, что Вы отдадите комиссию в размере 0.05% брокеру с каждой сделки.
Результаты в принципе получились ожидаемые. Алгоритм Best всегда лучше Average, и соответственно Worst хуже всех. Понятно, что в реальной жизни Вам никогда не удастся заключать сделки по алгоритму Best. Но я думаю, что Вы не настолько неудачны, чтобы заключать сделки по худшей цене, как в алгоритме Worst. При алгоритме Worst лучше всего ведет себя австралийский доллар — в целом алгоритм остается прибыльным даже при самом худшем сценарии, на серебре при алгоритме Worst Вы разоритесь, а на Best озолотитесь.
Из всего вышесказанного напрашивается простой вывод — манипулировать с ценами при тестировании своих стратегий нельзя, если Вы не хотите получить отрицательный результат в реальной жизни. Важны мельчайшие подробности. Прежде чем начинать торговлю, прогоните свои алгоритмы на исторических данных и они должны давать стабильно положительный результат как минимум за 5 лет без какой либо подгонки параметров.
Всем удачи в торгах!
я все тестирую только так, если при самом худшем раскладе ТС плюсует, значит плюс будет по любому, т.к. даже хронический неудачник не способен всегда покупать по максимальной цене и продавать по минимальной.
что есть такое
но у тя баг в логике
в реальных торгах тыж не знаешь хай, лоу, клос свечи на которой выставляешь заявку
единственое что ты знаешь это опен — если бот считает по открытиям свечек
т.е ты как бы подглядываешь в будущее
При тестирование на истории я проверяю - попадет моя цена в интервал OHLC или нет. А если попадает, то я должен выбрать по какой цене я совершаю сделку. Как то так, если очень кратко.
И в этом посте я просто показал, как будет зависеть результативность алгоритма от выбора цены внутри свечи OHLC.