В тестере МТ4 функция MarketInfo("EURUSD",MODE_BID) при тестировании на графике EURJPY не работает.

 

Поскольку функция MarketInfo(Symbol(),MODE_TICKVALUE) работает не точно, то не представляется возможным рассчитать правильное значение стоимости пункта по формуле и как следствие невозможно к примеру правильно закрыть совокупную позицию при достижении заданного количества пунктов прибыли для совокупного лота. Привожу значение стоимости пункта полученное для последней котировки EURJPY  за 25.01.2019   с помощью функции  MarketInfo(Symbol(),MODE_TICKVALUE):    0.912975. А, если рассчитать по формуле , то получается значение:  0.912864. 

Одно из следствий этого - неправильная работа функции расчёта цены безубытка для совокупной позиции, если она использует при расчёте функцию MarketInfo(Symbol(),MODE_TICKVALUE). 

Хотелось бы, чтобы авторы МТ4 учли эту информацию при выпуске новой исправленной версии.

 
Тестер МТ4 не предназначен для мультивалютных советников. И разработчики не планируют что либо менять в этом плане, на сколько мне известно.
Если все же хотите протестировать мультивалютник в МТ4, будет очень много костылей, и делать вам их придется самому или искать готовые.

Как правило быстрей и проще переписать советник на Мт5 и прогнать его на хеджевом счете.
 
Nikolay Khrushchev:
Тестер МТ4 не предназначен для мультивалютных советников. И разработчики не планируют что либо менять в этом плане, на сколько мне известно.
Если все же хотите протестировать мультивалютник в МТ4, будет очень много костылей, и делать вам их придется самому или искать готовые.

Как правило быстрей и проще переписать советник на Мт5 и прогнать его на хеджевом счете.

Советник не мультивалютный. Он работает на символе EURJPY. Но поскольку функция стоимости пункта  MarketInfo(Symbol(),MODE_TICKVALUE) работает не правильно, для расчёта стоимости пункта требуется значение Bid для EURUSD.

Поэтому хотелось бы, чтобы авторы либо исправили работу функции  MarketInfo(Symbol(),MODE_TICKVALUE) , либо создали возможность для работы функции  MarketInfo(Symbol(),MODE_BID) . Проще наверное первое.

 
khorosh:

Поскольку функция 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

Вероятнее всего в ваших расчётах не мало ошибок.

 
khorosh:

Советник не мультивалютный. Он работает на символе EURJPY. Но поскольку функция стоимости пункта  MarketInfo(Symbol(),MODE_TICKVALUE) работает не правильно, для расчёта стоимости пункта требуется значение Bid для EURUSD.

marketInfo устаревшая функция, сейчас больше используют SymbolInfo...(
Так как вы работаете на истории, то вам и цена нужна на истории.
По этому используйте iBarShift для поиска соответсвующей свечи в истории EURUSD  и iClose чтобы взять цену этой свечи. Для точного расчета лучше ориентироваться на историю м1.
Доступ к истории других инструментов из тестера МТ4 есть, ошибок не замечал.

 
Nikolay Khrushchev:

marketInfo устаревшая функция, сейчас больше используют SymbolInfo...(
Так как вы работаете на истории, то вам и цена нужна на истории.
По этому используйте iBarShift для поиска соответсвующей свечи в истории EURUSD  и iClose чтобы взять цену этой свечи. Для точного расчета лучше ориентироваться на историю м1.
Доступ к истории других инструментов из тестера МТ4 есть, ошибок не замечал.

Спасибо за подсказку! Как то упустил такую возможность. Заменил  MarketInfo("EURUSD",MODE_BID)  на iClose("EURUSD", 0,0).

Причина обращения: