错误、漏洞、问题 - 页 1801

 
Dennis Kirichenko:
对演示服务器进行投诉简直是不道德的,尤其是那些没有经纪商支持的服务器 :-)
如果一切都像演示中那样运作,那么要求真正的服务器正常运作就是不道德的。

而MQ服务器应该是一种 "基准",算法开发者可以也应该在上面测试他们的技术。
 
fxsaber:
多次调用SymbolSelect将导致终端挂起。
bool SymbolExist( const string Symb, const bool MarketWatch = true )
{
  bool Res = false;
  
  for (int i = SymbolsTotal(MarketWatch) - 1; (i >= 0) && (!Res); i--)
    Res = (Symb == SymbolName(i, MarketWatch));
    
  return(Res);
}

bool SymbolOnOff( const string Symb )
{
  return(SymbolSelect(Symb, !SymbolExist(Symb)));
}

void OnStart()
{
  for (int i = SymbolsTotal(false) - 1; i >= 0; i--)
  {
    const string Symb = SymbolName(i, false);
    
    if (SymbolOnOff(Symb))
      SymbolOnOff(Symb);
  }
}
 
我没有看到帮助中提到,如果一个符号不在市场观察中,就不能为它检索数据。我不得不通过试验和错误来做。
 
fxsaber:
我在帮助中没有看到任何提及,如果一个符号不在市场观察中,那么就没有它的数据。不得不通过手写来完成。
对。其中提到了

返回的值

双重类型的值。在执行不成功的情况下,可以通过GetLastError() 获得错误信息

  • 5040 - 用于指定符号名称的字符串参数不正确。
  • 4301 - 不明符号(金融工具)。
  • 4302 - 在 "市场观察 "中没有选择符号(不在可用列表中)。
  • 4303 - 错误的符号属性标识符。
 
Slawa:
对。其中提到了

谢谢你,间接提到。

告诉我,如果我通过SymbolSelect将一个符号添加到Market Watch,我怎么知道按符号的Bid/Ask已经可用--SymbolIsSynchronized

SymbolIsSynchronized--对于这个目的来说似乎很昂贵,因为它也提出了M1-历史同步的问题。

SymbolIsSynchronized在某些字符上永远不会变成真。

 
fxsaber:

谢谢你,间接提到。

告诉我,如果我通过SymbolSelect将一个符号添加到Market Watch,我怎么知道按符号的Bid/Ask已经可用--SymbolIsSynchronized?

SymbolIsSynchronized--对于这个目的来说似乎很昂贵,因为它也提出了M1-历史同步的问题。

SymbolIsSynchronized在某些符号上永远不会变成真。

它是这样的,只是载入历史需要极长的时间....。
 
可能很多人都知道,但我现在才猜到在调试时要把_LastError包括在跟踪的值中。推荐。
 
在检查历史同步标志之前,你必须先调用CopyRates(Symbol(),PERIOD_M1,0,1000,rates)

如果从指示器中进行,它将准确地给出那里的内容,但要向历史中心提出分页请求。那么它可能是令人痛苦的。

如果是由专家顾问或脚本完成的,那么可以在函数内进行几个周期的请求,并等待响应,作为一项规则,在这种调用历史将被同步。
 
fxsaber:

如果我通过SymbolSelect将一个符号添加到Market Watch,我如何知道该符号的Bid/Ask是否可用?

在SymbolSelect(true)之后,我立即询问了价格,结果是零。同时_LastError == 0,SymbolInfoTick== true。

我如何知道Marketwatch的新符号的价格已经送到了Marketwatch?

 
Slawa:
在检查历史同步标志之前,你必须先调用CopyRates(Symbol(),PERIOD_M1,0,1000,rates)

如果从指示器中进行,它将准确地给出那里的内容,但要向历史中心提出分页请求。那么它可能是令人痛苦的。

如果是在EA或脚本中进行,那么在函数中可以进行几个请求周期,等待答案,而且,作为一项规则,历史记录将在这样的调用后被同步。
你是否建议在每次打勾时都要这样做?