模拟行情模块使用流程整理
发布于 3 个月前 作者 allran 281 次浏览 来自 分享

天神的代码很飘逸,文档比较少,并且之前论坛的一些技术帖缺失,导致新手学qa学起来很老火。以下是我躺坑后的整理,希望对后来都有一点点小小的帮助。 在此,感谢@聪明的大雄,给了我极大的帮助,才能把行情这一块流程走通。 -------------------------------------------------------分割线------------------------------------------------------- 一. 虚拟行情-----不要跟真实行情一起用,会污染

  1. 拉起一个rb1910的行情 $ QARC_Random --code rb1910 --date 20190619 --price 3800 --interval 1

  2. 订阅code $ QARC_CTP --code rb1910

行情采样成realtime_min_rb1910和bar_1min_rb1910的exchange

  1. 订阅分钟线 $ qaps_sub --exchange realtime_min_rb1910 --model fanout

  2. 重采样 $ QARC_Resample --code rb1910 --freq 5min

  3. 输出数据

    # 然后打印出实时行情
    from QAPUBSUB import consumer
    def on_data(a,b,c,data):
        print(data)
    c = consumer.subscriber(exchange='realtime_5min_rb1910')
    c.callback = on_data
    import threading
    threading.Thread(target=c.start).start()
    

二. 期货行情

  1. 启动ctpbee a. docker自启动qactpbeebroker,需要在docker-compose.yaml配置账号信息 b. 手动登录账号$ qactpbee --userid 133495

    附:查看日志:

    $ docker ps #查看qactpbeebroker的容器id
    $ docker logs 6eb76571ff1c -t -f --tail 300 #查看对应容器id的日志。
    

    启动好后,在RabbitMQ的Exchanges有CTPX. 如果看到输出日志里面start_engine后面啥东西也没有,代表当前没有可订阅的代码。

  2. 订阅代码, 三种方式 a. 接口订阅 $ curl -X POST "http://127.0.0.1:8011?action=action=new_handler&market_type=future_cn&code=au2110" b. 直接订阅 $ qaps_sub --exchange CTPX --model direct --routing_key au2110 c. 命令行订阅 $ QARC_Start --code au2110 d. 代码订阅

    from QARealtimeCollector.collectors import QARTC_CtpBeeCollector
    r = QARealtimeCollector_CtpBeeCollector('au2110')
    r.start()
    

    订阅成功后,会在RabbitMQ的Exchanges有bar_1min_au2110realtime_min_au2110,并且CTPXrealtime_min_au2110可以看到有网速变动。

  3. 查看订阅代码

    from QAPUBSUB import consumer
    def on_data(a,b,c,data):
        print(data)
    c = consumer.subscriber(exchange='realtime_min_au2110')
    c.callback = on_data
    import threading
    threading.Thread(target=c.start).start()
    

    可看到实时的订阅数据。

  4. 重采样为各种数据

    a. 接口订阅

    $ curl -X POST http://127.0.0.1:8011?action=new_resampler&market_type=future_cn&code=au2110&frequence=1min

    b. 命令行订阅

    $ QARC_Resample --code au2110 --freq 1min

    c. 代码订阅

    from QARealtimeCollector.datahandler import QARTC_Resampler
    r = QARTC_Resampler('au2110', '1min')
    r.start() 
    

    在RabbitMQ的Exchanges会生成realtime_1min_au2110bar_1min_au2110

  5. 行情订阅完成,其它就是撸代码了

回到顶部