Мульти инструментальность в советнике

 

Добрый день.

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

Сейчас при открытии ордера, если пытаешься подставить не тот инструмент, к которому прикреплен советник возвращается ошибка 129.

Вижу, что есть такие советники, но не понимаю как это сделать.

Допустим

string symbol="EURUSD"; 

OrderSend(symbol,0,1,Ask,0,0,0); 

Если советник прикреплен к графику инструмента EURUSD, то все отлично, если выбрать другой инструмент, то ошибка. 

 
smsplay:

Добрый день.

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

Сейчас при открытии ордера, если пытаешься подставить не тот инструмент, к которому прикреплен советник возвращается ошибка 129.

Вижу, что есть такие советники, но не понимаю как это сделать.

Допустим

string symbol="EURUSD"; 

OrderSend(symbol,0,1,Ask,0,0,0); 

Если советник прикреплен к графику инструмента EURUSD, то все отлично, если выбрать другой инструмент, то ошибка. 

Надо в функции OrderSend() менять не только символ, но и цену открытия. Для этого запрашивать цену Bid и Ask по инструменту через функцию MarketInfo().
 
smsplay:

string symbol="EURUSD"; 

OrderSend(symbol,0,1,Ask,0,0,0); 

Если советник прикреплен к графику инструмента EURUSD, то все отлично, если выбрать другой инструмент, то ошибка. 

Нужно использовать цены соответствующего символа:

string symbol = "EURUSD";
double ask = SymbolInfoDouble(symbol, SYMBOL_ASK);
int ticket = OrderSend(symbol, OP_BUY, 1.0, ask, 0, 0.0, 0.0);

 То же самое касается обращения к историческим данным другого символа. Вместо High, Low и т. д. следует использовать iHigh, iLow и т. д.

 
Огромное спасибо!
Причина обращения: