Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 679

 

Estoy escribiendo un robot, conectando Ctrade, primero quiero empezar con una lógica donde hará una operación de Compra a precio de mercado al principio de cada hora, después de media hora venderá todo a un nuevo precio de mercado. Cuando lo pruebo en el probador, obtengo el error Tipo de pedido no válido.

Mi instrumento es SBER, mi cliente es Otkritie. Mi orden está en modo manual, mi orden no se pasa en la cuenta real o demo.

¿Cuál puede ser el error? ¿Es cierto que la bolsa no puede negociar a precio de mercado?

 
post_ek:

Estoy escribiendo un robot, conectando Ctrade, primero quiero empezar con una lógica donde hará una operación de Compra a precio de mercado al principio de cada hora, después de media hora venderá todo a un nuevo precio de mercado. Cuando lo pruebo en el probador, obtengo el error Tipo de pedido no válido.

Mi instrumento es SBER, mi cliente es Otkritie. Mi orden está en modo manual, mi orden no se pasa en la cuenta real o demo.

¿Cuál puede ser el error? ¿Es cierto que la bolsa no puede negociar a precio de mercado?

No puedo entender lo que has escrito sin tu código y por qué no te funciona.
 
Hola. Si el EA se ejecuta en un portátil y está en modo de hibernación, ¿funcionará el EA conectado en este caso?
 
Movlat Baghiyev:
Buenas tardes, si el EA se está ejecutando en un portátil y éste ha entrado en modo de hibernación, ¿funcionará el EA conectado en este caso?
Y habilitarás la impresora en el registro de cualquier valor y te enterarás. Si no se imprime es que no funciona.
 
Vitalie Postolache:
Y se incluirá la impresión en el registro de cualquier valor y se averiguará. Si no se imprime, no funciona.
Está claro... pensé que alguien podría compartir su experiencia con un novato
 
Movlat Baghiyev:
Buenos días, si el EA se está ejecutando en un ordenador portátil y éste se ha puesto en modo de suspensión, ¿funcionará el EA conectado en este caso?

El modo de hibernación suele ser el que apaga la unidad,

Hace poco instalé un servidor, y sólo el día 3 vi que el ordenador estaba dormido, es decir, no funcionaba, es decir, todos los EAs no funcionaban,

He desactivado el modo de hibernación y todo está bien.

 
Movlat Baghiyev:
Está claro ...me preguntaba si alguien podría compartir su experiencia con un novato.
Bueno en mi experiencia no hay mucho que funcione en hibernación, solo algunos servicios del sistema.
 
Movlat Baghiyev:
Hola, si el asesor se ejecuta en un ordenador portátil y está en modo de hibernación, ¿funcionará el asesor conectado en este caso?

No. No funcionará. En la configuración de la energía, ajuste la fuente de alimentación:

¡NO al modo de reposo!

 
Sergey Gritsay:
Sin su código, es difícil entender lo que ha escrito y por qué no funciona.
//+------------------------------------------------------------------+
//|                                                         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:

Esta no es la manera de hacerlo:

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

o más bien, después de tal declaración, debe inicializar explícitamente(asignar valores a) estas variables en OnInit().

El método Sell también debe estar rodeado de comprobaciones, como

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

Y también puede haber una pega: por la mañana, en la apertura de la negociación, la subasta no empieza inmediatamente, no desde el primer segundo, y es entonces cuando se pueden producir errores.