ROBO_Trading

Разоблачение лживых стратегий

BITSTAMP:BTCUSD   Биткоин
Тут покажу как скрипты стратегий Вас обманывают, и как на это не попадаться. Повод:

fixsys
Добрый день. По поводу стратегий. Нашел среди стратегий Vdub FX SniperVX3 Strategy v3. На первый взгляд работает неплохо. Может стоит ее потестировать и подкрутить если что?


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

Piriod=input('720')
ch1 = security(tickerid, Piriod, open)
ch2 = security(tickerid, Piriod, close)
longCondition = crossover(security(tickerid, Piriod, close),security(tickerid, Piriod, open))
if (longCondition)
strategy.entry("BUY", strategy.long)
shortCondition = crossunder(security(tickerid, Piriod, close),security(tickerid, Piriod, open))
if (shortCondition)
strategy.entry("SELL", strategy.short)

Вы не программисты (большинство), поэтому я для Вас его расшифрую. Весь предыдущий код стратегии вообще никак не влияет на генерацию стрелок (и соответственно тестера).

Piriod=input('720') - выбрать таймфрейм 12 часов
ch1 = security(tickerid, Piriod, open) - посмотреть цену открытия свечи таймфрейма 12 часов по этой же паре

В целом, вторая строчка безобидная. Действительно, смотреть цену открытия свечи - это смотреть в прошлое, а так можно, мы же в реальной ситуации знаем прошлое. Мы можем в 14 часов дня посмотреть цену, какая была в 00:00 часов, так можно. Но дальше...

ch2 = security(tickerid, Piriod, close) - посмотреть цену закрытия свечи таймфрейма 12 часов

То есть стратегия видит будущее на 12 часов вперед. Использует ли она это? Да.

longCondition = crossover(security(tickerid, Piriod, close),security(tickerid, Piriod, open)) - отрыть лонг-позицию ЕСЛИ ЦЕНА ЗАКРЫТИЯ БОЛЬШЕ ЦЕНЫ ОТКРЫТИЯ ))) То есть если заранее известно что цена вырастет - открыть лонг. Так же и шорт :)

Как с этой пакостью бороться? Я видел только 2 приема подглядывания в будущее. И их можно распознать в коде (если код открыт), не понимая сам код даже.

Прием 1. Команда security. Она нужна чтобы смотреть цены другого актива. Это команда еще не значит что стратегия мухлюет. Например, стратегия для торговли акциями может посматривать цену закрытия прошлого дня какого-то индекса акций. Это нормально и может оказаться полезно, это не обманка еще. Но тут в команде security выбран актив tickerid - это значит "посмотреть цены выбранного актива". Что тоже не значит что это обман. Если цену открытия смотрит - то можно. Нельзя чтобы она смотрела любые другие типы цен, типа close, high, low, hl2 и так далее. То есть вот такая конструкция это точно подглядывание в будущее "security(tickerid".

Прием 2. Тоже видел. Можно смотреть цену предыдущего бара. Выгляди это так: close - то есть посмотреть цену закрытия на 1 бар назад. Так можно, прошлое знать можно. Можно и так close - посмотреть цену закрытия 5 свечей назад. Тоже можно. Но там есть возможность вставлять отрицательное значение. Так close означает подсмотреть цену закрытия следующей свечки, то есть подсмотреть в будущее.

Так что нам надо чтобы в стратегии не было конструкций типа:
а) security(tickerid
б) цена или цена

Сразу скажу что ни в одной из моих стратегий ничего подобного нет. А если бы было, то кто-нибудь давно бы уже спалил бы и написал об этом комментарий (а комментарий удалить невозможно).

Отказ от ответственности

Все виды контента, которые вы можете увидеть на TradingView, не являются финансовыми, инвестиционными, торговыми или любыми другими рекомендациями. Мы не предоставляем советы по покупке и продаже активов. Подробнее — в Условиях использования TradingView.