Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 96

 
Vadim Podoprigora:

¡Hola!

Por favor, ayúdame a escribir un EA.

La esencia del Asesor Experto: abre 4 órdenes de 1 lote.

2 para vender: usdchf; eurusd;

2 para comprar: gbpusd; usdjpy;

Al alcanzar un beneficio total de 5 pips, cierre todas las operaciones. Y empezar de nuevo.

¿4 lotes en total?

¿Y si no hay beneficios?

 
Vadim Podoprigora:

¡Hola!

Por favor, ayúdame a escribir un EA.

La esencia del Asesor Experto: abre 4 órdenes de 1 lote.

2 para vender: usdchf; eurusd;

2 para comprar: gbpusd; usdjpy;

Al alcanzar un beneficio total de 5 pips, cierre todas las operaciones. Y empezar de nuevo.

No es necesario duplicar su pregunta en diferentes hilos.

Póngase en contacto con Freelance.

 
Andrey Sokolov:

Saludos.

¿Puedes decirme cómo escribir la condición para que la acción se ejecute en la apertura de una nueva vela en el gráfico actual?

https://www.mql5.com/ru/articles/159
Обработчик события "новый бар"
Обработчик события "новый бар"
  • 2010.10.04
  • Konstantin Gruzdev
  • www.mql5.com
Язык программирования MQL5 позволяет решать задачи на совершенно новом уровне. Даже те задачи, которые уже вроде имеют решения, благодаря объектно-ориентированному программированию могут подняться на качественно новый уровень. В данной статье специально взят простой пример проверки появления нового бара на графике, который был преобразован в достаточно мощный и универсальный инструмент. Какой? Читайте в статье.
 

¡Hola! ¡Ayúdame a entender las matrices!

Necesito llenar un array con el indicador MASD. Según entiendo, hay datos: índice de la barra, valor deMODE_MAIN, valor deMODE_SIGNAL, es decir, el array debe ser de tipo tridimensional ( a [] [] []), ¿o qué? Si puede dar un ejemplo.

 

Sergey, ¿has utilizado alguna vez este código?

El artículo es bueno en general, pero es

datetime lastbar_time=SeriesInfoInteger(Symbol(),Period(),SERIES_LASTBAR_DATE);

muy peligroso. Para que funcione, hay que, como recomienda el baterista, "sacudir" el historial periódicamente. No he especificado en qué lugar.

En general, después de mucho sufrimiento, he llegado a la conclusión de que es mejor utilizar la función CopyRates()

Los mensajes sobre posibles errores los rellenamos cada uno si queremos.

bool newBar()
{
static datetime timeLastBar;
  MqlRates mqlRates[];
   int s = 0;
    do
     {
      s++;
     }
    while(CopyRates(_Symbol, PERIOD_CURRENT, 0, 1, mqlRates) < 0 && s < 7);
   bool ret = timeLastBar != mqlRates[0].time;
   if(ret)
    timeLastBar = mqlRates[0].time;
   return(ret);
}/*******************************************************************/
 
Alexey Viktorov:

Sergey, ¿has utilizado alguna vez este código?

El artículo es bueno en general, pero es

datetime lastbar_time=SeriesInfoInteger(Symbol(),Period(),SERIES_LASTBAR_DATE);

muy peligroso. Para que funcione, hay que, como recomienda el baterista, "sacudir" el historial periódicamente. No se especificó el lugar.

Alexey, dime, ¿cuándo te has encontrado con errores al utilizarlo? ¿Has tenido alguna vez uno?

Yo mismo utilizo este método y no he tenido problemas. Bueno, tal vez todavía tenga que hacerlo.

Me gustaría recibir algunas explicaciones, por así decirlo... :)

¿Dónde dijo eso el baterista?

 
Artyom Trishkin:

Alexei, dime, ¿cuándo te has encontrado con errores con este uso? ¿Lo has hecho alguna vez?

Porque yo mismo utilizo este método y todavía no me he encontrado con ningún problema. Bueno, tal vez todavía tenga que hacerlo.

Me gustaría recibir algunas explicaciones, por así decirlo... :)

¿Dónde ha dicho drubashka tal cosa?

https://www.mql5.com/ru/forum/89213

Hay ocho páginas de discusiones. Y no sólo drubashka, sino que Slawa dice que

Slawa:

¿Dónde ve usted un comportamiento inadecuado de esta función? ¿Has leído bien la documentación?

Devuelve información sobre el estado de los datos históricos. No actualiza la información, no inicia el intercambio de datos. Sólo devuelve lo que hay en este momento.

 
Artyom Trishkin:

Alexei, dime, ¿cuándo te has encontrado con errores con este uso? ¿Lo has hecho alguna vez?

Porque yo mismo utilizo este método y todavía no me he encontrado con ningún problema. Bueno, tal vez todavía tenga que hacerlo.

Me gustaría recibir algunas explicaciones, por así decirlo... :)

¿Dónde dijo eso el baterista?

Y aquí está el tic-tac.

Vladimir Karputov:
No funcionó en un símbolo en un terminal (en el marco temporal M15) - Estoy 99% seguro de que el problema es que el uso de otro marco de tiempo que necesito para "tirar" la historia todo el tiempo. Creo que es mejor hacerlo a través de CopyTime().
El problema no lo resuelve el gato por el lugar causal.
 
Artyom Trishkin:

Alexei, dime, ¿cuándo te has encontrado con errores con este uso? ¿Lo has hecho alguna vez?

Por lo que recuerdo, puede que no devuelva lo esperado si el TF es mayor que el actual.
 
Hola, tengo una pregunta sobre MT5.

Por ejemplo, en el terminal MT5 hay algunos Asesores Expertos (Muestra MACD y Promedios Móviles), pero si se quiere cambiar el manejador del indicador en el código de estos Asesores Expertos y poner un TF específico, por ejemplo PERIOD_H4, en lugar de "_Period", entonces en las pruebas por los precios de apertura del TF más alto, se produce el siguiente error de carga del indicador: no se puede cargar el indicador 'MACD' [4805] y como resultado: el probador se detuvo porque OnInit falló. ¿Cuál es su opinión? ¿Quizás estoy haciendo algo mal? ¿Es posible codificar el Asesor Experto para que sea probado para los precios abiertos de cualquier TF?

He intentado utilizar el indicador como uno personalizado, el error es el mismo.

Gracias de antemano por sus comentarios.

int OnInit(void)
{
//--- preparar la clase de comercio para controlar las posiciones si el modo de cobertura está activo
ExtHedging=((ENUM_ACCOUNT_MARGIN_MODE)AccountInfoInteger(ACCOUNT_MARGIN_MODE)==ACCOUNT_MARGIN_MODE_RETAIL_HEDGING);
ExtTrade.SetExpertMagicNumber(MA_MAGIC);
ExtTrade.SetMarginMode();
//--- Indicador de media móvil
ExtHandle=iMA(_Símbolo,PERIOD_H4,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE);
if(ExtHandle==INVALID_HANDLE)
{
printf("Error al crear el indicador MA");
return(INIT_FAILED);
}
//--- ok
return(INIT_SUCCEED);
}