问题描述
我正在将mtmanapi.dll与.Net CLR包装器一起使用
I am using mtmanapi.dll with a .Net CLR wrapper
对于Symbol
名称中没有任何特殊字符的符号(例如EURUSD
,GBPUSD
等),我得到了正确的Ask
和Bid
值,但是如果符号中有一些特殊字符(例如EURUSD'
,GBPUSD0
等),则不会使用SymbolInfoGet()
方法获取Ask
和Bid
值.
I am getting correct Ask
and Bid
values for symbols without any special characters in the Symbol
name - ( e.g. EURUSD
, GBPUSD
and so on ), but if symbols have some special character in it ( e.g. EURUSD'
, GBPUSD0
and so on ), then it's not fetching Ask
and Bid
value using a SymbolInfoGet()
method.
推荐答案
它应该可以工作,并且下面的代码从我的服务器中返回US100,OIL.WTI和225JPY的报价.我正在使用SymbolInfoUpdated()
,但是它与SymbolInfoGet()
类似.但有几点注意事项:
It should work and below code returns quotes for US100, OIL.WTI, 225JPY from my server. I am using SymbolInfoUpdated()
however it's similar to SymbolInfoGet()
. But there are few notes:
1)您可能需要先切换到mt.SymbolsRefresh();
和mt.SymbolAdd(symbol.Name);
,然后再切换到抽水
1) you might need to call mt.SymbolsRefresh();
and mt.SymbolAdd(symbol.Name);
before switching to pumping
2)SymbolInfoGet()
将返回您在抽水中最后收到的报价.因此,如果您在星期六连接并拨打电话,则直到星期一它都不会返回任何内容
2) SymbolInfoGet()
will return you last received quote in pumping. So if you connect on Saturday and call it, it won't return anything until Monday
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();
}
这篇关于MT4 Manager API => .Net ClrWrapper的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!