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

 
Es posible queUpper[i] esté sin rellenar (igual a 0) en algunas barras.
 
Sergey Savinkin:
Es posible queUpper[i] no se llene en algunas barras (igual a 0).

Creo que he encontrado alguna pista para la solución: cuando la condición se escribe contra el estado actual del precio antes de ejecutar el código, el registro muestra lo siguiente:

Punto importante: estos parámetros coinciden con el precio ya generado anteriormente

Para aclarar:

La última línea del registro indica que el precio ha superado la línea superior. La única pregunta es ¿por qué lo hizo? Tengo una versión que durante el recálculo del indicador desde el principio hasta el momento actual el código registra estos eventos y se detiene en el último evento - explica la diferencia entre el precio y los datos de registro actuales, pero no explica nada más - necesito que el código haga una simple comparación en la lógica "el precio fue más allá de la línea superior - da la alerta pero no pasa nada".

También comprobé la condición del código cuando el precio está por debajo de la línea superior - simplemente no registró el evento en los registros, que está en la captura de pantalla de arriba - me detuve para entenderlo al final, si es que funciona.

 

Amigos míos, soy nuevo en MQL5, así que si los problemas que escribo aquí son culpa mía, por favor no me pateéis demasiado.

Quería hacer un búho multidivisa, pero me encontré con algunas cosas extrañas en el probador de estrategias que sólo aparecen al probar las multidivisas. Obtengo un extraño desplazamiento de los símbolos de las series temporales que no son el símbolo del gráfico principal. He hecho un búho simple que obtiene el cero y el tiempo de apertura de la primera barra por dos símbolos al principio de cada barra. Por alguna razón la serie de tiempo del segundo símbolo comienza a cambiar después de 1 barra. Aparece en cualquier símbolo y en cualquier marco temporal. He estado probando en EURUSD, el segundo símbolo fue GBPUSD. Lo he probado al revés, lo he probado en otros pares, siempre aparece el error. Esta es la foto del diario después de la prueba de М15:

Imagen de registro después de la prueba en H1:

Configuración del Probador de Estrategias:

Aquí está el código para la prueba:

#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
input string SecondSymbol="GBPUSD";

int OnInit()
  {
   SymbolSelect(SecondSymbol,true);//выбираем второй символ в MarketWatch(для тестера)
//---
   return(INIT_SUCCEEDED);
  }

void OnDeinit(const int reason)
  {
//---

  }

void OnTick()
  {
   static datetime BarTime;//время начала бара
   int per=PeriodSeconds(PERIOD_CURRENT);

   datetime time_curr=TimeCurrent()/per*per;
   if(time_curr!=BarTime)
     {
      BarTime=time_curr;

      datetime Time_One[],Time_Two[];
      bool yes=ArraySetAsSeries(Time_One,true);
      yes=ArraySetAsSeries(Time_Two,true);

      int i=CopyTime(NULL,PERIOD_CURRENT,0,2,Time_One);    //текущий символ
      i=CopyTime(SecondSymbol,PERIOD_CURRENT,0,2,Time_Two);//второй символ
      
      Print("ВремяНачалаБара по ",Symbol(),":",Time_One[0]," ВремяНачалаБара по ",SecondSymbol,":",Time_Two[0]);
     }
  }

Se agradecería cualquier ayuda.

 
stroganow:

Amigos míos, soy nuevo en MQL5, así que si los problemas que escribo aquí son culpa mía, por favor no me pateéis demasiado.

Quería hacer un búho multidivisa, pero me encontré con algunas cosas extrañas en el probador de estrategias que sólo aparecen al probar las multidivisas. Obtengo un extraño desplazamiento de los símbolos de las series temporales que no son el símbolo del gráfico principal. He hecho un búho simple que obtiene el cero y el tiempo de apertura de la primera barra por dos símbolos al principio de cada barra. Por alguna razón la serie de tiempo del segundo símbolo comienza a cambiar después de 1 barra. Aparece en cualquier símbolo y en cualquier marco temporal. Estaba probando en EURUSD, el segundo símbolo era GBPUSD. Lo he probado a la inversa, lo he probado en otros pares, siempre aparece el error. Esta es la foto del diario después de la prueba de М15:

Imagen de registro después de la prueba en H1:

Configuración del Probador de Estrategias:

El código para las pruebas:

Se agradecería cualquier ayuda.

El probador funciona correctamente. Hay un error en la lógica del programa: dos símbolos son como dos vidas de personas diferentes (aquí "persona" es análogo a "símbolo"). Y la segunda persona no tiene por qué despertarse al mismo tiempo que la primera ("despertarse" es análogo a " aparecer un nuevo bar").

Así que hay que esperar a que aparezca una nueva barra Y en el primer símbolo Y en el segundo.


Añadido:manejador del evento "nueva barra" del artículo

 

Me puedes decir, aquí hay una imagen de una barra alcista, ¿cómo debería ser el código principal de la condición para reconocerla?

if(low[i] <= open[i] && high[i] > close[i] && open[i] >= close[i] && close[i] <= Base[i]) // верно ли это утверждение?
 
clickaider:

Me puedes decir, aquí hay una imagen de una barra alcista, ¿cómo debería ser el código principal de la condición para reconocerla?

Esta es una barra bajista. La dirección de la vela no es importante. La posición de la sombra larga es importante: arriba es bajista, abajo es alcista. Y se requiere una confirmación de los indicadores de nivel.
 
Artyom Trishkin:
Esta es una barra bajista. La dirección de la vela no es importante. La posición de la sombra larga es importante: arriba es bajista, abajo es alcista. Y necesitamos la confirmación de los indicadores de nivel.
¿Podemos mostrarlo mediante una construcción de código? No está muy claro cómo debería ser el código
 
clickaider:
¿Es posible demostrarlo mediante la construcción de códigos? No está muy claro cómo debería ser el código
No puedo escribirte el código desde mi móvil. De un vistazo:
Necesitas el tamaño de la vela desde el máximo hasta el mínimo, el tamaño del cuerpo de la vela, el porcentaje del cuerpo con respecto al tamaño de la vela completa, el tamaño de la sombra corta no debe exceder un cierto umbral (para que esté ausente, o sea relativamente pequeña con respecto al cuerpo), y la ubicación de la parte superior/inferior del cuerpo con respecto al tamaño completo de la vela.
Algo así...
 
Artyom Trishkin:
No puedo escribirte el código desde mi teléfono móvil. De un vistazo:
Necesitas el tamaño de la vela desde el máximo hasta el mínimo, el tamaño del cuerpo de la vela, el porcentaje del cuerpo con respecto al tamaño de la vela completa, el tamaño de la sombra corta no debe exceder un cierto umbral (para que esté ausente, o sea relativamente pequeña con respecto al cuerpo), y la ubicación de la parte superior/inferior del cuerpo con respecto al tamaño completo de la vela.
Así que...

Gráficamente se ve así:

 
clickaider:

Gráficamente, tiene este aspecto:

Ahora describe con palabras lo que has descrito gráficamente. Usa alto, bajo, abierto, cerrado.
Una vez que lo describas con palabras, ya habrás escrito los términos de referencia para ti :)
Sólo queda sustituir las construcciones de palabras por código.