Скачать MetaTrader 5

Может ли тестер стратегий ошибаться?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Code Base поможет в усвоении теоретических знаний. Заходи и изучай!
Alexey Savelyev
417
Alexey Savelyev 2011.02.04 07:16 

Столкнулся с непонятной проблемой,написал индикатор,к нему дописал стратегию,начинаю тестить, и со временем замечаю неточности входа тестера в рынок. Ну думаю, ладно из за нулевого бара может ошибается. Проверяю везде в коде чтобы расчёты проводились с начала появления бара,тоесть по OPEN,всё в порядке так и есть. Ладно думаю сделаем вход с запаздыванием,со сдвигом назад.

Результат конечно другой, но пропуски сделок у тестера так же есть. Хорошо, прикручиваем к индикатору визуально стрелочки,добавляем ещё два буфера, в которых метки BUY и SELL, не вызываем теперь из советника расчёты, а просто считываем уже готовые метки из буферов. И опять пропуски! Ошибок никаких не пишет,всё нормально, в реальном времени торгует. Что теперь? Что дальше? Изворачиваться и торговать для тестера прямо из индикатора?

Вот приведу пример:

 

Заместо селла сделал бай и попёр куда то, пропуская всё подряд. Хотя в некоторых местах графика всё чётко совпадает. 

Rashid Umarov
Админ
11812
Rashid Umarov 2011.02.04 09:29  

alexhammer:

И опять пропуски! Ошибок никаких не пишет,всё нормально, в реальном времени торгует. Что теперь? Что дальше? Изворачиваться и торговать для тестера прямо из индикатора?

Искать ошибки в своем коде.
Сергей
712
Сергей 2011.02.04 10:03  

чтото тестерная тема внезапно стала популярной ;)

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

прежде чем вам чтото посоветовать, я бы сначала уточнил несколько моментов: период, метод тестирования (небось "все тики...."?) и самое главное хотябы фрагменты кода которые вычисляют ваши точки входа (можно без деталей ТС но чтобы было понятно есть ли перерисовки у индикатора? нет ли заглядывания в будущее и всякое такое). В индикаторе и эксперте. Врать же может не только эксперт но и индикатор работать неправильно. вот очень показательный пример хорошего (на первый взгляд) индикатора

Victor Nikolaev
Модератор
14483
Victor Nikolaev 2011.02.04 19:32  
alexhammer:

Столкнулся с непонятной проблемой,написал индикатор,к нему дописал стратегию,начинаю тестить, и со временем замечаю неточности входа тестера в рынок. Ну думаю, ладно из за нулевого бара может ошибается. Проверяю везде в коде чтобы расчёты проводились с начала появления бара,тоесть по OPEN,всё в порядке так и есть. Ладно думаю сделаем вход с запаздыванием,со сдвигом назад.

Результат конечно другой, но пропуски сделок у тестера так же есть. Хорошо, прикручиваем к индикатору визуально стрелочки,добавляем ещё два буфера, в которых метки BUY и SELL, не вызываем теперь из советника расчёты, а просто считываем уже готовые метки из буферов. И опять пропуски! Ошибок никаких не пишет,всё нормально, в реальном времени торгует. Что теперь? Что дальше? Изворачиваться и торговать для тестера прямо из индикатора?

Вот приведу пример:

Заместо селла сделал бай и попёр куда то, пропуская всё подряд. Хотя в некоторых местах графика всё чётко совпадает.


Неплохо было бы взглянуть на код индикатора
Alexey Savelyev
417
Alexey Savelyev 2011.02.07 02:20  

Спасибо всем за участие,нашёл ошибку в коде: было

for (int i=limit; i>=0; i--)

а надо:

for(int i=0; i<limit; i++)

В связи с этим вопросы: Если рассуждать чисто теоретически, то если мы начинаем рисовать от нуля, то при первом проходе если надо считать Close[i+1] то мы должны от туда получить "ноль", так как в буфере ещё пусто, а если рисовать наоборот, то Close[i+1] должен быть уже посчитан? Так как всё таки происходит прорисовка? и как правильно тогда считать?

 И ещё вопрос: При появлении нового бара что мы имеем в нулевом баре?

Опять чисто теоретически рассуждаю: У нас есть точные данные только по Open[0] и

Open[0]=Low[0]

Open[0]=High[0]

Open[0]=Close[0]

и только с приходом нового тика Low,High,Close начинают меняться, правильно?

Из за того что нулевой бар постоянно пересчитывается мы и получаем перерисовывающиеся индикаторы, т.к. все стандартные индикаторы считаются по Close, зачем так сделано? почему не по Open?  выход один получать данные со смещением в историю и получать задержку?

Прошу прощения, может и глупые вопросы, но хочется всё знать точно, а не иметь догадки. 

Vladimir Paukas
4099
Vladimir Paukas 2011.02.07 10:18  
alexhammer:..... т.к. все стандартные индикаторы считаются по Close, зачем так сделано? почему не по Open?
Они считаются по тому как указано в настройке. Укажите опен - будет по опен.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий