GithubHelp home page GithubHelp logo

wtpy_learning_demo_xcj's Introduction

Python Demos

Python下的demo主要演示不同环境下不同组件的使用<br 提供了一个示例策略,DualThrust,股票和期货都用这个策略

  • cta_fut 期货CTA实盘demo,配置的是SIMNOW通道
  • cta_fut_bt 期货回测demo
  • dataFeed 数据源demo,用来从米筐或者Gqdb获取回测用的历史数据
  • cta_optimizer CTA策略优化器demo
  • cta_arbitrage_bt 期货套利回测demo
  • cta_stk 股票CTA实盘demo,配置的是XTP的仿真通道
  • cta_stk_bt 股票回测demo
  • ctp_loader 合约加载器demo
  • datakit_fut 期货数据组件demo
  • datakit_stk 股票数据组件demo
  • hft_fut 期货高频实盘demo
  • hft_fut_bt 期货高频回测demo
  • hft_fut_mocker 期货高频本地仿真demo
  • sel_fut_bt 期货SEL引擎回测demo
  • test_dataexts 数据扩展模块demo
  • test_datahelper 数据辅助模块demo
  • test_extmodules python外接行情和执行模块demo
  • test_hotpicker WtHotPicker的用法示例
  • test_monitor WtMonSvr的用法示例
  • cta_unit_test CTA策略接口的单元测试demo

如何使用这些demo

  • 首先确认本地安装的是 Python3.6 以上的版本,32位、64位都可以,wtpy子框架会根据Python的版本自动选择对应的底层
  • 然后安装WonderTrader上的Python子框架wtpy(version = v0.3.2)
pip install wtpy
如果出现itsdangerous模块中无法获得json的问题,需要对itsdangerous进行降级执行
pip install itsdangerous == 2.0.1

如何运行回测demo

配置config.yaml文件,设置策略参数以及回测设置

replayer:
    basefiles:
        commodity: ../common/commodities.json
        contract: ../common/contracts.json
        holiday: ../common/holidays.json
        session: ../common/sessions.json
        hot: ../common/hots.json
    mode: csv
    tick: false  # 是否使用tick回测,如果使用tick需要将mode改为bin
    store:
      module: WtDataStorage
      path: ../storage/
    etime: 201912011500
    stime: 201909010900
    fees: ../common/fees.json
env:
    mocker: cta

运行目录下的 run.py 即可

如果缺少数据,可以使用dataFeed继续宁下载,具体请看dataFeed.py,目前支持米筐与GQDB

如何运行实盘demo

1. 运行数据组件(datakit_fut)

修改配置文件mdparsers.yaml中的解析器配置。以 simnow 通道为例,将********改成自己的simnow账号,然后修改code字段为自己要订阅的合约,合约代码规则为"市场代码.合约代码"

parsers:
-   active: true
    broker: '9999'
    code: ''
    front: tcp://180.168.146.187:10211
    id: parser
    module: ParserCTP
    pass: 你的SIMNOW密码
    user: 你的SIMNOW账号

修改数据dtcfg.yaml中落地模块配置即接受的行情数据存储到哪里

writer:
    async: true                     # 是否异步,异步会把数据提交到缓存队列,然后由独立线程进行处理
    groupsize: 100                  # 每处理这么多条数据就输出一次日志
    path: ../../storage/            # 存储路径
    savelog: true                   # 是否同时输出日志

修改dtcfg.yaml中的udp广播配置(目前只开放了内存块直接广播),即数据如何分发给各个策略

broadcaster:
    active: true
    bport: 3997
    broadcast:
    -   host: 255.255.255.255
        port: 9001
        type: 2
    multicast_:
    -   host: 224.169.169.169
        port: 9002
        sendport: 8997
        type: 0
    -   host: 224.169.169.169
        port: 9003
        sendport: 8998
        type: 1
    -   host: 224.169.169.169
        port: 9004
        sendport: 8999
        type: 2

最后运行runDT.py启动行情接受器。

2. 运行策略组

首先,修改实盘demo的配置文件config.yaml, 再运行实盘demo下的 run.py

将数据读取配置中的路径修改为数据组件里配置的路径(config.yaml)

data:
    store:
        module: WtDataStorage   #模块名
        path: ../storage/      #数据存储根目录

设置交易环境也就是策略的的配置

#环境配置
env:
    name: cta               #引擎名称:cta/hft/sel
    product:
        session: TRADING    #驱动交易时间模板,TRADING是一个覆盖国内全部交易品种的最大的交易时间模板,从夜盘21点到凌晨1点,再到第二天15:15,详见sessions.json
    riskmon:                #组合风控设置
        active: true            #是否开启
        module: WtRiskMonFact   #风控模块名,会根据平台自动补齐模块前缀和后缀
        name: SimpleRiskMon     #风控策略名,会自动创建对应的风控策略
        #以下为风控指标参数,该风控策略的主要逻辑就是日内和多日的跟踪止损风控,如果回撤超过阈值,则降低仓位
        base_amount: 5000000    #组合基础资金,WonderTrader只记录资金的增量,基础资金是用来模拟组合的基本资金用的,和增量相加得到动态权益
        basic_ratio: 101        #日内高点百分比,即当日最高动态权益是上一次的101%才会触发跟踪侄止损
        calc_span: 5            #计算时间间隔,单位s
        inner_day_active: true  #日内跟踪止损是否启用
        inner_day_fd: 20.0      #日内跟踪止损阈值,即如果收益率从高点回撤20%,则触发风控
        multi_day_active: false #多日跟踪止损是否启用
        multi_day_fd: 60.0      #多日跟踪止损阈值
        risk_scale: 0.3         #风控系数,即组合给执行器的目标仓位,是组合理论仓位的0.3倍,即真实仓位是三成仓
        risk_span: 30           #风控触发时间间隔,单位s。因为风控计算很频繁,如果已经触发风控,不需要每次重算都输出风控日志,加一个时间间隔,友好一些
