首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C#无法处理OnTick事件MetaTrader Api

C#无法处理OnTick事件MetaTrader Api
EN

Stack Overflow用户
提问于 2022-08-18 19:43:05
回答 1查看 117关注 0票数 0

我正在做MetaTrader5 Api的工作。有TickSubscribe (订阅与价格数据数据库中的更改相关联的事件)。函数和OnTick (新报价到达事件的处理程序)。事件。但是在.Net版本中,OnTick事件就像void一样工作,不像已知的事件,而且我无法理解它。我想要赶上OnTick事件,并看到每一个到达。

代码语言:javascript
运行
复制
            MTTickShort shot = new MTTickShort();
            CIMTTickSink sink = new CIMTTickSink();

            sink.OnTick("EURUSD", shot);

            MTRetCode code = sink.RegisterSink();
            code = m_manager.TickSubscribe(sink);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-30 13:02:29

CIMTTickSink添加派生类的

代码语言:javascript
运行
复制
public class TickSink : CIMTTickSink
{
    private readonly Action<string, MTTickShort> _handler;

    public TickSink(Action<string, MTTickShort> handler)
    {
        _handler = handler ?? throw new ArgumentNullException(nameof(handler));

        if (RegisterSink() != MTRetCode.MT_RET_OK) throw new Exception();
    }

    public override void OnTick(string symbol, MTTickShort tick) =>
        _handler.Invoke(symbol, tick);
}

CIMTTickSink中很少有其他方法可以重写。我觉得你需要这个。分解来观察别人。

CIMTManagerAPI

  1. Сreate

代码语言:javascript
运行
复制
SMTManagerAPIFactory.Initialize(@".\");
var managerApi = SMTManagerAPIFactory.CreateManager(SMTManagerAPIFactory.ManagerAPIVersion, out var ret);
if (ret != MTRetCode.MT_RET_OK) throw new Exception();

使用credentials:服务器IP和管理器用户连接managerApi

代码语言:javascript
运行
复制
var ret = managerApi.Connect(
    _ip,
    _user,
    _password,
    null,
    // probably this should not be FULL, but seems like mode affects nothing
    CIMTManagerAPI.EnPumpModes.PUMP_MODE_FULL,
    5_000);

if (ret != MTRetCode.MT_RET_OK) throw new Exception();

  1. 使用您需要执行的任何操作实例化TickSink作为处理程序,并订阅它:

代码语言:javascript
运行
复制
tickSink = new TickSink(_tickHandler);
var ret = managerApi.TickSubscribe(tickSink);
if (ret != MTRetCode.MT_RET_OK) throw new Exception();

  1. 完成了。别忘了CIMTTickSinkCIMTManagerAPI是一次性的。用连接包装它是活动的检查和重试等等.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73408616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档