Разработчики ввели ограничение по использованию этой функции в мультивалютных экспертах.
При вызове функции в режиме тестера или оптимизатора по другому инструменту генерируется ошибка 4059 (функция запрещена в данном режиме)
Возникает вопрос, а как тогда получить Point, Digits, Ask, Bid по другому инструменту.
Позволю предложить свой вариант решения проблемы (может и не совсем удачный). Но попробую extern double k = 1.0;
double my_marketinfo(string sym, int mode){
int err=GetLastError();
double res=MarketInfo(sym,mode);
err=GetLastError();
if (err>0) {
if (err==4059) {
switch (mode) {
case MODE_POINT:
res=0.01*k;
if (StringFind(sym,"JPY")==-1) res=0.0001*k;
break;
case MODE_ASK:
case MODE_BID:
res=iOpen(sym,0,0);
break;
case MODE_DIGITS:
if (k==0.1) res=3; else res=2.0;
if (StringFind(sym,"JPY")==-1) res+=2;
break;
}
} else {
Print("my_marketinfo(",sym,",",mode,")- error code ",err);
}
}
return(res);
}
Параметры можно добавлять, особых проблем нет. А может будут и другие варианты решения проблемы