如何从 .Net ClrWrapper 获取询价和出价

how to get ask and bid from .Net ClrWrapper

我正在使用MetaTrader4.Manager.Wrapper

我想从 MT4 获取所有货币(MT4 中的符号)及其出价和要价。我尝试使用 :

public IList<Symbol> Get()
    {
        using (var metatrader = new ClrWrapper(new ConnectionParameters
        {
            Login = serverdata.Login,
            Password = serverdata.Password,
            Server = serverdata.Server
        }, serverdata.path))
        {
            var Refresh = metatrader.SymbolsRefresh();

            IList<Symbol> Live = metatrader.SymbolsGetAll();
            return Live;

        }
    }

从代码中我得到了名称:AUDCAD、AUDCHF、EURCHF 等,但是 BidTickValue 和 AskTickValue return 0.0.

我尝试使用 this answer,但符号 return 为空且出价 return 0。

是否有其他方法获取名称和出价和要价? Pumping Mode 是什么意思? 先谢谢你

Pumping 是 MT4 模式,当您订阅不同的事件时,MT4 服务器会向您发送更新,而无需手动请求。

例如:行情、交易、用户。

SymbolsGetAll 将 return 您仅在抽水模式下报价,并且它将 return 最近收到的报价。

如果你不打算使用抽水模式,你可以获取最新的引用用户ChartRequest方法,但是会慢很多。

无需经理直接询价即可获得报价API。 您只需将套接字发送到 MT4 服务器即可。 这是一个例子:

// 1. Start Session.
$ptr=fsockopen('127.0.0.1',443);
// error check
if (!$ptr){
  echo "Connection error";
  exit;
}
// 2. Send request to MT4
fputs($ptr,"WQUOTES-EURUSD,GBPUSD,USDJPY,\nQUIT\n");
// 3. Reading and processing server responses
while(!feof($ptr))
  {
   // read line of symbols
   $line=fgets($ptr,128); 
   // the symbol of the end of result transfer
   if($line=="end\r\n") break; 
   // process
   print $line; 

  }
// 4. Session completion
  fclose($ptr);

以上将以这种格式打印报价:方向符号买入卖出日期时间。