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

 
Aleksey Vyazmikin:

Por favor, ayúdenme a crear una función.

Tengo una TF actual y una TF estimada, la función debería devolver la diferencia entre las dos TFs en cualquier combinación, si la medición fuera en barras

Cálculo TF 15 15 15 60 60 60 240 240 240
TF actual 15 5 1 15 5 1 60 15 5
Diferencia de Nbar 1 3 15 4 12 60 4 16 48

¿Cómo aplicarlo correctamente?


Lo hice así.

int TFk()
{
   int K=0;
   K=TF_transfer(TF)/TF_transfer(Period());
//   Print(TF_transfer(TF),"   ",TF_transfer(Period()));
//Print (K);
   if   (K<1)return(1);
   else      return(K);
}


int TF_transfer(ENUM_TIMEFRAMES tf)
  {
   if (tf==PERIOD_CURRENT) return(0);
   if (tf==PERIOD_M1) return(1);
   if (tf==PERIOD_M5) return(5);
   if (tf==PERIOD_M15) return(15);
   if (tf==PERIOD_M30) return(30);
   if (tf==PERIOD_H1) return(60);
   if (tf==PERIOD_H4) return(240);
   if (tf==PERIOD_D1) return(1440);
   if (tf==PERIOD_W1) return(10080);
   if (tf==PERIOD_MN1) return(43200);  
   if (tf==PERIOD_M2) return(2);
   if (tf==PERIOD_M3) return(3);
   if (tf==PERIOD_M4) return(4);
   if (tf==PERIOD_M6) return(6);
   if (tf==PERIOD_M10) return(10);
   if (tf==PERIOD_M12) return(12);
   if (tf==PERIOD_H2) return(120);
   if (tf==PERIOD_H3) return(180);  
   if (tf==PERIOD_M6) return(360);
   if (tf==PERIOD_H8) return(480);
   if (tf==PERIOD_H12) return(720);
   return(1);
  }

El problema es que necesito esta felicidad para el indicador, pero no quiere inicializarse correctamente y a este código

int OnInit()
  {
   Print ("K=",TFk()," Период=",Period());

return(INIT_SUCCEEDED); }

Reacciona así:

2017.09.22 14:23:27.742 donchian_channel_prognoz_MTF (Eu Splice,M5) K=3 Period=5

2017.09.22 14:23:27.776 donchian_channel_prognoz_MTF (Eu Splice,M5) test

2017.09.22 14:23:27.790 donchian_channel_prognoz_MTF (Eu Splice,M15) K=1 Period=15

¡Lo más confuso es que imprime una prueba que ya está en el cuerpo de OnCalculate!

if(BarsCalculated(handle)<0) {Print ("test");return(0);}

La primera vez el plazo se definió correctamente, pero la segunda vez no...

No sé qué tiene de extraño...

Aunque lo sé, es la llamada del indicador... corriendo en círculos...
 
Aleksey Vyazmikin:

Lo hice así

El problema es que necesito esta felicidad para el indicador, pero es raro y no quiere inicializar correctamente, en respuesta a este código

Reacciona así:

2017.09.22 14:23:27.742 donchian_channel_prognoz_MTF (Eu Splice,M5) K=3 Period=5

2017.09.22 14:23:27.776 donchian_channel_prognoz_MTF (Eu Splice,M5) test

2017.09.22 14:23:27.790 donchian_channel_prognoz_MTF (Eu Splice,M15) K=1 Period=15

¡Lo más confuso es que imprime una prueba que ya está en el cuerpo de OnCalculate!

La primera vez el plazo se definió correctamente, pero la segunda vez no...

No sé qué son estas maravillas.

Aunque lo sé, es llamar al indicador desde el indicador... corriendo en círculos...

¿Por qué tengo que pasar por todas esas molestias?

¿No es más fácil?

K = PeriodSeconds(TF)/PeriodSeconds(Period());
 
