错误、漏洞、问题 - 页 2050

 

你能告诉我是否有一个可用的MT4和MT5模拟服务器,并有周末报价?

 
Kirill Belousov:

周末是否有工作的MT4和MT5模拟服务器,并提供报价?

模拟服务器之所以是模拟服务器,是因为交易不是用真钱而是用 "模拟":),其他一切(以及报价的时间)几乎与现实生活一样。

 
Kirill Belousov:

你能告诉我是否有一个可用的MT4和MT5模拟服务器,并有周末报价?

周末没有报价。
你能模仿报价的到来吗。
 

将MT5脱机(比如说左边的代理),运行一个这样的EA

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

日志中的打印将只在顾问开始后的五秒钟内进行 - BAG。


离线运行该指标

#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
}

我们在Bars得到一个无赖。同样的无奈也会发生在重复调用中,例如在OnTimer中。但如果你在专家顾问中调用Bars,一切都会正常。就该指标而言,这显然是一个错误。

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
文档中的解释并没有说明任何问题

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

发送刷新时间序列的请求与调用刷新的指标的周期相同,是非常不可取的。请求与指标相同的符号周期是不可取的,这是因为历史数据的更新是在运行指标的同一线程中进行的。因此,发生冲突的概率很高。

 

关于交易、自动交易系统和交易策略测试的论坛

mql5语言的特点、微妙之处以及技巧

fxsaber, 2017.10.17 15:07

子代数组不能转换为祖代数组。另一方面,一个一个的元素,是的。ArrayCopy在这方面有一个局限性,如果能去掉就好了。

这种情况下的语言有问题

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
}


黄线和红线相互矛盾。如果从一个结构中的继承正在进行,并且构造函数、赋值运算符和字段没有改变,那么子代转化为父代,反之亦然,必须顺利进行。而黄线则证实了这一点。然而,在某些情况下,会出现无赖的情况--红色的无赖。
 
fxsaber:

这种情况下的语言有问题

我的编译器给出了


 
Kirill Belousov:

我的编译器给出了

是的,纠正了这一信息。
 
   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); 并不更新时间。

我创建了一个文件,想在60秒后删除它,文件被删除了,int tim=(int)FileGetInteger(aFileName,FILE_CREATE_DATE); 返回编译后第一个文件 的时间。 我在Windows窗口看到,文件被删除了,并以新时间创建。

刷新率并没有帮助...

 

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

工作正常

 
Vladimir Pastushak:

int tim=(int)FileGetInteger(aFileName,FILE_CREATE_DATE); 并不更新时间。

我创建了一个文件,想在60秒后删除它,文件被删除了,int tim=(int)FileGetInteger(aFileName,FILE_CREATE_DATE); 返回编译后第一个文件 的时间。 我在Windows窗口看到,文件被删除了,而且是用新时间创建的。

刷新率并没有帮助...

文件创建代码在哪里?

你在删除文件之前是否关闭了该文件?

刷新率与此有什么关系?

我们在谈论的是五级还是四级?