Странная работа функции MarketInfo().

 

Во время прогона теста в тестере эта функция из индикатора Spread не выдаёт, а из советника выдаёт. Хотя TICKVALUE из индикатора выдаёт нормально. В чём дело кто-нибудь знает?

Благо, что Ask и Bid MarketInfo() выдаёт нормально и приходится вычислять Spread как их разность.

 

Выяснилось, что в тестере TICKVALUE для не текущего символа также не возможно получить.Пришлось в тестируемом советнике TICKVALUE записывать в глобальную переменную терминала и читать её в индикаторе.  

Хотя, конечно, можно было сделать проще - задать значение TICKVALUE во внешней переменной.

 
khorosh:

Выяснилось, что в тестере TICKVALUE для не текущего символа также не возможно получить.Пришлось в тестируемом советнике TICKVALUE записывать в глобальную переменную терминала и читать её в индикаторе.  

Хотя, конечно, можно было сделать проще - задать значение TICKVALUE во внешней переменной.

тоже самое и для свопов

 
Давно отказался от MarketInfo. Перешел на Получение рыночной информации. И проблем стало поменьше, да и с написанием MQL4/5 проблем не возникает, т.к. тот-же SymbolInfoDouble нормально работает в обоих версиях.
 
Konstantin Nikitin:
Давно отказался от MarketInfo. Перешел на Получение рыночной информации. И проблем стало поменьше, да и с написанием MQL4/5 проблем не возникает, т.к. тот-же SymbolInfoDouble нормально работает в обоих версиях.
Свопы в МТ5 в тестере изменяются?
 
Konstantin Nikitin:
Давно отказался от MarketInfo. Перешел на Получение рыночной информации. И проблем стало поменьше, да и с написанием MQL4/5 проблем не возникает, т.к. тот-же SymbolInfoDouble нормально работает в обоих версиях.

SymbolInfoDouble(Symb2,SYMBOL_TRADE_TICK_VALUE) в тестере МТ4 эта функция тоже не работает(не выдаёт информацию), если символ не текущий, т.е. !=Symbol().

 
khorosh:

SymbolInfoDouble(Symb2,SYMBOL_TRADE_TICK_VALUE) в тестере МТ4 эта функция тоже не работает(не выдаёт информацию), если символ не текущий, т.е. !=Symbol().

Не следует забывать, что символ "Symb2" должен быть выбран в окне "Обзор рынка" и перед обращением к свойствам символа не будет лишним подёргать его за... сами знаете за что, но это не шутка.

Пока нет к символу обращения, его свойства ВСЕ не загружены, не обновлены.

 
Alexey Viktorov:

Не следует забывать, что символ "Symb2" должен быть выбран в окне "Обзор рынка" и перед обращением к свойствам символа не будет лишним подёргать его за... сами знаете за что, но это не шутка.

Пока нет к символу обращения, его свойства ВСЕ не загружены, не обновлены.

В окне "Обзор рынка"  символ присутствует. На всякий случай ещё перед вызовом  SymbolInfoDouble(Symb2,SYMBOL_TRADE_TICK_VALUE)  ещё поставил функцию SymbolSelect(Symb2,true); , но это не помогает. А как и за что дёргать не понял.

 
khorosh:

SymbolInfoDouble(Symb2,SYMBOL_TRADE_TICK_VALUE) в тестере МТ4 эта функция тоже не работает(не выдаёт информацию), если символ не текущий, т.е. !=Symbol().

Тестер МТ4 одновалютный. Получить подобные сведения о другом символе невозможно. Можно лишь ухищрениями разными (недокументированными, а потому - овчинка выделки не стоит), но прямого пути нет.

Кстати, при запросе Bid и Ask другого символа получите текущие реальные цены, а не те, которые соответствуют тестируемому периоду. Цены другого символа можно получить, если обращаться к таймсериям. Close - это Bid.

 
Ihor Herasko:

Тестер МТ4 одновалютный. Получить подобные сведения о другом символе невозможно. Можно лишь ухищрениями разными (недокументированными, а потому - овчинка выделки не стоит), но прямого пути нет.

Кстати, при запросе Bid и Ask другого символа получите текущие реальные цены, а не те, которые соответствуют тестируемому периоду. Цены другого символа можно получить, если обращаться к таймсериям. Close - это Bid.

Ну так из советника то вся инфа нормально получается о символах с других графиков, а вот в индикаторах нет.

Вроде всегда говорилось, что нельзя лишь открывать ордера других символов, а анализировать другие символы с целью получения сигнала для входа по текущей паре можно. Только вот такая возможность в эксперте есть, а в индикаторах почему то нет.

 
khorosh:

Ну так из советника то вся инфа нормально получается о символах с других графиков,

Я вчера специально попробовал вызвать из советника в тестере. Ожидаемо получил ошибку - 4106 (неизвестный символ). В онлайн все проходит хорошо.

а вот в индикаторах нет.

У индикатора будут такие же возможности, как у советника, если указать тип программы в тестере (вместо "Советник" выбрать "Индикатор"). Если индикатор просто прикреплен к окну визуализации, то это такой же индикатор, как и онлайн. Он знать ничего не знает о тестерном окружении.

Вроде всегда говорилось, что нельзя лишь открывать ордера других символов, а анализировать другие символы с целью получения сигнала для входа по текущей паре можно. Только вот такая возможность в эксперте есть, а в индикаторах почему то нет.

На самом деле даже с анализом информации по другим символам в МТ4 все очень печально. Что-то работает, а что-то нет. Часто приходится писать костыли, которые в реальной жизни не нужны.