首页 > 其他分享 >VeighNa 学习进阶(二)

VeighNa 学习进阶(二)

时间:2022-09-22 21:01:17浏览次数:52  
标签:engine ctp 进阶 学习 VeighNa add main gateway name

今天学了一下连接行情,再次吐槽那个文档,写的什么玩意?是作者故意为之?

然后拿example中的no_ui 里面的run.py学习了一下,感觉作者写代码的习惯和思维非常奇怪

比如在这句中: 

main_engine.add_gateway(CtpGateway)

为什么是在这个方法里只传一个类,而不是一个实例好之后的类呢?

    def add_gateway(self, gateway_class: Type[BaseGateway], gateway_name: str = "") -> BaseGateway:
        """
        Add gateway.
        """
        # Use default name if gateway_name not passed
        if not gateway_name:
            gateway_name: str = gateway_class.default_name

        gateway: BaseGateway = gateway_class(self.event_engine, gateway_name)
        self.gateways[gateway_name] = gateway

而它是在这个方法里去实例化的,真的奇葩

而且在实例中把event_engine做为参数传进去了,这样就必须是在add_gateway之前需要把event_engine加到main_engine中,

这样的思维,不知道是怎么产生的

这样面临的问题是在add_gateway之前,不能对CtpGateway做任何参数的改动。

比如设置ctp_setting(即ctp行情,交易的信息),这个需要在本文件中另行设置,奇葩吧

正常的逻辑,把CtpGateway初始化,设置各种参数,然后扔给main_engine,这个不是常规操作么?

以致后面还要写  main_engine.connect(ctp_setting, "CTP")  这样的代码,人才!

还有好几处下面这样的代码。

sleep(60)   # Leave enough time to complete strategy initialization

类中没有一个状态管理的吗?60秒是多了还是少了?

 

后面要写的策略,更奇葩,实在是理解不了,唉

那个no_ui下面的run.py把ctp_setting改一下直接可以跑了,没有太多问题,还有那个check_trading_period直接返回True,要不在非交易时间没法弄

 

标签:engine,ctp,进阶,学习,VeighNa,add,main,gateway,name
From: https://www.cnblogs.com/szyicol/p/16720827.html

相关文章