MT4管理器API =>.Net ClrWrapper

thtygnil  于 2023-02-26  发布在  .NET
关注(0)|答案(1)|浏览(183)

我正在使用带有.Net CLR Package 的mtmanapi.dll
对于Symbol名称中没有任何特殊字符的符号,我获得了正确的AskBid值-(例如EURUSDGBPUSD等),但如果符号中包含某些特殊字符(例如EURUSD'GBPUSD0等),则它不会使用SymbolInfoGet()方法获取AskBid值。

qojgxg4l

qojgxg4l1#

它应该工作,下面的代码返回报价US100,OIL.WTI,225JPY从我的服务器。我使用SymbolInfoUpdated(),但它类似于SymbolInfoGet()。但有几个注意事项:
1)在切换到泵送之前,可能需要调用mt.SymbolsRefresh();mt.SymbolAdd(symbol.Name);
2)SymbolInfoGet()将返回您在泵送中最后收到的报价。因此,如果您在周六连接并调用它,它将在周一之前不会返回任何内容

using (var mt = new ClrWrapper(new ConnectionParameters {Login = 0, Password = "", Server = "" }))
{
    var symbols = mt.CfgRequestSymbol();
    mt.SymbolsRefresh();
    foreach (var symbol in symbols)
    {
        mt.SymbolAdd(symbol.Name);
    }
    mt.PumpingSwitchEx(PumpingMode.Default);

    mt.BidAskUpdated += (sender, args) =>
    {
        var total = 0;
        do
        {
            var symbolsInfos = mt.SymbolInfoUpdated();
            foreach (var symbolInfo in symbolsInfos)
            {                            
                if (!symbolInfo.Symbol.All(char.IsLetter))
                {
                    Console.WriteLine("{0} {1} {2}", DateTime.Now, symbolInfo.Symbol, symbolInfo.Bid);
                }
            }
            total = symbolsInfos.Count;
        } while (total > 0);
    };

    Console.ReadKey();
}

相关问题