VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 4
声望: 0

我是在pycharm里开发no_ui的程序
程序运行以后,没有看到录制数据的动作,也不知道数据是不是写下来了
线程函数是这样写的

def run_child1():
    """
    Running in the child process.
    """
    SETTINGS["log.file"] = True

    event_engine = EventEngine()
    main_engine = MainEngine(event_engine)
    main_engine.add_gateway(CtpGateway)
    main_engine.write_log("主引擎创建成功")

    # 记录引擎

    log_engine = main_engine.get_engine("log")
    event_engine.register(EVENT_CTA_LOG, log_engine.process_log_event)
    main_engine.write_log("注册日志事件监听")

    main_engine.connect(ctp_setting, "CTP")
    main_engine.write_log("连接CTP接口")

    whole_market_recorder = WholeMarketRecorder(main_engine, event_engine)

    main_engine.write_log("开始录制数据")
    oms_engine = main_engine.get_engine("oms")
    while True:
        sleep(1)

主程序
启动后的日志

description
请问是什么问题
另外我看代码里使用了WholeMarketRecorder这个类,派生自RecorderEngine,但是并没有调用这个类的任何方法,不知道怎么用,求助各位

Member
avatar
加入于:
帖子: 4684
声望: 285

官方版本没有WholeMarketRecorder

Member
avatar
加入于:
帖子: 4
声望: 0

xiaohe wrote:

官方版本没有WholeMarketRecorder
这个类是派生类,父类是vnpy_datarecorder.engine 中的RecorderEngine
```
class WholeMarketRecorder(RecorderEngine):
def init(self, main_engine, event_engine, record_modes=[RecordMode.BAR]):
super().init(main_engine, event_engine)
self.record_modes = record_modes

    # 非交易时间
    self.drop_start = time(3, 15)
    self.drop_end = time(8, 45)
    # 大连、上海、郑州交易所,小节休息
    self.rest_start = time(10, 15)
    self.rest_end = time(10, 30)

def is_trading(self, vt_symbol, current_time) -> bool:
    """
    交易时间,过滤校验Tick
    """
    symbol, exchange = extract_vt_symbol(vt_symbol)

    if current_time >= self.drop_start and current_time < self.drop_end:
        print("check false")
        return False
    if exchange in [Exchange.DCE, Exchange.SHFE, Exchange.CZCE]:
        if current_time >= self.rest_start and current_time < self.rest_end:
            print("check false")
            return False
    print("check true")
    return True

def record_tick(self, tick: TickData):
    """
    抛弃非交易时间校验数据
    """
    tick_time = tick.datetime.time()
    if not self.is_trading(tick.vt_symbol, tick_time):
        return
    task = ("tick", [copy(tick)])
    self.queue.put(task)

def record_bar(self, bar: BarData):
    """
    抛弃非交易时间校验数据
    """
    bar_time = bar.datetime.time()
    if not self.is_trading(bar.vt_symbol, bar_time):
        return
    print("push")
    print(bar)
    task = ("bar", [copy(bar)])
    self.queue.put(task)

```

不知道这个类怎么使用

Member
avatar
加入于:
帖子: 4684
声望: 285

个性化开发的模块需要自己排查了

© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】