необходим совет по работе с кросс-курсом

 

Приветствую. В самописном советнике определяю какая ВП(валютн.пара) используется. Для кросс-курса это делается, вообщем, так:

string VP = Symbol();

string symbol_forward = StringConcatenate(StringSubstr(VP,0,3),"USD");
string symbol_revers =StringConcatenate("USD",StringSubstr(VP,0,3));

Но результатом использования этих переменных почему-то является "нуль"?! Например:

Print("symbol_forward=",MarketInfo(symbol_forward,MODE_BID));
Print("symbol_revers=",MarketInfo(symbol_revers,MODE_BID));

дают "0"-и, т.е. цены БВ(базов.валюты) кросс-пары к USD(или ВК к USD) не определяются. Причем при прогоне в тестере ВП c прямой котировкой используемой выше БВ советник работает корректно.

Подскажите, плз, где туплю?



 

 
Serg2T писал(а) >>

Приветствую. В самописном советнике определяю какая ВП(валютн.пара) используется. Для кросс-курса это делается, вообщем, так:

string VP = Symbol();

string symbol_forward = StringConcatenate(StringSubstr(VP,0,3),"USD");
string symbol_revers =StringConcatenate("USD",StringSubstr(VP,0,3));

Но результатом использования этих переменных почему-то является "нуль"?! Например:

Print("symbol_forward=",MarketInfo(symbol_forward,MODE_BID));
Print("symbol_revers=",MarketInfo(symbol_revers,MODE_BID));

дают "0"-и, т.е. цены БВ(базов.валюты) кросс-пары к USD(или ВК к USD) не определяются. Причем при прогоне в тестере ВП c прямой котировкой используемой выше БВ советник работает корректно.

Подскажите, плз, где туплю?



А какие значения по самим символам выводятся symbol_forward и symbol_revers. Какие значения они принимают?

 
Serg2T >>:

Приветствую. В самописном советнике определяю какая ВП(валютн.пара) используется. Для кросс-курса это делается, вообщем, так:

string VP = Symbol();

string symbol_forward = StringConcatenate(StringSubstr(VP,0,3),"USD");
string symbol_revers =StringConcatenate("USD",StringSubstr(VP,0,3));

Но результатом использования этих переменных почему-то является "нуль"?! Например:

Print("symbol_forward=",MarketInfo(symbol_forward,MODE_BID));
Print("symbol_revers=",MarketInfo(symbol_revers,MODE_BID));

дают "0"-и, т.е. цены БВ(базов.валюты) кросс-пары к USD(или ВК к USD) не определяются. Причем при прогоне в тестере ВП c прямой котировкой используемой выше БВ советник работает корректно.

Подскажите, плз, где туплю?

Не знаю в чем проблема, по этому куску кода вроде всё верно но параметры для \symbol_revers = \ должны быть \ VP,3,3 \

 
Vinin >>:

А какие значения по самим символам выводятся symbol_forward и symbol_revers. Какие значения они принимают?

Скажем для пары EURGBP: symbol_forward - EURUSD, symbol_revers - USDEUR. Причем связка:

Print("symbol_forward=",MarketInfo(symbol_forward,MODE_BID));
Print("symbol_revers=",MarketInfo(symbol_revers,MODE_BID));
Print(MarketInfo("EURUSD",MODE_BID));

дает одинаковые значения (нулевые) цены. Почему?

 
Serg2T >>:

Скажем для пары EURGBP: symbol_forward - EURUSD, symbol_revers - USDEUR. Причем связка:

Print("symbol_forward=",MarketInfo(symbol_forward,MODE_BID));
Print("symbol_revers=",MarketInfo(symbol_revers,MODE_BID));
Print(MarketInfo("EURUSD",MODE_BID));

дает одинаковые значения (нулевые) цены. Почему?

EURUSD открыта в "обзор рынка" ?

 
Swan >>:

EURUSD открыта в "обзор рынка" ?

Да. И тут же запустив тестер на паре EURUSD  на том же временном периоде советник дает корректный результат.

 
Serg2T писал(а) >>

Скажем для пары EURGBP: symbol_forward - EURUSD, symbol_revers - USDEUR. Причем связка:

Print("symbol_forward=",MarketInfo(symbol_forward,MODE_BID));
Print("symbol_revers=",MarketInfo(symbol_revers,MODE_BID));
Print(MarketInfo("EURUSD",MODE_BID));

дает одинаковые значения (нулевые) цены. Почему?

Я спрашивал о наименованиях инструментов. Если они есть, и они правильные, то можно переходить к ценам.

 
Vinin >>:

Я спрашивал о наименованиях инструментов. Если они есть, и они правильные, то можно переходить к ценам.

Так ведь в ценах и проблема. Почему-то они равны нулю. А по логике для одной из переменных symbol_forward, symbol_revers цена должна быть >0. При этом для явного значения, скажем "EURUSD", цена тоже =0. А запустив тестер на паре EURUSD, все нормально функционирует. В чем проблема? Можете подсказать?

 
Serg2T писал(а) >>

Так ведь в ценах и проблема. Почему-то они равны нулю. А по логике для одной из переменных symbol_forward, symbol_revers цена должна быть >0. При этом для явного значения, скажем "EURUSD", цена тоже =0. А запустив тестер на паре EURUSD, все нормально функционирует. В чем проблема? Можете подсказать?

Для тестера надо сперва обратиться к другому инструменту явно. После этого он (инструмент) загружается и можно уже будет использовать MarketInfo(), но по другим инструментам функция будет возвращать цену открытия бара. Это касается нулевого бара только.

 

Не всегда составляющие кросса определяются просто. 

Я в свое время тоже над этим бился. Посмотрите мое решение в функции init - CrossArbitr

Да, и в symbol_revers уже указали на ошибочку - VP,3,3

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