Если все же хотите протестировать мультивалютник в МТ4, будет очень много костылей, и делать вам их придется самому или искать готовые.
Как правило быстрей и проще переписать советник на Мт5 и прогнать его на хеджевом счете.
Тестер МТ4 не предназначен для мультивалютных советников. И разработчики не планируют что либо менять в этом плане, на сколько мне известно.
Если все же хотите протестировать мультивалютник в МТ4, будет очень много костылей, и делать вам их придется самому или искать готовые.
Как правило быстрей и проще переписать советник на Мт5 и прогнать его на хеджевом счете.
Советник не мультивалютный. Он работает на символе EURJPY. Но поскольку функция стоимости пункта MarketInfo(Symbol(),MODE_TICKVALUE) работает не правильно, для расчёта стоимости пункта требуется значение Bid для EURUSD.
Поэтому хотелось бы, чтобы авторы либо исправили работу функции MarketInfo(Symbol(),MODE_TICKVALUE) , либо создали возможность для работы функции MarketInfo(Symbol(),MODE_BID) . Проще наверное первое.
Поскольку функция MarketInfo(Symbol(),MODE_TICKVALUE) работает не точно, то не представляется возможным рассчитать правильное значение стоимости пункта по формуле и как следствие невозможно к примеру правильно закрыть совокупную позицию при достижении заданного количества пунктов прибыли для совокупного лота. Привожу значение стоимости пункта полученное для последней котировки EURJPY за 25.01.2019 с помощью функции MarketInfo(Symbol(),MODE_TICKVALUE): 0.912975. А, если рассчитать по формуле , то получается значение: 0.912864.
Одно из следствий этого - неправильная работа функции расчёта цены безубытка для совокупной позиции, если она использует при расчёте функцию MarketInfo(Symbol(),MODE_TICKVALUE).
Хотелось бы, чтобы авторы МТ4 учли эту информацию при выпуске новой исправленной версии.
Не забывайте что при таких пересчётах надо использовать разные цены. В одном случае цены Bid и Ask, а в другом Ask и Bid
Вероятнее всего в ваших расчётах не мало ошибок.
Советник не мультивалютный. Он работает на символе EURJPY. Но поскольку функция стоимости пункта MarketInfo(Symbol(),MODE_TICKVALUE) работает не правильно, для расчёта стоимости пункта требуется значение Bid для EURUSD.
marketInfo устаревшая функция, сейчас больше используют SymbolInfo...(
Так как вы работаете на истории, то вам и цена нужна на истории.
По этому используйте iBarShift для поиска соответсвующей свечи в истории EURUSD и iClose чтобы взять цену этой свечи. Для точного расчета лучше ориентироваться на историю м1.
Доступ к истории других инструментов из тестера МТ4 есть, ошибок не замечал.
marketInfo устаревшая функция, сейчас больше используют SymbolInfo...(
Так как вы работаете на истории, то вам и цена нужна на истории.
По этому используйте iBarShift для поиска соответсвующей свечи в истории EURUSD и iClose чтобы взять цену этой свечи. Для точного расчета лучше ориентироваться на историю м1.
Доступ к истории других инструментов из тестера МТ4 есть, ошибок не замечал.
Спасибо за подсказку! Как то упустил такую возможность. Заменил MarketInfo("EURUSD",MODE_BID) на iClose("EURUSD", 0,0).
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Поскольку функция MarketInfo(Symbol(),MODE_TICKVALUE) работает не точно, то не представляется возможным рассчитать правильное значение стоимости пункта по формуле и как следствие невозможно к примеру правильно закрыть совокупную позицию при достижении заданного количества пунктов прибыли для совокупного лота. Привожу значение стоимости пункта полученное для последней котировки EURJPY за 25.01.2019 с помощью функции MarketInfo(Symbol(),MODE_TICKVALUE): 0.912975. А, если рассчитать по формуле , то получается значение: 0.912864.
Одно из следствий этого - неправильная работа функции расчёта цены безубытка для совокупной позиции, если она использует при расчёте функцию MarketInfo(Symbol(),MODE_TICKVALUE).
Хотелось бы, чтобы авторы МТ4 учли эту информацию при выпуске новой исправленной версии.