ошибка 10013 - Неправильный запрос

 
Добрый день! На разных компах установлен МТ5(Build 642), на одном написан советник нормально тестируется и работает. Все исходники(путем копирования папки MQL5) переношу на другой комп , компиляция успешна, но при тестировании или работе ошибка 10013 - Неправильный запрос. Подскажите как разобраться не пойму?, вроде абсолютно все одинаково.
 

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

и там и там открывался стандартно по умолчанию предлагаемый демо-счет(MetaQuotes-Demo). Если это поможет то вот мой запрос

input double sl   = 2200;

input double tp   = 1000;

input double lots = 0.1;



bool OrderSELL(string InstrumentID)
  {
   FileWrite(fileHandle,""+TimeToString(TimeCurrent(),TIME_DATE|TIME_MINUTES|TIME_SECONDS)+" s-> Ордер SELL по "+InstrumentID+" по цене "+SymbolInfoDouble(InstrumentID,SYMBOL_BID));

   MqlTradeRequest MtRequest;
   MqlTradeResult MtResult;

   MtRequest.action= TRADE_ACTION_DEAL;
   MtRequest.magic = 888;
   MtRequest.symbol = InstrumentID;
   MtRequest.volume = SizeLots(InstrumentID, POSITION_TYPE_SELL)+lots;
   MtRequest.price=SymbolInfoDouble(InstrumentID,SYMBOL_BID);
   MtRequest.sl = MtRequest.price + (sl*SymbInfo.Point());
   MtRequest.tp = MtRequest.price - (tp*SymbInfo.Point());
   MtRequest.deviation=3;
   MtRequest.type=ORDER_TYPE_SELL;
   MtRequest.type_filling=ORDER_FILLING_FOK;
   FileWrite(fileHandle,"////-s-////транзакция SEL price="+MtRequest.price+" volume="+MtRequest.volume);
   if(!OrderSend(MtRequest,MtResult))
     {
      //Print("Ошибка открытия SELL "+MtResult.retcode);
      Print(ErrMTS.CodeError(MtResult.retcode));
      FileWrite(fileHandle,ErrMTS.CodeError(MtResult.retcode));
      return(false);
     }
   FileWrite(fileHandle,"////-s-////транзакция SEL конец");
   return(true);
  }
//+------------------------------------------------------------------+
double SizeLots(string InstrumentID,ENUM_POSITION_TYPE PosTyp)
  {
   double dblTotalLots=0;
   if(PositionSelect(InstrumentID)==false)
     {
      return(0);
     }

   if(PosTyp==PositionGetInteger(POSITION_TYPE))
     {
      return(0);
     }
   else dblTotalLots=PositionGetDouble(POSITION_VOLUME);
   return(dblTotalLots);
  }
//+------------------------------------------------------------------+

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций - Документация по MQL5
 

snik_666:

Вижу ставшей уже притчей во языцех фишку:

   MqlTradeRequest MtRequest;
   MqlTradeResult MtResult;

С осени прошлого года стали вылезать ошибки при использовании этой конструкции, поэтому было предложено обнулять переменные

   MqlTradeRequest MtRequest={0};
   MqlTradeResult MtResult={0};

Попробуйте. А вот почему на разных компьютерах разное поведение - это следующий вопрос.

 
Yedelkin:

Попробуйте. А вот почему на разных компьютерах разное поведение - это следующий вопрос.

Может зависеть от операционной системы и битности.
 
Rosh:
Может зависеть от операционной системы и битности.
так и получилось. На одном win7 64х.  а на хр  добавил
MqlTradeRequest MtRequest={0};
   MqlTradeResult MtResult={0};

и все заработало!   Спасибо!
 

Вроде бы писали что такое обнуление ,обнуляет только первый элемент в структуре.

MqlTradeResult MtResult={0};

 А ZeroMemory всю структуру.

 
Karlson:

Вроде бы писали что такое обнуление ,обнуляет только первый элемент в структуре.

Нет, что то вы путаете:) Инициализация переменных:

Для переменных типа структур допускается частичная инициализация, это же относится и к статическим массивам (с явно заданным размером). Можно проинициализировать один или несколько первых элементов структуры или массива, оставшиеся элементы в таком случае будут проинициализированы нулями.


 
Karlson:

Вроде бы писали что такое обнуление ,обнуляет только первый элемент в структуре.

 А ZeroMemory всю структуру.

Не, тогда Ренат пояснил мне, что во фразе MqlTradeRequest MtRequest={1} инициализируется единицей только первое поле, остальное - нули (я ожидал, что все поля будут равны 1). Действительно, не делал акцент на этом ранее при прочтении документации.

А вот и Рош добавил ссылку. 

 
snik_666:
так и получилось. На одном win7 64х.  а на хр  добавил
Добавьте везде, от греха подальше :)
 
Спасибо.Вот тогда я и не правильно понял про первый элемент.
Причина обращения: