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

 
Nikita Bushuev:

Vladimir, yo también he generado el código con el asistente MQL5. He probado su EA, también no funciona para mí cuando lo ejecuto en la moneda GBPUSD.

Dice lo siguiente en el registro:

Lee lo que dice el registro. Hay una descripción de SU error. (si es un probador hay un registro, si es un terminal hay dos registros).


Especifica también: en qué símbolo y en qué plazo empiezas. Hoy los telépatas están de vacaciones y no hay nadie que lea su mente.

 
Vladimir Karputov:

Lee lo que está escrito en el cuaderno de bitácora. Hay una descripción de SU error. (si es un probador - hay un registro, si es un terminal - hay DOS registros).

El probador se bloquea en este lugar cuando se crea un indicador handle, es decir, es = INVALID_HANDLE. En la variable de símbolo "EURUSD" también se establece el periodo. ¿Cómo puede ser y qué significa el error 4804?

ERR_INDICATOR_CANNOT_APPLY

4804

El indicador no puede aplicarse a otro indicador

m_handle=iAC(symbol,period);
bool CiAC::Create(const string symbol,const ENUM_TIMEFRAMES period)
  {
//--- check history
   if(!SetSymbolPeriod(symbol,period))
      return(false);
//--- create
   m_handle=iAC(symbol,period);
//--- check result
   if(m_handle==INVALID_HANDLE)
      return(false);
//--- idicator successfully created
   if(!Initialize(symbol,period))
     {
      //--- initialization failed
      IndicatorRelease(m_handle);
      m_handle=INVALID_HANDLE;
      return(false);
     }
//--- ok
   return(true);
  }
Документация по MQL5: Предопределенные переменные / _Symbol
Документация по MQL5: Предопределенные переменные / _Symbol
  • www.mql5.com
Предопределенные переменные / _Symbol - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Nikita Bushuev:

El probador se bloquea aquí cuando se crea una manija de indicador, es decir, es = INVALID_HANDLE. En la variable de símbolo "EURUSD" también se establece el periodo. ¿Cómo puede ser y qué significa el error 4804?

ERR_INDICATOR_CANNOT_APPLY

4804

El indicador no puede aplicarse a otro indicador

Lea el registro - hay una descripción de SU error. Cuanto antes lo lea, antes lo entenderá.

Especifique también: en qué símbolo y en qué marco temporal se lanza. Los telépatas están de vacaciones hoy y no hay nadie que lea las mentes.
 
Vladimir Karputov:

Lea la revista - hay una descripción de SU error. Cuanto antes lo lea, antes lo entenderá.

Aclare también: en qué símbolo y en qué plazo se lanza. Hoy los telépatas están de vacaciones y no hay nadie que te lea la mente.

El problema se solucionó reinstalando la plataforma.

 
Vladimir Pastushak:

Estimados desarrolladores, los productos en el mercado no pueden ser verificados

Código adjunto

CopyRates provoca un cuelgue, lo que hace que el mercado escriba

prueba en EURUSD,H1 (compensación)

el probador tarda demasiado tiempo

No se ha encontrado el informe del probador de estrategias

Y el validador ha pasado correctamente el corte: Seguramente no estás pensando demasiado, cuando quieres pedir 1440 elementos en cada TICK para todos los símbolos del terminal? Ni siquiera has pensado: el servidor puede tener fácilmente más de cinco mil símbolos, un símbolo puede tener NO 1440 barras...


En definitiva, un tema para novatos. Definitivamente.

 
Hola, ¿podría decirme por qué no se cargan los gráficos? 14.08 registrado en la plataforma de negociación MT5 4 gráficos de 7 están todavía colgando a la espera de la actualización. Aunque en la cuenta demo previamente registrada todos los gráficos se actualizan a tiempo.
 
Vladimir Karputov:

Ejemplo

Resultado:


Gracias, Vladimir. Entiendo perfectamente la lógica de tu ejemplo. ¿Te lo crees?

 
Сергей Таболин:

Gracias, Vladimir. Entiendo perfectamente la lógica de tu ejemplo. ¿Te lo crees?

