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

 
Alex:

Gracias por sus respuestas y su paciencia.


Vladimir, probablemente ya te he aburrido:) Pero me cuesta lo básico. He intentado hacer una tarea de prueba con las funciones de copia... El indicador no está dibujado, aunque hay números en Printe... No entiendo nada.


Un mismo array UpBar va a dos buffers: 0 y 1.

Y para los índices para los que no quieres establecer valores, escribe valores vacíos.

Y, por lo que entiendo, estás escribiendo valores de 3 a 3 barras. Esto significa que se escribirán los valores más antiguos, no los más recientes (el orden de numeración es diferente al de mql4).

 
Alex:

Gracias por sus respuestas y su paciencia.


Vladimir, probablemente ya te he aburrido:) Pero me cuesta lo básico. He intentado hacer una tarea de prueba con las funciones de copia... El indicador no está dibujado, aunque hay números en Printe... No entiendo nada.


//+------------------------------------------------------------------+
//|                                                        PBars.mq5 |
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_plots   1
//--- plot UpBar
#property  indicator_label1  "UpBar"
#property  indicator_type1   DRAW_HISTOGRAM
#property  indicator_color1  clrGreen
#property  indicator_style1  STYLE_SOLID
#property  indicator_width1  6
////--- plot DnBar
//#property indicator_label2  "DnBar"
//#property indicator_type2   DRAW_HISTOGRAM
//#property indicator_color2  clrRed
//#property indicator_style2  STYLE_SOLID
//#property indicator_width2  6
//--- input parameters
input int   Histori=30;
input ENUM_TIMEFRAMES TimeFrame=0;
input string  Simvol="EURUSD";
//--- indicator buffers
double         UpBar[];
//double         DnBar[];
double         O_Price[];
double         C_Price[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,UpBar,INDICATOR_DATA);
//SetIndexBuffer(1,UpBar,INDICATOR_DATA);
   SetIndexBuffer(1,O_Price,INDICATOR_CALCULATIONS);
   SetIndexBuffer(2,C_Price,INDICATOR_CALCULATIONS);
//---
   ArraySetAsSeries(O_Price,true);
   ArraySetAsSeries(C_Price,true);
   ArraySetAsSeries(UpBar,true);
   ArrayInitialize(UpBar,0.0);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   ArraySetAsSeries(open,true);
   ArraySetAsSeries(close,true);

   if(prev_calculated==0)
     {
      ArrayInitialize(UpBar,0.0);
      ArrayInitialize(O_Price,0.0);
      ArrayInitialize(C_Price,0.0);
      Print(__FUNCTION__);
      ResetLastError();
      if(CopyOpen(Simvol,TimeFrame,0,Histori,O_Price)==-1)
         Print("Error CopyOpen #",GetLastError());
      ResetLastError();
      if(CopyClose(Simvol,TimeFrame,0,Histori,C_Price)==-1)
         Print("Error CopyClose #",GetLastError());
      for(int t=3; t<Histori; t++)
        {
         UpBar[t]=MathAbs(NormalizeDouble((O_Price[t]-C_Price[t]),Digits()));
         Print(IntegerToString(t)," ",DoubleToString(UpBar[t],Digits()));
         int g=0;
        }
     }
   return(rates_total);
  }
//+------------------------------------------------------------------+

Y el resultado:

Resultado

 
Karputov Vladimir:

Y el resultado:


Una vez más, muchas gracias.
 
Alex:
Una vez más, muchas gracias.
No hay de qué. No dude en ponerse en contacto conmigo si tiene alguna pregunta sobre MQL5.
 

¿Existe alguna función en MQL4 que proporcione valores de precio máximo/mínimo para un número determinado de barras?

Creo que había uno, pero no lo encuentro...

 
-Aleks-:

¿Existe alguna función en MQL4 que proporcione valores de precio máximo/mínimo para un número determinado de barras?

Creo que había uno, pero no lo encuentro...

https://docs.mql4.com/ru/series/ihighest

https://docs.mql4.com/ru/series/ilowest

iHighest - Доступ к таймсериям и индикаторам - Справочник MQL4
iHighest - Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
iHighest - Доступ к таймсериям и индикаторам - Справочник MQL4
 
Sí, sí, gracias, no he buscado lo suficiente, ya lo he encontrado yo.
 
-Aleks-:
Sí, gracias - no he buscado lo suficiente - ya lo he encontrado yo mismo.
Funciones compatibles con mql5 CopyHigh y CopyLow entonces en el array resultante ArrayMaximum y ArrayMinimum
 
¿Es cierto que cada conjunto de variables que componen un sistema de trading tiene una distribución aleatoria de ganancias y pérdidas?
 
Евгений:
¿Es cierto que cada conjunto de variables que componen un sistema de trading tiene una distribución aleatoria de ganancias y pérdidas?

Una contrapregunta.

¿Cree que el movimiento de cualquier par de divisas: gráfico, precios de compra y venta, etc., depende del conjunto de sus variables?