Стратегии-подделки

Стратегии-подделки

Автор: Noro
05.08.2019

 

Можно назвать их «фэйком», «подделками» или как-то иначе, никакого общепринятого термина тут не существует. На сайте TradingView.com любые пользователи могут создавать собственные скрипты индикаторов и стратегий на встроенном языке программирования, который называется PineScript. И многие пользователи это делают для разных целей. К большому сожалению для нас, есть механизмы позволяющие делать эдакие лживые стратегии-фейки, которые показывают Вам на бэктесте очень хорошие результаты, или даже идеальные результаты, которые на самом деле получить невозможно. А всё потому что такой скрипт стратегии как бы «подглядывает в будущее». То есть скрипт стратегии смотрит будущие цены, и принимает решение купить или продать с учётом этой информации из будущего. Ну а в реальном трейдинге мы информацию из будущего никак ведь получать не сможем. Для пользователя такой скрипт или индикатор «перерисовывается». Давайте разберем конкретный пример, и такой случай не редкость.

Один из пользователей робота прислал мне ссылку на скрипт, и предложил рассмотреть возможность добавления этой стратегии в робота WhiteBox. Я посмотрел скрипт, на бэктесте он показывает прекрасные результаты:

Так как я занимаюсь этим ремеслом уже достаточно давно, то случай далеко не первый и я сразу же заподозрил тут неладное. Для этого стал изучать исходный код данного скрипта, благо он открытый для всех (не у всех скриптов, выложенных на TradingView.com исходный код открытый для просмотра, поэтому нельзя вот так же проверить скрипт стратегии «на вшивость» если код закрыт). И удобно что код достаточно маленький, так нам будет проще понять этот пример:

//@version=2
strategy(«GetTrendStrategy», overlay=true)
tim=input(‘160’)
out1 = security(tickerid, tim, open)
out2 = security(tickerid, tim, close)
plot(out1,color=red)
plot(out2,color=green)
longCondition = crossover(security(tickerid, tim, close),security(tickerid, tim, open))
if (longCondition)
strategy.entry(«long», strategy.long)
shortCondition = crossunder(security(tickerid, tim, close),security(tickerid, tim, open))
if (shortCondition)
strategy.entry(«short», strategy.short)

Для тех кто разбирается с PineScript или хочет разобраться поясню что же тут не так. Остальные могут пропустить этот абзац. В первой строке скрипта указана версия языка PineScript. Вторая версия. Есть 4 версии языка, и третья и четвертая не позволяет вот так просто подклядывать скриптам в будущее. А тут вторая версия. Далее сильно смущает вот эта строка кода:

out2 = security(tickerid, tim, close)

Это значит следующее: скрипт смотрит цену закрытия свечи на той же самой паре, на которой запущен. Но он смотрит не цену свечи такого же таймфрейма, а цену свечи с другого таймфрема. В данном примере почему то выбран 160-минутный таймфрейм. То есть, скрипт может видеть цену которая будут в будущем — через 160 минут.

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

Как видим результаты совсем другие. Хотя на самом деле в данном скрипте стратегии вообще абсолютно ничего полезного нет, он просто подклядывает в будущее и всё. Он больше ничего не делает и не рассчитывает. То есть тут нет попыток использовать какие-либо рыночные закономерности, паттерны или индикаторы. Таким образом, весь скрипт абсолютно бесполезен. Более того — вреден.

Вреден, потому что не понимающие эти нюансы люди (а их большинство, Вам же в школе PineScript не преподавали) пытаются торговать используя такие вот стратегии-подделки, и поэтому даже не имеют шансов получить прибыль, будут просто терять деньги и всё.

Тогда возникает логичный вопрос: «А зачем такие подделки вообще создают?». Думаю тут несколько вариантов ответов: для получения лайков, для привлечения к себе внимания. Возможно кто-то даже пытается такие страетегии как-то продавать несведующим, или даже продавать курс обучающий такой стратегии. Прежде чем человек поймет что это подделка он потеряет деньги. Даже если не купит у автора никаких услуг или товаров, он всё равно может потерять деньги просто торгуя по такой стратегии.

Как этого избежать, и какие есть признаки у этих стратегий-подделок? Каждый такой признак еще не означает что скрипт Вас обманывает, но должно насторожить. Есть несколько команд кода, которые позволяют это делать, смотря зачем.

  • Команда security(***)
  • @version=2 (вместо 3 или 4)
  • Отрицательные значения в квадратных скобках типа close[-3] (означает «подсмотреть цену закрытия на 3 свечи в будущее, но положительное — можно, оно значит в прошлое)