No soy Vladimir, pero te preguntaré: ¿qué es lo que no funciona? Todo ha desaparecido, y no tengo ganas de buscar su ejemplo. Por favor, duplícalo de nuevo.

 
Artyom Trishkin:

No soy Vladimir, pero tengo que preguntar: ¿qué es lo que no funciona? Hace tiempo que se fue, y no quiero buscar su ejemplo. Por favor, duplícalo de nuevo.

Este es mi ejemplo:

//+------------------------------------------------------------------+
//|                                                        cTest.mq5 |
//|                                     Copyright 2020, Tabolin S.N. |
//|                           https://www.mql5.com/ru/users/vip.avos |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, Tabolin S.N."
#property link      "https://www.mql5.com/ru/users/vip.avos"
#property version   "1.00"
//#property indicator_separate_window
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_plots   1
//--- plot bars
#property indicator_label1  "bars"
#property indicator_type1   DRAW_CANDLES
#property indicator_color1  clrGold
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- indicator buffers
double   barsBuffer1[];
double   barsBuffer2[];
double   barsBuffer3[];
double   barsBuffer4[];
//+------------------------------------------------------------------+
double   newCandles_Open[5]   = {106.785, 106.724, 106.760, 106.767, 106.769};
double   newCandles_High[5]   = {106.792, 106.765, 106.780, 106.781, 106.769};
double   newCandles_Low[5]    = {106.716, 106.719, 106.746, 106.758, 106.715};
double   newCandles_Close[5]  = {106.724, 106.760, 106.766, 106.769, 106.725};

int      tick_count           = 0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
   SetIndexBuffer(0, barsBuffer1, INDICATOR_DATA);
   SetIndexBuffer(1, barsBuffer2, INDICATOR_DATA);
   SetIndexBuffer(2, barsBuffer3, INDICATOR_DATA);
   SetIndexBuffer(3, barsBuffer4, INDICATOR_DATA);
   
   ArraySetAsSeries(barsBuffer1  ,true);
   ArraySetAsSeries(barsBuffer2  ,true);
   ArraySetAsSeries(barsBuffer3  ,true);
   ArraySetAsSeries(barsBuffer4  ,true);
   
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
   PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0);
   PlotIndexSetDouble(2,PLOT_EMPTY_VALUE,0);
   PlotIndexSetDouble(3,PLOT_EMPTY_VALUE,0);
   
   ArrayInitialize(barsBuffer1   ,0);
   ArrayInitialize(barsBuffer2   ,0);
   ArrayInitialize(barsBuffer3   ,0);
   ArrayInitialize(barsBuffer4   ,0);
//---
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int  OnCalculate(
   const int        rates_total,       // размер входных таймсерий
   const int        prev_calculated,   // количество обработанных баров на предыдущем вызове
   const datetime&  time[],            // массив Time
   const double&    open[],            // массив Open
   const double&    high[],            // массив High
   const double&    low[],             // массив Low
   const double&    close[],           // массив Close
   const long&      tick_volume[],     // массив Tick Volume
   const long&      volume[],          // массив Real Volume
   const int&       spread[]           // массив Spread
   )
{
   if(rates_total - prev_calculated > 1)
   {
      if(prev_calculated == 0)
      {
         Print("~~~~ Предварительный расчёт индикатора.");
         for(int i = 0; i < 5; i++)
         {
            barsBuffer1[0] = newCandles_Open[i];
            barsBuffer2[0] = newCandles_High[i];
            barsBuffer3[0] = newCandles_Low[i];
            barsBuffer4[0] = newCandles_Close[i];
         }
         Print("~~~~ Предварительный расчёт индикатора закончен.");
      }
      else return(0);
   }
   else Print("tick_count = ",++tick_count);
//--- return value of prev_calculated for next call
   return(rates_total);
}
//+------------------------------------------------------------------+
Si cambio barsBuffer1[0] por barsBuffer1[i], se dibuja. Pero entonces, ¿cómo añado una nueva vela?
 
Сергей Таболин:

Este es mi ejemplo:

Si cambio barsBuffer1[0] por barsBuffer1[i], se dibuja. Pero entonces, ¿cómo añadir una nueva vela?

No todas las matrices tienen la misma orientación.