Alexey Viktorov:

¿Qué es lo que pasa con todos los giros y vueltas?

¿No sería eso más fácil?


Así que el hilo es para principiantes, por eso no conocía esta posibilidad, gracias por señalarlo.

 

¿Puedes decirme cuál es la función más fiable deiBarShift con dos TFs ahora mismo?

Tengo la tarea de encontrar, por ejemplo, en una barra de minutos el valor del indicador de la TF superior, por ejemplo, M15. Los plazos pueden ser cualesquiera, lo que complica la solución.

Durante una hora TF, hice a través de la estructura, pero si es M15, entonces aquí estoy confundido ...

 
Aleksey Vyazmikin:

¿Puedes decirme cuál es la función más fiable de iBarShift con dos TFs ahora mismo?

Tengo la tarea de encontrar, por ejemplo, en una barra de minutos el valor del indicador de la TF superior, por ejemplo, M15. Los plazos pueden ser cualesquiera, lo que complica la solución.

Durante una hora TF, hice a través de la estructura, pero si es M15, aquí estoy confundido ...

Girar este script:Buscar el bar más cercano

 
Vladimir Karputov:

Girar este script:Buscar el bar más cercano


Gracias.

 
Aleksey Vyazmikin:

Así que el hilo es para principiantes, por eso no conocía esta función, gracias por el aviso.

Aleksey, mql4 lo tiene desde hace tiempo.


Aleksey Vyazmikin:

¿Puedes decirme cuál es la función más fiable de iBarShift con dos TFs ahora mismo?

Tengo la tarea de encontrar, por ejemplo, en una barra de un minuto el valor del indicador de la TF superior, por ejemplo M15. Los plazos pueden ser cualesquiera, lo que complica la solución.

Para una hora TF, hice a través de la estructura, pero si es M15, estoy confundido aquí ...

En este caso debes intentar olvidarte de la numeración de las barras como era en mql4. En mql5 todo está casi resuelto en tiempo de barra. En caso de necesidad, puede utilizar la función Bars().

int  Bars(
   string           symbol_name,     // имя символа
   ENUM_TIMEFRAMES  timeframe,       // период
   datetime         start_time,      // с какой даты
   datetime         stop_time        // по какую дату
   );
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
  • www.mql5.com
Доступ к таймсериям и индикаторам / Bars - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov:
Alexei, mql4 ya lo tiene desde hace tiempo.

Aparentemente esto demuestra que tampoco conozco bien mql4, cosa que nunca he afirmado...

Alexey Viktorov:

Y en este caso trata de olvidarte de la numeración de las barras como era en mql4. En mql5 todo está casi resuelto en tiempo de barra. En caso de necesidad, intente utilizar la función Bars().

¿Está seguro del redondeo?

Supongamos que la hora en m1 es 14:44, pero necesito 14:30 (primer compás de M15).

 
Aleksey Vyazmikin:

Aparentemente esto demuestra que tampoco conozco bien mql4, cosa que nunca he afirmado...

¿Estás seguro del redondeo?

Digamos que el tiempo en m1 es 14:44 y necesito obtener un tiempo de 14:30 (primer compás de m15).

Esto es algo de otra serie. ¿Qué necesita para llegar a las 14:44 desde el período de barra M15 de las 14:30? Coge la función Copy**** en ella pon PERIOD_M15 y el tiempo 14:44 a ver que obtienes. Y cuando el resultado no sea el esperado, las preguntas serán otras.

 
Alexey Viktorov:

Es algo de otra serie. ¿Qué necesita para llegar a las 14:44 desde el período de barra M15 de las 14:30? Coge la función Copy**** en ella pon PERIOD_M15 y el tiempo 14:44 a ver que obtienes. Y cuando el resultado no sea el esperado, las preguntas serán otras.


Sí, esa era la dirección en la que estaba trabajando. En definitiva, me han ayudado. Gracias a ti también.