Errores, fallos, preguntas - página 2050

 

¿Pueden decirme si hay un servidor demo de MT4 y MT5 que funcione con cotizaciones de fin de semana?

 
Kirill Belousov:

¿Existe un servidor demo de MT4 y MT5 que funcione con cotizaciones los fines de semana?

El servidor de demostración es un servidor de demostración porque el comercio no se hace con dinero real sino con "demo" :), y todo lo demás (así como el tiempo de las cotizaciones) es casi como en la vida real.

 
Kirill Belousov:

¿Pueden decirme si hay un servidor demo de MT4 y MT5 que funcione con cotizaciones de fin de semana?

No hay cotizaciones en el fin de semana.
Puede emular la llegada de las cotizaciones.
 

Tome MT5 fuera de línea (proxy de la izquierda, por ejemplo) y ejecutar el EA como este

void OnInit()
{
  Print("Hello World!");
}

La impresión en el registro será sólo cinco segundos después del inicio del asesor - BAG.


Ejecutar este indicador fuera de línea

#property indicator_chart_window

#property indicator_buffers 0
#property indicator_plots 0

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[] )
{
  return(rates_total);
}

void OnInit()
{
  const datetime LastBar = (datetime)SeriesInfoInteger(_Symbol, PERIOD_CURRENT, SERIES_LASTBAR_DATE);

  Print(LastBar);
  Print(Bars(_Symbol, PERIOD_CURRENT, LastBar - 24 * 3600, LastBar)); // 0
  Print(GetLastError());                                              // ERR_HISTORY_NOT_FOUND
}

Tenemos un problema en los bares. Lo mismo ocurrirá con las llamadas repetidas, por ejemplo, en OnTimer. Pero si llamas a Bares en Expert Advisor, todo funcionará. En el caso del indicador, se trata claramente de un error.

2017.10.22 23:35:40.678 Terminal        Alpari Limited MT5 x64 build 1653 started (Alpari Limited)
2017.10.22 23:35:40.678 Terminal        Windows 7 Ultimate (x64 based PC), IE 09.00, Intel Core i7-2700 K  @ 3.50 GHz, RAM: 11310 / 16301 Mb, HDD: 827 / 30000 Mb, GMT+02:00
La explicación en la documentación no explica nada

Если данные для таймсерии с указанными параметрами при вызове функции Bars() еще не сформированы в терминале, или данные таймсерии в момент вызова функции не синхронизированы с торговым сервером, то функция вернет нулевое значение.

Enviar la solicitud de refresco de la serie temporal con el mismo periodo, como el indicador que llama al refresco es extremadamente indeseable. La indeseabilidad de la solicitud del mismo símbolo-período que tiene el indicador se debe a que la actualización de los datos históricos se realiza en el mismo hilo que ejecuta el indicador. Por lo tanto, existe una alta probabilidad de que se produzca un choque.

 

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

Características del lenguaje mql5, sutilezas y trucos

fxsaber, 2017.10.17 15:07

Las matrices descendientes no pueden convertirse en matrices ancestrales. En cambio, elemento por elemento, sí. Hay una limitación de ArrayCopy en esto, que sería bueno eliminar.

Algo está mal en el lenguaje en esta situación

struct RATES : public MqlRates {};

void f1( RATES& ) {}

void f2( MqlRates& ) {}
void f2( MqlRates &[] ) {}

void OnStart()

{
  MqlRates a = {0};  
  
  f1(a); // 'a' - parameter conversion not allowed
  
  RATES b[1] = {0};
  
  b[0] = a; // no problem
  a = b[0]; // no problem
  
  f2(b[0]); // no problem
  f2(b);    // 'f2' - no one of the overloads can be applied to the function call
}


Las cuerdas amarilla y roja se contradicen. Si la herencia de una estructura está en curso y el constructor, el operador de asignación y los campos no se modifican, la transformación del descendiente en el padre y viceversa debe producirse sin problemas. Y las líneas amarillas lo demuestran. Sin embargo, en algunas situaciones se producen baches - rojos.
 
fxsaber:

Algo está mal en el lenguaje en esta situación

Mi compilador dio


 
Kirill Belousov:

Mi compilador dio

Sí, he corregido el mensaje.
 
   int tim=(int)FileGetInteger(aFileName,FILE_CREATE_DATE);
   int cur_tim=(int)TimeCurrent();

   RefreshRates();
   if(FileGetInteger(aFileName,FILE_EXISTS)==1)
      if(tim>0)
         if((cur_tim-tim)>120) 
           {
            Print(" ttt   "+TimeToString(cur_tim)+"  "+TimeToString(tim));
            FileDelete(aFileName);
            Print("Обновление файла ");
            return false;
           }

int tim=(int)FileGetInteger(aFileName,FILE_CREATE_DATE); no actualiza la hora.

Creo un archivo y quiero borrarlo después de 60 segundos, el archivo se borra yint tim=(int)FileGetInteger(aFileName,FILE_CREATE_DATE); devuelve el tiempo del primer archivo después de la compilación. Veo en la ventana de Windows que el archivo se borra y se crea con el nuevo tiempo.

RefreshRates no ayuda...

 

int tim=(int)FileGetInteger(aFileName,FILE_MODIFY_DATE);

Funciona correctamente

 
Vladimir Pastushak:

int tim=(int)FileGetInteger(aFileName,FILE_CREATE_DATE); no actualiza la hora.

Creo un archivo y quiero borrarlo después de 60 segundos, el archivo se borra yint tim=(int)FileGetInteger(aFileName,FILE_CREATE_DATE); devuelve el tiempo del primer archivo después de la compilación. Veo en la ventana de Windows que el archivo se borra y se crea con el nuevo tiempo.

RefreshRates no ayuda...

¿Dónde está el código de creación de archivos?

¿Cierras el archivo antes de borrarlo?

¿Qué tiene que ver RefreshRates con esto?

¿Estamos hablando de un cinco o un cuatro?