Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Интересуешься социальным трейдингом? Прочти соответствующую статью!
smsplay
25
smsplay 2015.06.04 10:07 

Добрый день.

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

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

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

Допустим

string symbol="EURUSD"; 

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

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

khorosh
8043
khorosh 2015.06.04 10:21  
smsplay:

Добрый день.

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

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

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

Допустим

string symbol="EURUSD"; 

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

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

Надо в функции OrderSend() менять не только символ, но и цену открытия. Для этого запрашивать цену Bid и Ask по инструменту через функцию MarketInfo().
Ihor Herasko
8449
Ihor Herasko 2015.06.04 10:23  
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 и т. д.

smsplay
25
smsplay 2015.06.04 17:01  
Огромное спасибо!
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий