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

 
Alexey Kozitsyn:
A través de un archivo, por ejemplo...

si no es mucha molestia, un poco más de detalle.

 
виталик:

si no te importa, un poco más de detalle.

Para extraer citas, utilice las funciones de copia:

https://www.mql5.com/ru/docs/series

A continuación, https://www.mql5.com/ru/docs/files es un enlace a las operaciones de archivo.

Документация по MQL5: Файловые операции
Документация по MQL5: Файловые операции
  • www.mql5.com
Файловые операции - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Buenas noches, estoy haciendo un patrón de "rieles", pero no consigo que funcione.... ¿pueden ver qué es lo que falla? Gracias de antemano.
Archivos adjuntos:
jzogyr2.mq4  6 kb
 
sviter-pro:
Buenas noches, estoy haciendo un patrón de "rieles", pero no consigo que funcione.... ¿pueden ver qué es lo que falla? Gracias de antemano.

int OnInit()
  {

   SetIndexBuffer(0,BuyTrain); SetIndexStyle(0,DRAW_ARROW,EMPTY,RazmerStrelok,coloru); SetIndexArrow(0,159); SetIndexEmptyValue(0,EMPTY_VALUE);
   SetIndexBuffer(1,SelTrain); SetIndexStyle(1,DRAW_ARROW,EMPTY,RazmerStrelok,colord); SetIndexArrow(1,159); SetIndexEmptyValue(1,EMPTY_VALUE);

   return(INIT_SUCCEEDED);
  }

Y estas condiciones nunca se cumplirán

   double high2=0.0,high3=0.0,high4=0.0,high5=0.0,high6=0.0,high7=0.0,size1=0.0,size2=0.0,body1=0.0,body2=0.0;

      if(Close1<Open1 && Close2>Open2
         && MathAbs(High1-High2)<=5*Point
         && high3<high2
         && high4<high2
         && high5<high2
         && high6<high2
         && high7<high2
         && body1 >= size1 * 0.7
         && body2 >= size2 * 0.7
         && size1 >= 20 * Point && size2 >= 20 * Point)
        {
         BuyTrain[i]=low[i]-OtstupStrelok*Point;
        }
      if(Close1>Open1
         && Close2<Open2
         && MathAbs(Low1-Low2)>=5*Point
         && high3>high2
         && high4>high2
         && high5>high2
         && high6>high2
         && high7>high2
         && body1 <= size1 * 0.7
         && body2 <= size2 * 0.7
         && size1 <= 20 * Point
         && size2 <= 20 * Point)
        {
         SelTrain[i]=high[i]-OtstupStrelok*Point;
        }
 

Buenas tardes. La tarea es la siguiente: tengo que determinar cuántos bares habrá antes de las próximas 01.00 horas. Lo he hecho hasta ahora con un bucle, pero quizás sea más correcto hacerlo de alguna manera con iBarShift? ¿Tal vez sea más correcto hacerlo de forma diferente?

      int ShiftBar=0;
      for(int cnt=0; cnt<100; cnt++)
        {
         int hour=TimeHour(iTime(Symbol(),PERIOD_M30,cnt));
         if(hour==1)
           {
            ShiftBar=cnt;
            break;
           }
        }
        Print("ShiftBar= ",ShiftBar);
 
Nauris Zukas:

Buenas tardes. La tarea es la siguiente: tengo que determinar cuántos bares habrá antes de las próximas 01.00 horas. Lo he hecho hasta ahora con un bucle, pero quizás sea más correcto hacerlo de alguna manera con iBarShift? ¿Quizás sea más correcto hacerlo de otra manera?

Para una transición más fácil a mql5 en el futuro, sería mejor utilizar funciones que se usan en ambos lenguajes. Para buscar el número de barras es mejor utilizar

int  Bars(
   string           symbol_name,     // имя символа
   ENUM_TIMEFRAMES  timeframe,       // период
   datetime         start_time,      // с какой даты
   datetime         stop_time        // по какую дату
   );

En realidad, iBarShift() hará el trabajo mejor que cycle.

Bars - Доступ к таймсериям и индикаторам - Справочник MQL4
Bars - Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
Bars - Доступ к таймсериям и индикаторам - Справочник MQL4
 
Alexey Viktorov:

Para una transición más fácil a mql5 en el futuro, es mejor utilizar las funciones que se usan en ambos lenguajes. Para buscar el número de barras es mejor utilizar

iBarShift() puede manejar esta tarea mejor que cycle.

Sí, pero el problema está en encontrar la 01.00 horas más cercana. ¿Cómo lo vas a encontrar?
int iBarShift(
símbolo de cadena,// símbolo
inttimeframe, // período
datetimetiempo, // tiempo ?????????
bool exact=false // modo
);
 
Nauris Zukas:
Sí, pero el problema es encontrar la 01.00 horas más cercana. ¿Cómo se determina esto?
int iBarShift(
símbolo de cadena,// símbolo
inttimeframe, // período
datetimetiempo, // tiempo ?????????
bool exact=false // modo
);

Foro sobre trading, sistemas de trading automatizados y comprobación de estrategias

Cualquier pregunta para principiantes sobre MQL4, ayuda y discusión sobre algoritmos y códigos

Alexey Viktorov, 2017.07.27 13:54

Si quieres hacer una transición sin problemas a mql5 en el futuro, sería mejor utilizar funciones que se usan en ambos lenguajes. Para buscar el número de barras es mejor utilizar

int  Bars(
   string           symbol_name,     // имя символа
   ENUM_TIMEFRAMES  timeframe,       // период
   datetime         start_time,      // с какой даты
   datetime         stop_time        // по какую дату
   );

En principio, iBarShift() puede manejar esta tarea mejor que un ciclo.

Devolverá el número de barras entre el tiempo especificado y el tiempo actual, si el tiempo de la barra actual se especifica como stop_time.

El único problema es que nunca lleno mi celda de memoria con cosas tan innecesarias como que el valor obtenido será igual, dada una barra con el tiempo especificado, o menos por 1. Sólo compruebo cada vez.

 
Alexey Viktorov:

Devuelve el número de barras entre la hora especificada y la hora actual, si la hora de la barra actual se especifica como stop_time.

El único problema es que nunca obstruyo mi celda de memoria con cosas innecesarias como que el valor será igual, incluyendo la barra con el tiempo especificado o menos por 1. Sólo compruebo cada vez.

Todo esto lo entiendo, pero trata de entrar en la cuestión. Cómo se encuentra la hora especificada - en mi caso se necesita encontrar la 01.00 horas más cercana. ¿Cómo se escribe?
datetime start_time, // ¿desde qué fecha?

 
Nauris Zukas:

Todo esto lo entiendo, pero trata de entrar en la cuestión. Cómo se encuentra la hora especificada - en mi caso hay que encontrar la 01.00 horas más cercana. ¿Cómo se escribe?
datetime start_time, // ¿desde qué fecha?

 datetime t=StringToTime("01:00");
 int b=Bars(_Symbol, PERIOD_M30, t, TimeCurrent());
A la hora actual 17:08 muestra 33. Es decir, el número de barra con la hora 01:00 será 32.