Информация о рынке (спред) возвращает 0 при выполнении для другого символа

Я пишу советник для Windows 10 с помощью metatrader4.

Мой код:
Я перебираю все символы, чтобы получить их спреды.

// for(i...
string name = SymbolName(i, false)
double spread = MarketInfo(name, MODE_SPREAD);

Print("Symbol " + name + ": " + DoubleToStr(spread, 4));

Среда тестирования:
Я использую тестер стратегий, известный как бэктестер, который должен быть установлен на определенный символ. В моем случае я установил AUDUSD.

Мой неожиданный результат (журнал):

// everything else is also 0.0000
Symbol EUREUC: 0.0000
Symbol EURCHF: 0.0000
Symbol EURCAD: 0.0000
Symbol EURAUD: 0.0000
Symbol CHFJPY: 0.0000
Symbol CADJPY: 0.0000
Symbol CADCHF: 0.0000
Symbol AUDUSD: 24.0000
Symbol AUDNZD: 0.0000
Symbol AUDJPY: 0.0000
Symbol AUDCHF: 0.0000
Symbol AUDCAD: 0.0000

Проблема:
Как видите, я получаю только спред от AUDUSD, символа, над которым я настроил тестер стратегий. Есть ли шанс получить спред для символов, отличных от того, который я установил в тестере?

Пробовал с разными символами. Я всегда получаю спред для выбранного, но не для всех остальных.

Большое спасибо!


person C4d    schedule 14.07.2019    source источник
comment
AFAIK, Нет. Многосимвольное тестирование не поддерживается в MT4. Вы даже не можете увидеть цены или время последнего тика для любых символов, отличных от выбранного. MT5 может решить вашу проблему   -  person Daniel Kniaz    schedule 14.07.2019
comment
Ой интересно. Есть причина перейти на mt5 / mql5. Я думаю, тебе стоит опубликовать это как ответ.   -  person C4d    schedule 14.07.2019


Ответы (1)


MT4:

Допускается только одновалютное тестирование. Допускается мультитаймфреймовое тестирование. В режиме реального времени ограничений нет (например, вы можете рассчитать индекс доллара и отобразить его в окне индикатора).

MT5:

Никаких ограничений, допускается тестирование как в одной, так и в мультивалютной системе, то же самое в режиме реального времени. Не забудьте bool result=SymbolSelect( symbol[i], true); для всех валют, которые вам нужны в начале теста. Если result ложно - скорее всего, вы забыли про суффикс или допустили опечатку. Визуально у вас будет основной график (тот, который выбран в тестере - Symbol & Tf), но другие диаграммы доступны на следующих графиках в тестере.

Сложно ли перейти с МТ4 на МТ5? Это зависит от обстоятельств.
Похоже, что с индикаторами больше головной боли (MT4: массивы заданы как серии, поэтому close[0] является текущим bid, MT5: наоборот, time[0] - самая ранняя известная дата); в таком случае вам нужно постоянно устанавливать обе серии как true или false, и это вызывает еще некоторые неудобства.
Другая проблема может заключаться в том, что вы используете индикатор или библиотеку MT4 и у вас нет их исходного кода. Боюсь, что в таком случае вам никто не поможет.
Если вы используете библиотеки DLL, имейте в виду, что MT4 - это архитектура на базе 86x, MT5 - это архитектура на базе 64x.
Для экспертов может быть использована специальная библиотека MT4Orders.mqh от fxsaber скачивается на официальном сайте в разделе codebase, а затем пишется в стиле МТ4.

person Daniel Kniaz    schedule 14.07.2019
comment
Большое спасибо за подробности! Не думаю, что переключение будет таким сложным. Mql никоим образом не увлекателен, так что это просто повторное изучение нового языка. В любом случае детали мне очень помогут. :) - person C4d; 14.07.2019