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

 

Hola a todos,

Estoy tratando de hacer un EA muy simple que compara dos precios de cierre y en base a eso abre una orden de compra o de venta.

Todo va bien en la primera orden, pero en cuanto la condición cambia de venta a compra, coloca varias órdenes a la vez.

m_trade es un objeto Ctrade.

// Current position information

bool Buy_openend = false;
bool Sell_openend = false;

double currentVolume = 0;

if(PositionSelect(_Symbol) == true)
  {
   if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
     {
      Buy_openend = true;
     }
      if (PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
     {
      Sell_openend = true;
      }   
        currentVolume = PositionGetDouble(POSITION_VOLUME);   
  } 

// Check for trade conditions

bool SellCondition = close <= closeprev && bar[1].time == startTime;
bool BuyCondition = close >= closeprev && bar[1].time == startTime;


// Entering trade

if(SellCondition)
  {
   if(Sell_openend)
   {
   Print("We already have a sell open");
   return;
   }
   m_trade.Sell(TradeVolume+currentVolume,_Symbol,m_symbol.Ask(),NULL,NULL,NULL);
  }
if(BuyCondition)
  {
   if(Buy_openend)
     {
      Print("We already have a buy open");
   return;
     }
     m_trade.Buy(TradeVolume+currentVolume,_Symbol,m_symbol.Bid(),NULL,NULL,NULL);
  }
 
Divania111 objeto Ctrade.

Olvidaste que el tiempo de 'startTime' necesita ser restablecido.

 
Vladimir Karputov #:

Te olvidaste de que el tiempo de 'startTime' debe ser restablecido.

Gracias Vladimir, trataré de arreglarlo basándome en tu sugerencia.

Sin embargo, todavía estoy sorprendido. Porque en la sentencia if para introducir una operación, comprobamos si existe una orden del mismo tipo. Si esto es cierto, entonces la orden no debe ser colocada. Así que pensé que con esta declaración sólo se puede introducir un tipo de orden al mismo tiempo.

¿Es este pensamiento incorrecto?

 
Divania111 # :

Gracias Vladimir, trataré de arreglarlo basándome en tu sugerencia.

Sin embargo, todavía estoy sorprendido. Porque en la sentencia if para introducir una operación, comprobamos si existe una orden del mismo tipo. Si esto es cierto, entonces la orden no debe ser colocada. Así que pensé que con esta declaración sólo se puede introducir un tipo de orden al mismo tiempo.

¿Es este pensamiento incorrecto?

Usted no controla los PEDIDOS de ninguna manera, sino que comprueba el número y el tipo de la POSICIÓN en el código. Además - usted trabaja incorrectamente con POSICIONES (error al usar 'PositionSelect(_Symbol)' si su tipo de cuenta es de cobertura). Su algoritmo tiene graves errores de diseño.

Lo que debe hacer

1. Trabajar EXCLUSIVAMENTE en el momento del nacimiento de una nueva barra. Si no hay una nueva barra - no haga nada, no haga movimientos innecesarios.

2. Este punto se dará a conocer después de completar el punto 1.

 
Hola. Puedes decirme si el comentario en void OnTick() está ralentizando el EA. Ponerlo en int OnInit() funciona mucho más rápido.
 
Marco Nicholas el comentario en void OnTick() está ralentizando el EA. Ponerlo en int OnInit() funciona mucho más rápido.

Sí, en MT5 ralentiza considerablemente la operación.

En OnInit sólo funciona una vez durante la inicialización y nada más.

 
Marco Nicholas el comentario en void OnTick() está ralentizando el EA. Ponerlo en int OnInit() funciona mucho más rápido.

¿Se refiere a la función Comment()?

Si es así, entonces es obvio. En la función OnInit(), el comentario sólo se actualizará una vez, mientras que en OnTick() el comentario podría acabar actualizándose en cada tick.

La solución es actualizar el comentario sólo cuando sea necesario. Si es estático, entonces se actualiza sólo en OnInit( ) y se borra en OnDeinit(), pero si es dinámico, entonces en OnTick () sólo se actualiza el comentario cuando se necesita cambiar.

EDIT: Este post fue hecho originalmente en el foro inglés.

 
Hola maestros, cuando uso la función SocketConnect() del lado del cliente , no puedo establecer una conexión con el servidor incluso después de rellenar los parámetros correctamente según las instrucciones del usuario, pero el servidor está normalmente disponible después de la prueba.
 

Buenos días a todos.

Tengo una pregunta

cómo hacer una consulta a sqlite para seleccionar una fila de un ticket.

La estructura de la base de datos es la siguiente:

símbolo-texto

billete - texto

pirce- real

s_l - real

t_p - real

necesitamos meter toda la cadena de tickets en la estructura

 
Hola, se puede utilizar Comment() en switch() en lugar del mismo Print.
Razón de la queja: