Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я снова заметил, что даже когда я запускаю его с 2009 года на текущую дату (04.2014), разница между MA на графике и ima в бэктесте по-прежнему составляет 0.10, так что я думаю, что проблема сохраняется. Я сделаю свою собственную функцию замены iMa, если все остальные не сработают. icustom по-прежнему возвращает только нули на графике D1, даже если начать с 2009 года, и работает нормально на графике H4.
Анализируя, как работаетпользовательский индикаторскользящих средних, я понимаю, почему возникают подобные проблемы.
Каждая скользящая средняя рассчитывается не грубым способом, считая следующий фрейм скользящей средней от предыдущего фрейма скользящей средней, а не просто считая необходимые (в данном случае 370) фреймы для уравнения. Таким образом, если 1 фрейм MA ошибочен, то все последующие тоже будут ошибочными. Чем дальше от кадра ошибки, тем меньше будет ошибка. Это могло бы даже работать правильно, если бы все кадры от начала были подсчитаны правильно, но я заметил, что иногда iMA при старте сообщает нули (у меня есть процедура отбрасывания ошибочных показаний ma, но сам iMA этого не делает) и эти нули, вероятно, также учитываются при подсчете следующих кадров iMA от предыдущих кадров iMA.
Поэтому, когда я начал бэк-тесты в 2013 году, разница была наибольшей, в 2012 она была меньше, чем при старте в 2013, start=2011 еще меньше, и так далее. Разница все еще была заметна, даже когда я начал бэктест с 2009 года, так что это серьезная проблема.
Я подтвердил ранее, что есть проблема с режимом SMMA, я думаю, вы уже сообщили об этом в Service Desk? Другие режимы, как мне кажется, в порядке.
я заканчиваю писать свою собственную процедуру замены iMA, чтобы полностью задокументировать и понять проблему. (не просто визуальное сравнение, как это сделано в этой теме).
Результаты ima, моей замены ima и результаты пользовательской скользящей средней будут доступны в журнале для сравнения.
PS. если вы подтвердите ошибку, я сообщу о ней сейчас. (я добавлю новый комментарий в этой теме, когда о проблеме будет сообщено). Сайт (или мой интернет) работает очень медленно в данный момент, поэтому у меня проблемы даже с доступом к странице службы технической поддержки.Я думал, что другие типы MA тоже затронуты, но я сделал больше тестов, и SSMA кажется единственным затронутым, как вы и сказали.
Но я заметил проблему с iCustom. Скрипт для тестирования SSMA и iCustom:
Анализируя, как работает пользовательский индикатор скользящих средних, я понимаю, почему возникают подобные проблемы.
Каждая скользящая средняя рассчитывается не грубым способом, считая следующий фрейм скользящей средней от предыдущего фрейма скользящей средней, а не просто считая необходимые (в данном случае 370) фреймы для уравнения. Таким образом, если 1 кадр MA ошибочен, то все последующие тоже будут ошибочными. Чем дальше от кадра ошибки, тем меньше будет ошибка. Это могло бы даже работать правильно, если бы все кадры от начала были подсчитаны правильно, но я заметил, что иногда iMA при старте сообщает нули (у меня есть процедура отбрасывания ошибочных показаний ma, но сам iMA этого не делает) и эти нули, вероятно, также учитываются при подсчете следующих кадров iMA от предыдущих кадров iMA.
Поэтому, когда я начал бэк-тесты в 2013 году, разница была наибольшей, в 2012 она была меньше, чем при старте в 2013, start=2011 еще меньше, и так далее. Разница все еще была заметна, даже когда я начал бэктест с 2009 года, так что это серьезная проблема.
I don't see the problem. iMA is well coded for performance. If an iMA report a 0 it's because you don't have data (or enough data). By the way there is only a problem with SMMA, I don't know why, but it cannot be due to this "incremental" implementation as it's working well for other mode.
Да, вы правы, это было бы намного медленнее. Но дело в том, что такой способ подсчета плюс несколько пустых кадров (нулей) в начале приведет к подобным проблемам. (вот почему SSMA iMA всегда меньше, а не больше, чем обычный SSMA) Я знаю, что не проверяю, что возвращает iMA, поэтому я получаю нули в начале, вместо того, чтобы правильно обработать отсутствие необходимой информации, но это другой вопрос.
На маленьких ТФ анализируется гораздо больше фреймов, и проблема может быть размыта со временем. С каждым новым фреймом има SSMA становится все ближе и ближе к реальной SSMA, поэтому чем больше баров проходит, тем менее заметна проблема, вот почему я думаю, что никто не заметил ее раньше. Такую же проблему я обнаружил с 370 SSMA и PERIOD_12H PERIOD_8H и т.д.
Если у вас есть время, пожалуйста, посмотрите на функцию iCustom. Я приложил исходный код, чтобы легко протестировать ее. Проверьте все нижние ТФ, которые PERIOD_D1 - iCustom работает нормально и возвращает те же значения, что и iMA. В PERIOD_D1 для iCustom всегда нули, в то время как iMA все еще сообщает некоторые значения.
Любопытно, что при использовании SSMA на максимальном PERIOD_H12 и iMA, и "пользовательское скользящее среднее" индикатора iCustom выдают неверные значения. (тест с 2014.01, чтобы увидеть разницу).
Ошибка должна быть где-то здесь: (форма пользовательского скользящего среднего)
Обратите внимание, что firstValue считается так же, как и в процедуре SMA:
firstvalue = (x1 + x2 + x3 + ... + xn) / n
что является "грубым" уравнением для простой скользящей средней, но не для сглаженной скользящей средней.
Может быть, в этом причина проблемы?
с этого сайта:
https://mahifx.com/indicators/smoothed-moving-average-smma
Первое значение для сглаженной скользящей средней рассчитывается как простая скользящая средняя (SMA):
SUM1=SUM (CLOSE, N)
SMMA1 = SUM1/ N
Второе и последующие скользящие средние рассчитываются по следующей формуле:
SMMA (i) = (SUM1 - SMMA1+CLOSE (i))/ N
Где:
SUM1 - общая сумма цен закрытия за N периодов;
SMMA1 - сглаженное скользящее среднее первого бара;
SMMA (i) - сглаженное скользящее среднее текущего бара (кроме первого);
CLOSE (i) - текущая цена закрытия;
N - период сглаживания.
Таким образом, я полагаю, что iMa и пользовательские скользящие средние делают это правильно. Но подобные расчеты приводят к ошибкам, с которыми мы столкнулись, что приводит к огромным различиям в зависимости от тестируемых периодов. Это совершенно неприемлемо для советника, который строит свои сделки на основе скользящих средних. Полагаю, что мне придется исключить Smoothed MA по этой причине из моего советника, поскольку он дает ошибочные результаты при бэктестинге. Даже если я протестирую его в 2000 году и получу правильные результаты, клиенты могут протестировать его в 2013 году и сказать "он уничтожает счет", потому что они получат другие SSMA, чем я.
Еще одна цитата:
SMMA придает недавним ценам равный вес с историческими ценами. При расчете учитываются все имеющиеся серии данных, а не фиксированный период.
Поэтому при каждом изменении периода бэктестирования он получается разным.
Пожалуйста, не отвечайте внутри цитаты. Как вы видите, когда я хочу процитировать вас, она становится пустой.
Алгоритм хорош для SMMA, нужно с чего-то начинать. Но вы указываете на источник проблемы, поскольку SMMA строится на предыдущем значении, она чувствительна к начальному условию. Поскольку у вас нет одинаковой стартовой свечи на живом графике и в тестере стратегий, это объясняет разные значения.
То же самое верно и для EMA, после повторной проверки (на D1) у меня теперь тоже разные значения, как и для SMMA.
с этого сайта:
https://mahifx.com/indicators/smoothed-moving-average-smma
Первое значение для сглаженной скользящей средней рассчитывается как простая скользящая средняя (SMA):
SUM1=SUM (CLOSE, N)
SMMA1 = SUM1/ N
Вторая и последующие скользящие средние рассчитываются по следующей формуле:
SMMA (i) = (SUM1 - SMMA1+CLOSE (i))/ N
Где:
SUM1 - общая сумма цен закрытия за N периодов;
SMMA1 - сглаженное скользящее среднее первого бара;
SMMA (i) - сглаженное скользящее среднее текущего бара (кроме первого);
CLOSE (i) - текущая цена закрытия;
N - период сглаживания.
Таким образом, я полагаю, что iMa и пользовательские скользящие средние делают это правильно. Но подобные расчеты приводят к ошибкам, с которыми мы столкнулись, что приводит к огромным различиям в зависимости от тестируемых периодов. Это совершенно неприемлемо для советника, который строит свои сделки на основе скользящих средних. Полагаю, что мне придется исключить Smoothed MA по этой причине из моего советника, поскольку он дает ошибочные результаты при бэктестинге. Даже если я протестирую его в 2000 году и получу правильные результаты, клиенты могут протестировать его в 2013 году и сказать "он уничтожает счет", потому что они получат другие SSMA, чем я.
Спасибо за ссылку. Это подтверждает мой предыдущий пост. Это очень интересно, поскольку я никогда не обращал внимания на такие вещи.
Проверив алгоритм EMA, можно сказать, что он также чувствителен к такому вопросу, не знаю, почему мой первый тест дал такие же значения.