fees: ../common/fees.json   #佣金配置文件
executers: executers.yaml   #执行器配置文件
filters: filters.yaml       #过滤器配置文件,这个主要是用于盘中不停机干预的
parsers: tdparsers.yaml     #行情通达配置文件
traders: tdtraders.yaml     #交易通道配置文件
bspolicy: actpolicy.yaml    #开平策略配置文件

修改行情通道中的接收端口和接收地址(tdparsers.yaml)

parsers:
-   active: true
    bport: 9001
    filter: ''
    host: 127.0.0.1
    id: parser1
    module: ParserUDP
    sport: 3997

修改交易通道的配置(tdtraders.yaml)

traders:
-   active: true
    appid: simnow_client_test
    authcode: '0000000000000000'
    broker: '9999'
    front: tcp://180.168.146.187:10201
    id: simnow
    module: TraderCTP
    user: "你的SIMNOW账号"
    pass: "你的SIMNOW密码"
    quick: true
    riskmon:
        active: true
        policy:
            default:
                cancel_stat_timespan: 10    # 撤单流量检查间隔
                cancel_times_boundary: 20   # 在间隔中最多的撤单次数
                cancel_total_limits: 470    # 交易日内最多撤单次数
                order_stat_timespan: 10     # 发单流量检查间隔
                order_times_boundary: 20    # 在间隔中最多的发单次数

修改执行器的配置,可以根据需要配置多个执行器,执行器和交易通道一对一绑定(executers.yaml)

#一个组合可以配置多个执行器,所以executers是一个list
executers:
-   active: true    #是否启用
    id: exec        #执行器id,不可重复
    trader: simnow  #执行器绑定的交易通道id,如果不存在,无法执行
    scale: 1        #数量放大倍数,即该执行器的目标仓位,是组合理论目标仓位的多少倍,可以为小数 

    policy:         #执行单元分配策略,系统根据该策略创建对一个的执行单元
        default:    #默认策略,根据品种ID设置,如SHFE.rb,如果没有针对品种设置,则使用默认策略
            name: WtExeFact.WtMinImpactExeUnit, #执行单元名称
            offset: 0,      #委托价偏移跳数
            expire: 5,      #订单超时没秒数
            pricemode: 1,   #基础价格模式,-1-己方最优,0-最新价,1-对手价
            span: 500,      #下单时间间隔(tick驱动的)
            byrate: false,  #是否按对手盘挂单量的比例挂单,配合rate使用
            lots: 1,        #固定数量
            rate: 0         #挂单比例,配合byrate使用

    clear:                  #过期主力自动清理配置
        active: false       #是否启用
        excludes:           #排除列表
        - CFFEX.IF
        - CFFEX.IC
        includes:           #包含列表
        - SHFE.rb

修改自动开平策略的配置文件actpolicy.yaml 以股指为例,股指平今手续费很高,所以开平优先级顺序为:平昨开仓平今 如果是上期黄金和白银等品种,平今为0,则优先级顺序为:平今平昨开仓

default:                #默认开平策略:先平仓,再开仓
    order:              #顺序
    -   action: close   #开平动作:open-开仓,close-平仓,closetoday-平今,closeyestoday-平昨
        limit: 0        #限手,0为不限制
    -   action: open    
        limit: 0
#低日内佣金策略:平今>平昨>开仓
lowinnerdayfee:
    filters:            #品种过滤器,如果设定了该项,则这些品种就使用该策略
    - DCE.a
    - DCE.cs
    - DCE.i
    - DCE.j
    - DCE.l
    - DCE.m
    - DCE.p
    - DCE.pp
    - SHFE.au
    - SHFE.hc
    - CZCE.ZC
    - CZCE.CF
    - CZCE.MA
    - CZCE.SR
    - CZCE.AP
    order:
    -   action: closetoday
        limit: 0
    -   action: closeyestoday
        limit: 0
    -   action: open
        limit: 0
        
#股指开平策略:平昨>开仓>平今,开仓有限手500
#如果是买入,先看是否有昨日空头,再开多仓,如果多仓已经打到限手,再平当日的空头
stockindex:
    filters:
    - CFFEX.IF
    - CFFEX.IC
    - CFFEX.IH
    order:
    -   action: closeyestoday
        limit: 0
    -   action: open
        limit: 500
    -   action: closetoday
        limit: 0

wtpy_learning_demo_xcj's People

Contributors

zzzzhej avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.