Preguntas de los principiantes MQL4 MT4 MetaTrader 4 - página 144

 
Ihor Herasko:

Sí, por supuesto. La función se escribe de forma universal. Si lo abordamos en cada tic, el bucle recorre todo el historial de la cuenta. Y el historial de la cuenta puede ser bastante profundo (me he encontrado con casos en los que había más de 100 000 pedidos). Para acelerar la ejecución, no es necesario ejecutar el bucle en todo el historial cada vez. Basta con hacerlo una sola vez al principio y recordar el índice de la última orden procesada. La próxima vez que tenga que pasar por el bucle sólo para las órdenes que tienen un índice mayor que el índice almacenado. Después, vuelve a recordar el índice de la última orden, y así sucesivamente.

Gracias por la detallada explicación. Ahora sé hacia dónde mirar, por así decirlo. Por cierto, la cuenta demo funcionó bien con 5 EAs, en el sentido de que no se abrieron operaciones más de una vez durante la fecha actual y no hubo ningún retraso en la apertura de las 5 posiciones de EA.
 
Vitaly Muzichenko:

La culpa la tiene el diferencial flotante.

Yo también pensé eso al principio, pero también es cierto para los pares con spread fijo (como el DAX30) y para las redes que consisten en órdenes en una dirección (incluyendo una orden) - en este caso el spread es irrelevante (un precio determina el beneficio - ya sea sólo Bid o sólo Ask).

Vitaly, ¿he entendido por tu respuesta que no hay ningún error evidente en las fórmulas?

 
Igor Zakharov:

También pensé eso al principio, pero también es cierto para los pares con spread fijo (como DAX30) y para las redes que consisten en órdenes en una dirección (incluyendo una orden) - en este caso el spread es irrelevante (un precio determina el beneficio - ya sea sólo Bid o sólo Ask).

Vitaliy, ¿he entendido por tu respuesta que no hay ningún error evidente en las fórmulas?

Esta es la fórmula del trabajador:

 double poi=SymbolInfoDouble(mSymbol,SYMBOL_POINT);
 int dig=(int)SymbolInfoInteger(mSymbol,SYMBOL_DIGITS);
 double TickValue=SymbolInfoDouble(mSymbol,SYMBOL_TRADE_TICK_VALUE);

 double BuyAwerage=0,SellAwerage=0;
  if(_GetP.Buy._Lots>0)  BuyAwerage= NormalizeDouble(bid-(_GetP.Buy._AllProfit/( TickValue*_GetP.Buy._Lots ))*poi,dig);
  if(_GetP.Sell._Lots>0) SellAwerage=NormalizeDouble(ask+(_GetP.Sell._AllProfit/(TickValue*_GetP.Sell._Lots))*poi,dig);
 
Vitaly Muzichenko:

Esta es la fórmula del trabajador:

Es decir, el análogo completo. Mi fórmula es incluso un poco más universal: en general, el tamaño del tick puede no ser igual a un punto (a menudo se encuentra en los índices).

Gracias.

 

Hola.

Tal vez alguien también se ha encontrado con el siguiente fallo en MT4.

Estoy probando un sistema de trading multi-robot para una cuenta demo.

Pero periódicamente 1-2 veces al día hay una situación en la que el robot establece una orden de stop de compra o de venta que no funciona. Esta orden está resaltada en amarillo y si intenta eliminarla verá una advertencia sobre los parámetros desactivados.

El robot que lo fijó según el algoritmo debe continuar su trabajo, pero sólo lo hace para un precio que es mejor que el fijado en una orden incorrecta, es decir, para un Sell Stop para órdenes por encima y para un Buy Stop sólo para órdenes por debajo.

Si borro todas las demás órdenes (gracias a mi cuenta de demostración) y apago el terminal durante un tiempo, esta orden se activa como es debido y se cierra a la orden del programa o manualmente.

Por favor, indíquenos si esto tiene que ver con la cuenta demo o porque hay varios robots conectados a diferentes ventanas.

Este tipo de vinculación aumenta la calidad de todo el sistema, porque el terminal reacciona mucho mejor a las órdenes de los robots individuales que cuando todas las órdenes se combinan en un Asesor Experto. La ganancia en el tiempo de reacción del terminal es muy significativa y la puntualidad de la ejecución de los comandos es mucho mejor y óptima, si toda la lógica del sistema de comercio se reparte entre varios robots.

Sin embargo, me encuentro con el problema de la congelación de uno o dos pedidos.

Quizás alguien se haya enfrentado a este problema o sugiera una causa de funcionamiento incorrecto, así como una forma de solucionarlo.

Gracias de antemano.

 

en la imagen es verde, que no está en la configuración del terminal.

¿dónde puedo ver los colores que fijan los números?

ssb

 
Pavel Ipatov:

Pero de vez en cuando 1-2 veces al día el robot establece una orden de compra o venta que no funciona. Se resalta en amarillo y cuando se intenta eliminar, la ventana muestra una inscripción sobre los parámetros desactivados.

Esto ha ocurrido, y más de una vez. En mi caso, siempre ha sido culpa del broker, no del robot - si te pones en contacto con soporte, te lo quitarán a la fuerza. Si es una demo, yo abriría una nueva con otro broker.

 
Artsem:

en la imagen es verde, que no está en la configuración del terminal.

¿dónde puedo ver los colores que fijan los números?

ssb

Uh... photoshop.

 
Artsem:

en la imagen es verde, que no está en la configuración del terminal.

¿dónde puedo ver los colores que fijan los números?

ssb

  1. Haga clic en la flecha de la lista desplegable.
  2. Seleccione Personalizado.
  3. Verás una ventana como esta.

En la paleta seleccionas el color que quieres, o incluso puedes especificar manualmente valores numéricos: rojo, verde, azul.

 
Ihor Herasko:

  1. Haga clic en la flecha de la lista desplegable.
  2. Seleccione Personalizado.
  3. Aparecerá una ventana como ésta.

En la paleta, seleccione el color que desee o incluso puede especificar manualmente los valores numéricos: rojo, verde, azul.

Sí, no me di cuenta del botón personalizado.

No puedo cambiar el color a "numérico" en su panel.