V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
thinkingmind
V2EX  ›  推广

[黑科技] 叫你同步雪球组合与模拟交易!

  •  
  •   thinkingmind · 2017-01-12 11:20:01 +08:00 · 3627 次点击
    这是一个创建于 2674 天前的主题,其中的信息可能已经有所发展或是发生改变。

    筐筐内干货多多 可点

    好了,今天我们要来搞一个大新闻。

    首先,你需要在本地搭建基本的 python 3 环境,并且安装了 pip 库。相关信息及教程可以根据关键字百度完成。

    接下来,打开命令行,输入:

    pip install easytrader
    

    装完以后我们再来一个

    pip install rqopen-client 
    

    完成安装以后,进入 python 环境

    import os
    
    print (os.getcwd())
    

    看一下打印出来的目录在哪里,你需要在该目录下新建一个‘ xq.json ’ 文件

    格式如下(请使用 utf8 编码):
    {

    "username": "邮箱",

    "account": "手机号",

    "password": "密码",

    "portfolio_code": "组合代码(例:ZH818559)",

    "portfolio_market": "交易市场(例:us 或者 cn 或者 hk)"

    }

    把你的雪球组合信息填进去!

    组合代码在这里:

    接下来就是见证奇迹的时刻了!!

    在 python 环境下,运行如下代码:

    xq_user = easytrader.use('xq')
    
    xq_user.prepare('xq.json')
    
    target = 'rq'  # ricequant
    follower = easytrader.follower(target)
    follower.login(user='rq 用户名', password='rq 密码')
    
    
    follower.follow(xq_user, run_id)
    

    这里的 run_id 就是“我的策略”里模拟交易的 ID

    然后打开你的雪球组合看看,是不是模拟交易的每笔交易都同步到雪球组合去了呢。

    我们以默认的策略为例,把策略改成每分钟运行,可以看到雪球每分钟也在买入平安银行:

    另外,关于雪球组合的一些说明:

    因为雪球组合是按比例调仓的,所以模拟成券商实盘接口会有一些要注意的问题

    • 接口基本与佣金宝接口调用参数返回一致
    • 委托单不支持挂高挂低(开盘时间都是直接市价成交的)
    • 初始资金是按组合净值 1:1000000 换算来的
    • 委托单的委托价格和委托数量目前换算回来都是按 1 手拆的(雪球是按比例调仓的)
    • 持仓价格和持仓数量问题同上, 但持股市值是对的
    • 一些不合理的操作会直接抛 TraderError,注意看错误信息

    最后,祝各位 2017 闷声发大财

    听闻大家对 easytrader 的交易有些兴趣,那我就多说两句,安装完以后:

    交易相关

    获取资金状况

    user.balance
    

    return

    [{ 'asset_balance': '资产总值',
       'current_balance': '当前余额',
       'enable_balance': '可用金额',
       'market_value': '证券市值',
       'money_type': '币种',
       'pre_interest': '预计利息' ]}
    

    获取持仓

    user.position
    

    return

    [{'cost_price': '摊薄成本价',
       'current_amount': '当前数量',
       'enable_amount': '可卖数量',
       'income_balance': '摊薄浮动盈亏',
       'keep_cost_price': '保本价',
       'last_price': '最新价',
       'market_value': '证券市值',
       'position_str': '定位串',
       'stock_code': '证券代码',
       'stock_name': '证券名称'}]
    

    获取今日委托单

    user.entrust
    

    return

    [{'business_amount': '成交数量',
      'business_price': '成交价格',
      'entrust_amount': '委托数量',
      'entrust_bs': '买卖方向',
      'entrust_no': '委托编号',
      'entrust_price': '委托价格',
      'entrust_status': '委托状态',  # 废单 / 已报
      'report_time': '申报时间',
      'stock_code': '证券代码',
      'stock_name': '证券名称'}]
    

    买入:

    user.buy('162411', price=0.55, amount=100)
    

    return

    [{'entrust_no': '委托编号',
      'init_date': '发生日期',
      'batch_no': '委托批号',
      'report_no': '申报号',
      'seat_no': '席位编号',
      'entrust_time': '委托时间',
      'entrust_price': '委托价格',
      'entrust_amount': '委托数量',
      'stock_code': '证券代码',
      'entrust_bs': '买卖方向',
      'entrust_type': '委托类别',
      'entrust_status': '委托状态',
      'fund_account': '资金帐号',
      'error_no': '错误号',
      'error_info': '错误原因'}]
    

    卖出:

    user.sell('162411', price=0.55, amount=100)
    

    撤单

    券商 1

    user.cancel_entrust('委托单号', '股票代码')
    

    券商 2

    user.cancel_entrust('股票 6 位代码,不带前缀', "撤单方向,可使用 ['buy', 'sell']"
    

    筐筐内干货多多 可点

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4002 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 04:15 · PVG 12:15 · LAX 21:15 · JFK 00:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.