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

 
RogozaIV:
Recientemente he pasado de mql4 a mql5. Estoy probando un Asesor Experto en el Índice RTS y tengo un problema con la apertura de varias posiciones, aunque una de las condiciones para abrir una posición es si (...OrdersTotal()==0). ¿Por qué no funciona esta condición? ¿Qué puedo hacer para abrir una sola posición?

PedidosTotal

OrdersTotal Devuelve el número de órdenes activas.

PuestosTotal

PositionsTotal Devuelve el número de posiciones abiertas.


Nota

No debe haber confusión entre lasórdenes pendientes activas y las posiciones, que también se muestran en la pestaña "Comercio" del panel "Caja de herramientas". Una orden es un pedido para ejecutaruna operación, mientras que una posición es el resultado de una o másoperaciones.

Con la "compensación" de posiciones (ACCOUNT_MARGIN_MODE_RETAIL_NETTING yACCOUNT_MARGIN_MODE_EXCHANGE) sólo se puede abrir unaposición para cadasímbolo en cualquier momento y es el resultado de una o másoperaciones. Las posiciones y lasórdenes pendientes activas, que también se muestran en la pestaña "Comercio" del panel "Caja de herramientas", no deben confundirse entre sí.

En caso de representación independiente de las posiciones (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) se pueden abrir varias posiciones para cada símbolo simultáneamente.


Es decir, utilizandoOrdersTotal, se comprueba cuántos PEDIDOS AL POR MENOR hay en ese momento:

TIPO_DE_COMPRA_LIMITE

Orden pendiente de compra con límite

TIPO_DE_ORDEN_DE_VENTA_LIMITE

Orden pendiente de venta con límite

TIPO_DE_ORDEN_DE_COMPRA_STOP

Orden pendiente de compra

TIPO_DE_ORDEN_DE_VENTA_DE_PARADA

Orden pendiente de venta Stop

TIPO_DE_COMPRA_LIMITADA

Cuando se alcanza el precio de la orden, se coloca una orden pendiente de Límite de Compra al precio de LímiteStop

TIPO_DE_ORDEN_DE_VENTA_LIMITE

Cuando se alcanza el precio de la orden, se coloca una orden pendiente de Venta Limitada al precio de StopLimit


y hay que comprobar cuántas posiciones abiertas hay en ese momento:

TIPO_DE_POSICIÓN_DE_COMPRA

Comprar

POSICIÓN_TIPO_VENTA

Vender


- Para ello se debe utilizar PositionsTotal.

 

Vladimir Karputov ¡Gracias!

 
Agat:
Buenas tardes. Después de la última actualización de MT5 a la compilación 1604 mis indicadores ya no funcionan correctamente. Estoy usando
Los llamados indicadores "líquidos". Por ejemplo, tengo varios estocásticos multiperiodos en una ventana. Bueno, ahora los cortos están dibujados
Al igual que antes, los ligeramente más largos sólo dibujan unos pocos compases y los más largos no se dibujan en absoluto.

Tengo la impresión de que, de repente, han empezado a carecer de historia. ¿Podría decirme qué puede estar mal?
Resulta que el fallo se produjo en aquellas MT en las que no se abrieron los plazos inferiores. Tuve que abrir gráficos de M1 y superiores y todo estaba bien. El tema está cerrado.
 
Sí, te has emocionado demasiado pronto, cuando reinicias el terminal es lo mismo, tienes que pinchar en todos los gráficos cada vez.
Eso no es bueno, es imposible que funcione. ¿Alguien puede decir al menos una palabra sobre el fondo de la cuestión o no? Obviamente, la actualización tiene fallos.

¿A dónde se dirige la gente para estas preguntas?
 
¡Hola! 2017.06.02_17:45 GMT+3. Tengo una pregunta. El programa .mq5 escribió su cálculo de lote, -- el resultado, -- el programa en el probador de estrategias intenta abrir una operación con un lote prohibitivo. Porcentaje de riesgo 1,09. El tamaño del depósito es mayor que el depósito (por defecto 10.000 dólares). He intentado utilizar el archivo OOP estándar de la carpeta Include>Expert>Money>MoneyFixedRisk.mqh . Resultado: El programa intenta abrir una operación con lote cero. (0.00). Creo que... es un truco de los programadores de la corporación. ¿O me estoy perdiendo algo? Bueno, haz que tu EA sea inútil. Dobla el lote por el lado. Tal vez, ¿quién sabe lo que debería escribir, para que el Asesor Experto abra operaciones con el lote calculado, con el porcentaje de riesgo especificado? No puedo hacerlo yo mismo, estoy perdiendo el tiempo. Espero que los programadores de nuestra corporación no se ofendan. Adjunto el archivo incluido Lot.mqh . Espero que alguien responda. 18:00 GMT+3. Insertado a las 18:11 GMT+3.
Archivos adjuntos:
Lot.mqh  2 kb
 
