Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 679

 

Пишу робота, подключаю Ctrade, для начала хочу заложить логику по которой он в начале каждого часа будет заключать сделку Buy по рыночной цене, через пол часа будет все продавать (Sell) по новой рыночной цене. Тестирую в тестере - вылетает ошибка Invalid order type.

Инструмент SBER, клиент - Открытие. В ручном режиме сделки проходят, на реальном и демо-счете не пробоавл. 

В чем может быть ошибка? Правда ли, что на фондовом рынке нельзя заключать сделки по рыночной цене? 

 
post_ek:

Пишу робота, подключаю Ctrade, для начала хочу заложить логику по которой он в начале каждого часа будет заключать сделку Buy по рыночной цене, через пол часа будет все продавать (Sell) по новой рыночной цене. Тестирую в тестере - вылетает ошибка Invalid order type.

Инструмент SBER, клиент - Открытие. В ручном режиме сделки проходят, на реальном и демо-счете не пробоавл. 

В чем может быть ошибка? Правда ли, что на фондовом рынке нельзя заключать сделки по рыночной цене? 

без вашего кода не понять что вы там написали, и почему  у вас не работает.
 
Добрый день .Если советник работает на ноутбуке и  он ушел в спящий режим будет ли в этом случае работать подлключенный советник ?
 
Movlat Baghiyev:
Добрый день .Если советник работает на ноутбуке и  он ушел в спящий режим будет ли в этом случае работать подлключенный советник ?
А вы включите принт в журнал каких-либо значений и узнаете. Не принтует, значит не работает.
 
Vitalie Postolache:
А вы включите принт в журнал каких-либо значений и узнаете. Не принтует, значит не работает.
Это ясно ..Я думал может ктото поделиться опытом с новичком
 
Movlat Baghiyev:
Добрый день .Если советник работает на ноутбуке и  он ушел в спящий режим будет ли в этом случае работать подлключенный советник ?

как правило в спящем режиме отключается винт, 

недавно я устанавливал сервер, и только на 3 день увидел, что комп спит, тоесть не пашет, т.е. все советники не работали,

отключил спящий режим, все ок.  

 
Movlat Baghiyev:
Это ясно ..Я думал может ктото поделиться опытом с новичком
Ну по моему опыту в спящем режиме мало что работает, только некоторые  службы системные.
 
Movlat Baghiyev:
Добрый день .Если советник работает на ноутбуке и  он ушел в спящий режим будет ли в этом случае работать подлключенный советник ?

Нет. Не будет работать. В настройках электропитания поставьте:

НЕТ спящему режиму!

 
Sergey Gritsay:
без вашего кода не понять что вы там написали, и почему  у вас не работает.
//+------------------------------------------------------------------+
//|                                                         Gear.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"

#include <Trade/Trade.mqh>
CTrade  trade;

bool TimeFlag, FLG;
int TimeScale=50, TimeInMemory, TimeNow;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
  
  //---Блок получения информации с биржи    
  MqlTick oCurrentTick;
  SymbolInfoTick(Symbol(), oCurrentTick);
//---Блок определения начала нового временного интервала
   TimeFlag=false;
   datetime tm=TimeCurrent();
   MqlDateTime stm;
   TimeToStruct(tm,stm);
   if(MathMod(StringToInteger((string)stm.min),TimeScale)==0)
     {
      TimeNow=StringToInteger((string)stm.min);
     }
   if(TimeNow != TimeInMemory)
     {
      TimeInMemory=TimeNow;
      TimeFlag=true;
      //Print(_Symbol);
     }
    
     if(TimeFlag)
       {
       if(FLG)
         {
   if(!trade.Buy(1,_Symbol))
     {
      //--- сообщим о неудаче
      Print("Метод Buy() потерпел неудачу. Код возврата=",trade.ResultRetcode(),
            ". Описание кода: ",trade.ResultRetcodeDescription());
     }
   else
     {
      Print("Метод Buy() выполнен успешно. Код возврата=",trade.ResultRetcode(),
            " (",trade.ResultRetcodeDescription(),")");
     }
         FLG=false;
         }
       else
         {
         trade.Sell(1);
         FLG=true;
         }
       }
  }
//+------------------------------------------------------------------+
 
 
post_ek:
 

Так делать нельзя:

bool TimeFlag,FLG;
int TimeScale=50,TimeInMemory,TimeNow;

точнее после такого объявления обязательно в OnInit() нужно явно проинициализировать (присвоить значения) этим переменным.

Метод Sell также обложите проверками, вроде

trade.ResultRetcode(),
            " (",trade.ResultRetcodeDescription(),")");

А ещё может быть одна загвоздка - утром, при открытии торгов, торги идут не сразу, не с первой секунды - вот в этот момент возможны ошибки.

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