noro

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

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
б) цена или цена

Сразу скажу что ни в одной из моих стратегий ничего подобного нет. А если бы было, то кто-нибудь давно бы уже спалил бы и написал об этом комментарий (а комментарий удалить невозможно).
Я просто беру стратегию и на симуляторе, (благо он появился) гоняюю ее. С тем же vdub его миллионные проценты уходят)) Значительно проигрывает рынку
+1 Ответить
Я правильно вижу Чистую прибыль в сводке 1000%??
Ответить
если это начало пути то вам++)
Ответить
Какой из 8 установил? Их там много.
Ответить
noro Maska_R
@Alex_555, у которого больше всего лайков
Ответить
@noro, хейтеры лайкают?)
Ответить
@noro, Добрый день. Я копирую скрипт и выскакивает ошибка, причем не у меня одного..

"line 84: mismatched input 'strategy.entry' expecting 'end of line without line continuation'"

на строке кода:
strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=((time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))))

Есть мысли как такое решить? Спасибо!
Ответить
cryptohumster cryptohumster
@cryptohumster, получилось подключить через поиск стратегий
Ответить
RU Русский
EN English
EN English (UK)
EN English (IN)
DE Deutsch
FR Français
ES Español
IT Italiano
PL Polski
SV Svenska
TR Türkçe
PT Português
ID Bahasa Indonesia
MS Bahasa Melayu
TH ภาษาไทย
VI Tiếng Việt
JA 日本語
KO 한국어
ZH 简体中文
ZH 繁體中文
AR العربية
HE עברית
Домой Скринер акций Скринер форекс Скринер криптовалют Экономический календарь О проекте Особенности Правила поведения Модераторы Решения для сайтов и брокеров Виджеты Компонент графиков Отзывы и предложения Блог и новости ЧаВо Справка и Wiki Твиттер
Профиль Настройки профиля Счёт и оплата Мои запросы в поддержку Связаться с поддержкой Опубликовано идей Подписчики Подписан Личные сообщения Чат Выйти