РАЗРАБОТЧИКАМ и НЕ ТОЛЬКО!! ФУНКЦИЯ OrderSend

 

Хочу открывать ордера на других валютных парах, нежели чем пара на которой загружен советник.........................

Бьюсь уже несколько дней.........с ума чуть не сошел!! Вроде все просто! А не открывает позы на демке!

Функция :

OrderSend("GBPUSD",OP_BUY, 1, iClose("GBPUSD",60,0), 5, 0, 0, "111", 100222, 0, CLR_NONE);

Советник загружен на EURUSD. При компиляции ошибок нет. Тестирую только одну функцию...

Если загрузить на GBPUSD - то открывает.

БИЛД-218, работа на демо счете, пробовал на МТ многих брокерах - таже картина.

Может подскажите - в чем дело?

 
Проанализируйте возвращаемую ошибку после попытки открытия ордера. Получить код ошибки можно функцией GetLastError().
 

В ТОМ-ТО И ДЕЛО !!

ОШИБОК НИКАКИХ НЕТ!

текст СУПЕР советника : )

//+------------------------------------------------------------------+
//| 444.mq4 |
//| Copyright © 2008, MetaQuotes Software Corp. |
//| https://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link "https://www.metaquotes.net/"

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
/////int init()
//// {
//----

//----
//// return(0);
//// }
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
////int deinit()
//// {
//----

//----
//// return(0);
//// }
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
OrderSend("GBPUSD",OP_BUY, 1, iClose("GBPUSD",60,0), 5, 0, 0, "111", 100222, 0, CLR_NONE);
//----
return(0);
}
//+------------------------------------------------------------------+

 

Если указать так:

OrderSend(Symbol(),OP_BUY, 1, Ask, 5, 0, 0, "111", 100222, 0, CLR_NONE);

- открывает ордер по текущей паре

если так: OrderSend("GBPUSD",OP_BUY, 1, iClose("GBPUSD",60,0), 5, 0, 0, "111", 100222, 0, CLR_NONE);

или так : OrderSend("GBPUSD",OP_BUY, 1, Ask, 5, 0, 0, "111", 100222, 0, CLR_NONE);
- ошибок нет, как и открытых ордеров тоже.

Помогите пож-та разобраться!!!!!!!!

....... (советник наложен на EURUSD)

 
iClose это значение цены по Биду, а ордера на покупку открываются по Аску. Используй MarketInfo.
 

Кому еще интересно:

Если указывать функцию так на продажу : OrderSend("GBPUSD",OP_SELL, 1, iClose("GBPUSD",60,0), 5, 0, 0, "444", 100222, 0, CLR_NONE); - РАБОТАЕТ,а с MarketInfo НЕ РАБОТАЕТ!!!!

Для покупки - ни с MarketInfo, ни с iClose - НЕ РАБОТАЕТ!!!!!!!

 
Tsyrus :

Кому еще интересно:

Если указывать функцию так на продажу : OrderSend("GBPUSD",OP_SELL, 1, iClose("GBPUSD",60,0), 5, 0, 0, "444", 100222, 0, CLR_NONE); - РАБОТАЕТ,а с MarketInfo НЕ РАБОТАЕТ!!!!

Для покупки - ни с MarketInfo, ни с iClose - НЕ РАБОТАЕТ!!!!!!!

Ну вот, у всех работает, а у тебя нет.:-)

 
Roger :
Tsyrus :

Кому еще интересно:

Если указывать функцию так на продажу : OrderSend("GBPUSD",OP_SELL, 1, iClose("GBPUSD",60,0), 5, 0, 0, "444", 100222, 0, CLR_NONE); - РАБОТАЕТ,а с MarketInfo НЕ РАБОТАЕТ!!!!

Для покупки - ни с MarketInfo, ни с iClose - НЕ РАБОТАЕТ!!!!!!!

Ну вот, у всех работает, а у тебя нет.:-)

Если уж быть точным до конца ТО:

BUY работает только с MarketInfo (например- MarketInfo("EURJPY",MODE_ASK) )

а SELL только с iClose (например- iClose("EURJPY",60,0) ) !!!!!!!

и думаю шо и у ВСЕХ также работает!!

 
Tsyrus :

Хочу открывать ордера на других валютных парах, нежели чем пара на которой загружен советник.........................

OrderSend("GBPUSD",OP_BUY, 1, iClose("GBPUSD",60,0), 5, 0, 0, "111", 100222, 0, CLR_NONE);

Советник загружен на EURUSD. При компиляции ошибок нет.Тестирую только одну функцию...

Если загрузить на GBPUSD - то открывает.

БИЛД-218, работа на демо счете, пробовал на МТ многих брокерах - таже картина.

Может подскажите - в чем дело?

Имеется ввиду, что прогоняешь в тестере? Тогда правильно, не будет работать, тестер - одновалютный. А так, у меня один советник открывает ордера на всех валютах и ДО СИХ ПОР РАБОТАЕТ!!!!

 
Roger :
Tsyrus :

Хочу открывать ордера на других валютных парах, нежели чем пара на которой загружен советник.........................

OrderSend("GBPUSD",OP_BUY, 1, iClose("GBPUSD",60,0), 5, 0, 0, "111", 100222, 0, CLR_NONE);

Советник загружен на EURUSD. При компиляции ошибок нет.Тестирую только одну функцию...

Если загрузить на GBPUSD - то открывает.

БИЛД-218, работа на демо счете, пробовал на МТ многих брокерах - таже картина.

Может подскажите - в чем дело?

Имеется ввиду, что прогоняешь в тестере? Тогда правильно, не будет работать, тестер - одновалютный. А так, у меня один советник открывает ордера на всех валютах и ДО СИХ ПОР РАБОТАЕТ!!!!

У меня советник мультивалютный, но открыт на Еве. А ордера не открывает на демке, о тестере и речи НЕТ!!

Да просто накиньте выше указанный советник(для теста с одной функцией) и проверьте!

На SELL работает только с iClose : OrderSend("GBPUSD",OP_SELL, 1, iClose("GBPUSD",60,0), 5, 0, 0, "111", 100222, 0, CLR_NONE);
На BUY работатет только с MarketInfo : OrderSend("GBPUSD",OP_BUY, 1, MarketInfo ("GBPUSD",MODE_ASK), 5, 0, 0, "111", 100222, 0, CLR_NONE);

Я к чему пишу ? ПРОСТО неудобно, довели бы бы до УМА данную функцию.

 
Tsyrus :

Я к чему пишу ? ПРОСТО неудобно, довели бы бы до УМА данную функцию.

До чьего УМА? Поставь эти функции и сам проверь:

OrderSend("GBPUSD",OP_BUY, 1, MarketInfo ("GBPUSD",MODE_ASK), 5, 0, 0, "111", 100222, 0, CLR_NONE); 
OrderSend("GBPUSD",OP_SELL, 1, MarketInfo ("GBPUSD",MODE_BID), 5, 0, 0, "111", 100222, 0, CLR_NONE); 
Что за идиотская привычка винить в своей тупости всех остальных :-(
Причина обращения: