Без информации о том, как ваш советник принимает решение о покупке/продаже, ответить на этот вопрос сложно.
Мы видим на рынке много ситуаций, когда один бар имеет очень большой размер (например, на важных новостях).
Поэтому тестер генерирует до 11 тиков для такого бара. В зависимости от вашей логики он ведет себя совершенно по-разному (только в тестировании).
Если вы будете использовать советника на реальных деньгах, я уверен, что все будет гораздо хуже, потому что такие большие бары могут иметь до 200 тиков за одну минуту.
Я предполагаю, что ваша логика действует на текущем баре, вы должны попробовать вашу логику со значениями предыдущего бара.
С наилучшими пожеланиями
Уве
Без информации о том, как ваш советник принимает решение о покупке/продаже, ответить сложно.
Мы видим на рынке много ситуаций, когда один бар имеет очень большой размер (например, на важных новостях).
Поэтому тестер генерирует до 11 тиков для такого бара. В зависимости от вашей логики он ведет себя совершенно по-разному (только в тестировании).
Если вы будете использовать советника на реальных деньгах, я уверен, что все будет гораздо хуже, потому что такие большие бары могут иметь до 200 тиков за одну минуту.
Я предполагаю, что ваша логика действует на текущем баре, вы должны попробовать вашу логику со значениями предыдущего бара.
С наилучшими пожеланиями
Уве
Высылаю трюк для "тиканья" только на одном баре. Вам просто нужно поместить эту логику в начало тика. Если бар не новый, то происходит выход...
Как вы думаете, в каких ситуациях этот трюк может сработать?
//--- Let's first check if a new bar has come! if(CopyTime(_Symbol, _Period, 0, 1, m_currentBarTime) > 0) { if(m_previousBarTime != m_currentBarTime[0]) { m_isNewBar = true; m_previousBarTime = m_currentBarTime[0]; } } else { Alert("Error copying historical data, error: ", GetLastError()); return; } if(!m_isNewBar) return;
Что бы вы порекомендовали для решения проблемы лишних тиков? Есть ли статья или что-то подобное, объясняющее это? Спасибо.
Теперь я прислал трюк для "тиканья" только в одном баре. Нужно просто поместить эту логику в начало тика. Если бар не новый, то он выходит...
Как вы думаете, в каких ситуациях этот трюк может сработать?
Что бы вы порекомендовали для решения проблемы лишних тиков? Есть ли статья или что-то подобное, объясняющее это? Спасибо.
Без информации о том, как ваш советник принимает решение о покупке/продаже, ответить на этот вопрос сложно.
Мы видим на рынке много ситуаций, когда один бар имеет очень большой размер (например, на важных новостях).
Поэтому тестер генерирует до 11 тиков для такого бара. В зависимости от вашей логики он ведет себя совершенно по-разному (только в тестировании).
Если вы будете использовать советника на реальных деньгах, я уверен, что все будет гораздо хуже, потому что такие большие бары могут иметь до 200 тиков за одну минуту.
Я предполагаю, что ваша логика действует на текущем баре, вы должны попробовать вашу логику со значениями предыдущего бара.
С наилучшими пожеланиями
Уве
привет,
Что значит использовать значения предыдущего бара? Использовать maVal[1] (где maVal содержит значения скользящего среднего и массив задан как серия) вместо maVal[0]?
или проверить, было ли условие проверено на последнем баре и войти на открытии этого бара?
ниже часть кода моего очень простого советника
triggerLong=maVal[1]-diff; triggerShort=maVal[1]+diff; ...... ....... Buy_Condition_1=(now_ask<triggerLong); Sell_Condition_1=(now_bid>triggerShort); Exit_long_Condition=(closeAtCross? now_ask>=maVal[1]:false) || Sell_Condition_1; Exit_short_Condition=(closeAtCross? now_bid<=maVal[1]:false) || Buy_Condition_1;
независимо от того, использую ли я maVal[1] или maVal[0], ситуация не сильно меняется, ohcl по-прежнему прибылен, а каждый тик - нет.
спасибо
Без информации о том, как ваш советник принимает решение о покупке/продаже, ответить сложно.
Мы видим на рынке много ситуаций, когда один бар имеет очень большой размер (например, на важных новостях).
Поэтому тестер генерирует до 11 тиков для такого бара. В зависимости от вашей логики он ведет себя совершенно по-разному (только в тестировании).
Если вы будете использовать советника на реальных деньгах, я уверен, что все будет гораздо хуже, потому что такие большие бары могут иметь до 200 тиков за одну минуту.
Я предполагаю, что ваша логика действует на текущем баре, вы должны попробовать вашу логику со значениями предыдущего бара.
С наилучшими пожеланиями
Уве
Что вы имеете в виду под "решить проблему лишних тиков"?
Я абсолютно согласен с ugo58. Большие бары могут вызывать событие OnTick много раз, в то время как маленькие бары будут вызывать его гораздо реже.
Это может повлиять на вашу автоматизированную торговую стратегию, поэтому нам, разработчикам, приходится искать решения, смягчающие тот факт, что событие OnTick может выполняться много раз за бар.
Я думаю, что то, что я отправил ранее, является лишь одним из решений. ugo50 предложил другое решение: запуск логики OnTick на последнем прошедшем баре. В любом случае, если вы хотите запустить логику OnTick на текущем баре, возможно, вы можете использовать что-то похожее на то, что я отправил ранее.
Мы пытаемся реализовать что-то вроде события OnBar.
Что вы думаете по этому поводу?
привет,
что значит использовать значения предыдущего бара? использовать maVal[1] (где maVal содержит значения скользящей средней, а массив задан как серия) вместо maVal[0]?
или проверить, было ли условие проверено на последнем баре и войти на открытии этого бара?
ниже часть кода моего очень простого советника
независимо от того, использую ли я maVal[1] или maVal[0], ситуация не сильно меняется, ohcl по-прежнему прибылен, а каждый тик - нет.
спасибо
Очевидно, есть большая разница, если в вашем коде используется maVal[1] или maVal[0], или вообще, если вы работаете только на закрытом баре, или на открытом баре, или внутри бара.
В последнем случае вам нужно использовать режим Every tick, все остальные режимы не подходят.
Спасибо. О, ну. Мне просто пришлось заново учиться. ;)
Как я уже сказал, это зависит от вашей логики.
Есть много способов решить эти проблемы, maVal[1]- одно из самых простых решений, так как скользящие средние могут не так быстро меняться на каждом баре (в зависимости от длины периода и метода сглаживания).
Это может быть по-разному, если, например, вы зависите от максимума и минимума диапазона баров.
- 2010.10.11
- Konstantin Gruzdev
- www.mql5.com
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Я получаю полностью противоположный результат при тестировании на каждом тике или 1min OHLC. советник и входные параметры точно такие же, но в случае 1min ohlc я получаю 50000 прибыли, в то время как на каждом тике я получаю -7000 убытков.
это происходит на многих парах, тестирование на периоде 2 года 0811-0813.
У кого-нибудь была такая же проблема? Я не понимаю, в чем здесь проблема и что мне делать при торговле реальными деньгами.
оба графика ниже
1-минутный OHLC
каждый тик