почему-то MarketInfo(symbol,...) не возвращает цену для неосновной пары

 

Привет! Прошу прощения за возможно глупый вопрос. Но я не могу заставить MarketInfo() вернуть Bid для валюты, которая не является текущей для советника.


Например, в тестере для текущей пары EURGBP MarketInfo() возвращает bid 0 для пары EURUSD (MT4 build 220, EURUSD есть в списке валют)

проверял следующим кодом:

string symbol = Symbol();
Print("symbol: ", symbol, ", len:", StringLen(symbol), ", bid:", MarketInfo(symbol, MODE_BID));
symbol = StringSubstr(Symbol(), 0, 3) + "USD";
Print("symbol: ", symbol, ", len:", StringLen(symbol), ", bid:", MarketInfo(symbol, MODE_BID));

получается результат:

2009.01.04 01:24:13 2008.01.02 11:00 MACD Sample EURGBP,M15: symbol: EURUSD, len:6, bid:0

2009.01.04 01:24:13 2008.01.02 11:00 MACD Sample EURGBP,M15: symbol: EURGBP, len:6, bid:0.7389

Непонятно, что я делаю не так.


Заранее спасибо!

 
Скорее всего, не выдает сервер ДЦ информацию. Маркет инфо часто что-нибудь да не показывает.
 

Miksa, проверьте здесь

чтобы оба символа были в наличии...

 
vladevgeniy писал(а) >>
Маркет инфо часто что-нибудь да не показывает.

Приведите, пожалуйста, конкретный пример!

 
KimIV >>:

Miksa, проверьте здесь

чтобы оба символа были в наличии...

спасибо, как я написал в первом посте, символ EURUSD есть в списке (для выбранного в тестере EURGBP Bid выдается):


и если сделать EURUSD текущим, то Bid тоже возвращается:

2009.01.04 02:27:40 2008.12.02 18:30 MACD Sample EURUSD,M15: symbol: EURUSD, len:6, bid:1.2709
2009.01.04 02:27:40 2008.12.02 18:30 MACD Sample EURUSD,M15: symbol: EURUSD, len:6, bid:1.2709

получается, что MarketInfo() иногда не работает для нетекущего символа ?

 
Miksa писал(а) >>

Привет! Прошу прощения за возможно глупый вопрос. Но я не могу заставить MarketInfo() вернуть Bid для валюты, которая не является текущей для советника.

Например, в тестере для текущей пары EURGBP MarketInfo() возвращает bid 0 для пары EURUSD (MT4 build 220, брокер FXDD, EURUSD есть в списке валют)

проверял следующим кодом:

получается результат:

2009.01.04 01:24:13 2008.01.02 11:00 MACD Sample EURGBP,M15: symbol: EURUSD, len:6, bid:0

2009.01.04 01:24:13 2008.01.02 11:00 MACD Sample EURGBP,M15: symbol: EURGBP, len:6, bid:0.7389

Непонятно, что я делаю не так.

Заранее спасибо!

MarketInfo очень не надежная функция ... сервер брокера часто ее игнорирует, особенно вовремя новостей... Bid можно узнать через iClose... С Askом сложнее, нужно знать спред... Без Маркетинфо здесь не обойтись...

 
kharko >>:

MarketInfo очень не надежная функция ... сервер брокера часто ее игнорирует, особенно вовремя новостей... Bid можно узнать через iClose... С Askом сложнее, нужно знать спред... Без Маркетинфо здесь не обойтись...

kharko, большое спасибо, через iClose() все работает!


(странно, как мультивалютные советники работают через MarketInfo(), если эта функция так ненадежна)

 
KimIV >>:

Приведите, пожалуйста, конкретный пример!

 Примеров чтоли мало))))) Щас искать не буду. Сталкивался часто. Например разрешение на торговлю по инструменту, либо один из параметров не возвращается. Было было и не раз. 

 
Miksa >>:

kharko, большое спасибо, через iClose() все работает!


(странно, как мультивалютные советники работают через MarketInfo(), если эта функция так ненадежна)

 Вот так и работают)))) никак не работают. Было как-то в советнике который должен был открывать одновременно 2 сделки по 2 инструментам. Нужно было только одновременное открытие. Маркет инфо возвращал, что все нормально, торговля разрешена, можно открывать. А сделка только по 1 паер открывлась, по второй отлуп. Если руками попробовать открыть по ней, то выдавался отказ с формулировкой - торговля запрещена по инструменту. Да бывает что и более тривиальные вещи не работают.

 

Для загрузки истории по другому инструменту нужно к нему обратиться, например считать цену или время. После этого (после загрузки истории) можно использовать и МаркетИнфо(). Но это относится только к тестеру или оптимизатору. При работе на демо или реале такой проблемы нет.

Но при этом нельзя забывать, что тиковая история по другим инструментам не моделируется. Поэтому на нулевом баре известна только цена открытия.

 
vladevgeniy писал(а) >>
Примеров чтоли мало)))))

Я их коллекционирую, чтобы обходить при программировании. Надеялся, что Вы что-то новое для меня скажете :-)