初学者的问题 MQL5 MT5 MetaTrader 5 - 页 244

 
forexman77:
你能告诉我,除了 "SymbolInfoTick",还有没有其他快速获取当前价格 的方法。也许有一个更快的方法来获得当前的报价?

可以使用SymbolInfoDouble

SYMBOL_BID和SYMBOL_ASK 标识符。

 
Fleder:

可以使用SymbolInfoDouble

SYMBOL_BID和SYMBOL_ASK 标识符。

谢谢你!

不太清楚 "SYMBOL_BID "的后续内容(Bid是销售的最佳报价)。这还是目前的报价,还是ESN杯的最佳市场价格?

 
forexman77:

谢谢你!

不太清楚从 "SYMBOL_BID"(出价是出售的最佳报价)得出的结论是什么。这还是目前的报价,还是ESN杯的最佳市场价格?

当前的报价和ECN市场杯中的最佳价格是同一回事。

 
Fleder:

当前的报价和ECN码头的最佳价格是一样的。

一般来说,事实证明,如果我们在查询时使用 "SymbolInfoDouble",这个价格的交易可能不会发生,即它是当前的Bid。

如果我们使用 "SymbolInfoTick",那么价格正好在那里,即这是最后一次交易的当前价格,当使用double last; // 最后一次交易的当前价格(Last)。

 
forexman77:

一般来说,事实证明,如果我们在查询中使用 "SymbolInfoDouble",这个价格的交易可能不会发生,即它是当前的Bid。

如果我们使用 "SymbolInfoTick",那么价格肯定在那里,即它是最后一次交易发生的当前价格

注意事项

如果这个函数是用来获取最后一个 tick 的信息,那么最好使用SymbolInfoTick()很可能在终端连接到交易账户后,这个符号就没有任何报价。在这种情况下,请求的值将是未定义的。

如果终端连接到服务器后没有一个刻度,SymbolInfoTick可能会返回一个未定义的值。

SymbolInfoDouble排除了这种情况。

 
Fleder:

注意事项

如果该函数是用来获取最后一个tick的信息,最好使用SymbolInfoTick()很有可能自从终端连接到交易账户后,这个符号就没有任何报价 了。在这种情况下,要求的值将是未定义的。

如果在EA连接到图表后没有一个刻度,SymbolInfoTick可以返回一个未定义的值。

SymbolInfoDouble排除了这种情况。

明白了。谢谢你!现在唯一要做的是找到一个简单的代码例子来检查每个函数被调用时需要多少时间?
 
forexman77:
明白了。谢谢你!现在剩下的就是找一个简单的代码例子来检查调用这两个函数需要多长时间?
uint start=GetTickCount();
// здесь Ваш код вызова 
Print("Вызов прошёл за = ",GetTickCount()-start);
 
barabashkakvn:

在这种情况下,这一招可能不起作用。

总会有一个零的下调。

SymbolInfoTick和SymbolInfoDouble 函数的速度太快了--不超过微秒的单位

 
Fleder:

在这种情况下,这一招可能不起作用。

总会有一个零的下调。

SymbolInfoTick和SymbolInfoDouble 函数的速度太快了--不超过微秒的单位

更有趣的是,有一个示例代码。我们正在等待结果。
 
barabashkakvn:
Fleder:

在这种情况下,这一招可能不起作用。

总会有一个零的下调。

SymbolInfoTick和SymbolInfoDouble 函数的速度太快了--不超过微秒的单位

在脚本中,我创建了这个小东西。

void OnStart()
  {
uint start=GetTickCount();
double ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
Alert("ask=",ask);
uint time=GetTickCount()-start;
Alert("time=",time);
   
  }
//+------------------------------------------------------------------+

时间=0

SymbolInfoTick 将在星期一被检查。