Agat:
Buenas tardes. Después de la última actualización de MT5 a la compilación 1604 mis indicadores ya no funcionan correctamente. Estoy usando
Los llamados indicadores "líquidos". Por ejemplo, tengo varios estocásticos multiperiodos en una ventana. Bueno, ahora los cortos están dibujados
Al igual que antes, los ligeramente más largos sólo dibujan unos pocos compases y los más largos no se dibujan en absoluto.

Tengo la impresión de que, de repente, han empezado a carecer de historia. ¿Podría decirme qué puede estar mal?


¿Cómo se accede a la historia de otra época? ¿Qué controles realiza para el acceso? ¿Qué códigos de error obtienes?

 
Николай Никитюк:
¡Hola! 2017.06.02_17:45 GMT+3. Tengo una pregunta. El programa .mq5 escribió su cálculo de lote, -- el resultado, -- el programa en el probador de estrategias intenta abrir una operación con un lote prohibitivo. Porcentaje de riesgo 1,09. El tamaño del depósito es mayor que el depósito (por defecto 10.000 dólares). He intentado utilizar el archivo OOP estándar de la carpeta Include>Expert>Money>MoneyFixedRisk.mqh . Resultado: El programa intenta abrir una operación con lote cero. (0.00). Creo que... es un truco de los programadores de la corporación. ¿O me estoy perdiendo algo? Bueno, haz que tu EA sea inútil. Dobla el lote por el lado. Tal vez, ¿quién sabe lo que debería escribir, para que el Asesor Experto abra operaciones con el lote calculado, con el porcentaje de riesgo especificado? No puedo hacerlo yo mismo, estoy perdiendo el tiempo. Espero que los programadores de nuestra corporación no se ofendan. Adjunto el archivo incluido Lot.mqh . Espero que alguien responda. 18:00 GMT+3. Insertado a las 18:11 GMT+3.

Ejecute este EA:Money Fixed Risk- cambie ambos parámetros de entrada y vea las impresiones en la pestaña "Expertos" del terminal.
 

No puedo obtener ningún dato del indicador en mi indicador.

int OnInit()
  {  
   handle1=iMA(NULL,0,per1,0,MODE_LWMA,PRICE_CLOSE);
   handle2=iMA(NULL,0,PLength1,0,MODE_LWMA,PRICE_CLOSE);
  }
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   int copied1=CopyBuffer(handle1,0,0,toCount,TMP_Buf1);
   if(copied1<=0)
     {
      Sleep(50);
      for(int i=0;i<100;i++)
        {
         if(BarsCalculated(handle1)>0)
            break;
         Sleep(50);
        }
      copied1=CopyBuffer(handle1,0,0,toCount,TMP_Buf1);
      if(copied1<=0)
        {
         Print(__FUNCTION__+": copying indicator data failed. Error=",GetLastError());
         return(0);
        }
     }  
   int copied2=CopyBuffer(handle2,0,0,toCount,TMP_Buf2);
   if(copied2<=0)
     {
      Sleep(50);
      for(int i=0;i<100;i++)
        {
         if(BarsCalculated(handle2)>0)
            break;
         Sleep(50);
        }
      copied2=CopyBuffer(handle2,0,0,toCount,TMP_Buf2);
      if(copied2<=0)
        {
         Print(__FUNCTION__+": copying indicator data failed. Error=",GetLastError());
         return(0);
        }
     }
  }

No se copia nada. Las variables copiadas1/2 son siempre menores que cero. En el depurador no puedo pasar de este código. Cómo hacerlo correctamente, mi cabeza ya está rota.

 
Hmm... antes había un error 4806, ahora es 4807 cuando moví la creación de la manija a OnInit(). ¿Cómo se hace eso?
 
Creo que lo he descubierto. La manija no fue creada. No he inicializado todos los datos.
Razón de la queja: