¿Cómo se obtienen los parámetros Open, Low, High, Close en MQL5? - página 3

 

Un ejemplo de guión:

//+------------------------------------------------------------------+
//|                                                            1.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
#property script_show_inputs
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   for(int i=0;i<3;i++)
      Print("# ",i,": ",DoubleToString(iOpen(Symbol(),PERIOD_CURRENT,i),Digits()));
//---
  }
//+------------------------------------------------------------------+

y el resultado:

2019.07.29 20:36:41.215 1 (EURUSD,H1)   # 0: 1.11399
2019.07.29 20:36:41.215 1 (EURUSD,H1)   # 1: 1.11425
2019.07.29 20:36:41.215 1 (EURUSD,H1)   # 2: 1.11319


Editado.

Archivos adjuntos:
1.mq5  2 kb
 

Aquí están.

Funciona tanto en 4pc como en 5pc

En 4-rka aplique Period(), Symbol(), etc.

En 5-pc, aplique _Period, _Symbol(), etc.

iBars

Devuelve el número de barras en el historial para un símbolo y un periodo especificados

iBarShift

Devuelve el desplazamiento de la barra a la que pertenece la hora especificada

iClose

Devuelve el precio de cierre de la barra del gráfico correspondiente

iHigh

Devuelve el valor del precio máximo de la barra en el gráfico

iHighest

Devuelve el índice del valor más alto encontrado del gráfico correspondiente

iLow

Devuelve el valor del precio mínimo de la barra del gráfico correspondiente

iLowest

Devuelve el índice del menor valor encontrado del gráfico correspondiente

iOpen

Devuelve el valor del precio de apertura de la barra del gráfico correspondiente

iTime

Devuelve la hora de apertura de la barra del gráfico correspondiente

iVolume

Devuelve el valor del volumen de ticks de la barra en el gráfico

iBars - Доступ к таймсериям и индикаторам - Справочник MQL4
iBars - Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
iBars - Доступ к таймсериям и индикаторам - Справочник MQL4
 
Con CopyRates, funcionó. Funciona.
 

Y aquí está la variante deCopyRates

//+------------------------------------------------------------------+
//|                                                            1.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
#property script_show_inputs
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   MqlRates rates[];
   ArraySetAsSeries(rates,true);
   int start_pos=0,count=3;
   if(CopyRates(Symbol(),Period(),start_pos,count,rates)!=count)
      return;

   for(int i=0;i<count;i++)
      Print("Open # ",i,": ",DoubleToString(rates[i].open,Digits()));
//---
  }
//+------------------------------------------------------------------+

y el resultado

2019.07.29 20:44:55.491 1 (EURUSD,H1)   Open # 0: 1.11399
2019.07.29 20:44:55.491 1 (EURUSD,H1)   Open # 1: 1.11425
2019.07.29 20:44:55.491 1 (EURUSD,H1)   Open # 2: 1.11319
Archivos adjuntos:
1.mq5  3 kb
 
Alexey Viktorov:

Alexey, esto es para los que están en un tanque. Y para los normales, CopyRates() está disponible en mql4 también. Así que olvídate de iOpen y otras tonterías. Ni siquiera entiendo por qué lo ponen en mql5.

¡Oh! Han aparecido chicos muy pequeños))

¿Por qué necesitamos en la práctica tener muchos valores consecutivos de OHLC - que sugeriste obtener usando CopyRates() ? - ¿excepto para meditar? ))))

no hay mucho uso práctico, aquí hay una tarea trivial, la descarga (o el uso) del indicador Fractals, tengo un código de este tipo:

#define  Time(n)   iTime(NULL,0,n)
//+------------------------------------------------------------------+
void OnStart()
  {
   int handle=iFractals(NULL,0);
   if(handle==INVALID_HANDLE)
     {
      Print("Error№,",::GetLastError()," create handle indicator");
      return;
     }
   int count=0,i=0;
   double buffup[1],buffdn[1];
   while(i<Bars(_Symbol,_Period) && count<10)
     {
      if(CopyBuffer( handle,0,i,1, buffup)<1) Print("buffup , error № ",::GetLastError());
      if(CopyBuffer( handle,1,i,1, buffdn)<1) Print("buffup , error № ",::GetLastError());
      if(buffup[0]<EMPTY_VALUE && ++count>0)  Print("Bar № ",i," : ",Time(i)," , Fractals Up = ",buffup[0]);
      if(buffdn[0]<EMPTY_VALUE && ++count>0)  Print("Bar № ",i," : ",Time(i)," , Fractals Dn = ",buffdn[0]);
     i++;
     }
  }
//+------------------------------------------------------------------+


muéstrame tu código con el uso de CopyRates()...

 
Vladimir Karputov:

Y aquí está la variante deCopyRates

y el resultado

Pero, si necesitamos hacer un seguimiento constante de los datos en las nuevas barras, ¿significa referirse a CopyRates en cada tick y hacer una serie de tiempo en cada tick?

Estoy tratando de averiguar el mejor lugar para poner CopyRates.

 
Реter Konow:

Pero, si necesita hacer un seguimiento constante de los datos en las nuevas barras, entonces ¿necesita referirse a CopyRates en cada tick y hacer una serie de tiempo en cada tick?

Estoy tratando de entender dónde poner mejor los CopyRates.

Ya he preguntado más arriba: ¿por qué? ¿Es necesario tener en cuenta el valor de la barra cero (la barra más a la derecha del gráfico)?

 
Vladimir Karputov:

Ya he preguntado más arriba: ¿Por qué? ¿Hay que tener en cuenta el valor de la barra cero (la más a la derecha del gráfico)?

Para la mesa. Hay cuatro parámetros en la tabla: Apertura, Cierre, Máximo, Mínimo, las últimas 10 barras, sin incluir la actual.

Última, en el sentido de retroceder desde la actual (cero).

 
Igor Makanu:

Ooh! han aparecido los teeny-weenies))

¿por qué en la práctica tener un montón de valores OHLC consecutivos - que usted propone obtener usando CopyRates() ? - ¿excepto para meditar? ))))

no hay mucho uso práctico, aquí hay una tarea trivial, la descarga (o el uso) del indicador Fractals, tengo un código de este tipo:


muéstrame tu código usando CopyRates()...

Igor, deberías ir al primer grado. Allí enseñan las letras y después de estudiar entenderás la diferencia entre CopyRates y CopyBuffer.

Será mejor que me ofrezcas una solución a este problema SIN CopyRates(!)

Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading

¿Cómo obtener los parámetros Open, Low, High, Close en MQL5?

Retrog Konow, 2019.07.29 19:58

Para la mesa. Hay cuatro parámetros en la tabla: Apertura, Cierre, Máximo, Mínimo, últimas 10 barras, sin incluir la actual.

Por último, me refiero a si te mueves hacia atrás desde el actual (cero).


 
Реter Konow:

Para la mesa. Hay cuatro parámetros en la tabla: Apertura, Cierre, Máximo, Mínimo, las últimas 10 barras, sin incluir la actual.

Último, en el sentido de retroceder desde el actual (cero).

En este caso CopyRates de la primera barra es inequívocamente 10. Y llamarlo no cada tick, pero sí lo suficiente cuando aparezca una nueva barra.

Razón de la queja: