分享

【重磅】教你如何连接“雪球组合”!!!

 duanqs123 2016-07-01

应聚宽官方要求,删除了一些不合规的内容,给JoinQuant官方与大家造成困扰,深表歉意!

一、登陆教程

废话不多说,教程开始:

  1. 下载【雪球组合连接-聚宽专用版】(链接:http://pan.baidu.com/s/1hsO4C0s 密码:gx3y)

  2. 修改其中的xq.json文件:

    • 配置文件需要自己用编辑器编辑生成, 请勿使用记事本, 推荐使用 notepad++ 或者 sublime text
    • 雪球配置中 username 为邮箱, account 为手机, 填两者之一即可,另一项改为 "", 密码直接填写登录的明文密码即可
  3. 修改完毕后,将所有文件传至个人研究根目录! 根目录! 根目录!

  4. 进入回测页面 - 新建回测 - 输入如下代码并编译运行:

    from api import *
    from webtrader import WebTrader
    from cli import *
    from httpserver import *
    
    def copy(path):
        c = read_file(path)
        with open(path, 'wb') as f:
            f.write(c)
    
    def initialize(context):
        user = use('xq')
        user.prepare('xq.json')
        # 打印持仓、资金状况
        log.info(user.position)
        log.info(user.balance)
    

  5. 出现如下结果表明登陆成功,恭喜你!你可以开始实盘了!jeiguo

  6. API用法见下方【二、交易API】

  7. 用法示例见下方【三、用法示例】

注:

  • ●因为改过文件内容,所以在研究模块无法进行测试。
  • ●买入卖出只用股票代码六位数字,无后缀。因此从JoinQuant获取的到股票代码字符串只需取前六位即可,如stock[:6]即可。

二、交易API

1. 设置账户:

user = use('xq')

2. 登陆账户:

user = use('xq')

3. 交易相关:

获取资金状况:

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.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)

获取今日委托单:

user.entrust

return

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

撤单:

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

查询当日成交:

佣金宝

user.current_deal

return

[{'business_amount': '成交数量',
'business_price': '成交价格',
'entrust_amount': '委托数量',
'entrust_bs': '买卖方向',
'stock_account': '证券账号',
'fund_account': '资金账号',
'position_str': '定位串',
'business_status': '成交状态',
'date': '发生日期',
'business_type': '成交类别',
'business_time': '成交时间',
'stock_code': '证券代码',
'stock_name': '证券名称'}]

三、用法示例

from api import *
from webtrader import WebTrader
from cli import *
from httpserver import *

def copy(path):
    c = read_file(path)
    with open(path, 'wb') as f:
        f.write(c)

def loading(context):
    ''' 登陆 '''
    global user
    user = use('xq')
    user.prepare('xq.json')

def initialize(context):
    g.security = ['600132.XSHG','600600.XSHG']
    run_daily(loading, 'before_open')
    run_daily(trade,'open')
    run_daily(check, 'after_close')

def trade(context):
    ''' 
    交易
    雪球组合的净值为1,easytrader使用1:1000000的比例放大。
    price*amout为雪球组合的改变比例。
    如下所示,如果price=10000,如果amount=1,比例则为1%;如果amount=10,比例则为10%
    '''
    user.buy(g.security[0][:6], price=10000, amount=1) #买入1%
    user.sell(g.security[1][:6], price=10000, amount=1) #卖出1%

def check(context):
    ''' 获取信息并输出 '''
    log.info('获取今日委托单:')
    log.info('今日委托单:', user.entrust)
    log.info('-'*30)
    log.info('获取资金状况:')
    log.info('资金状况:', user.balance )
    log.info('enable_balance(可用金额):', user.balance[0]['enable_balance'])
    log.info('-'*30)
    log.info('持仓:')
    log.info('获取持仓:', user.position)
    log.info('enable_amount(可卖数量):', user.position[0]['enable_amount'])

输出结果:

2015-12-31 15:10:00 - INFO - 获取今日委托单:
2015-12-31 15:10:00 - INFO - 今日委托单: [{'entrust_status': '\xe5\xb7\xb2\xe6\x8a\xa5', 'report_time': '2016-06-24 19:04:48', 'stock_name': u'\u9752\u5c9b\u5564\u9152', 'stock_code': u'SH600600', 'business_price': 0.0, 'business_amount': 100, 'entrust_no': 100764777, 'entrust_price': 0.0, 'entrust_bs': u'\u5356\u51fa', 'entrust_amount': 100}, {'entrust_status': '\xe5\xb7\xb2\xe6\x8a\xa5', 'report_time': '2016-06-24 19:04:48', 'stock_name': u'\u91cd\u5e86\u5564\u9152', 'stock_code': u'SH600132', 'business_price': 655.0000000000001, 'business_amount': 100, 'entrust_no': 100764779, 'entrust_price': 655.0000000000001, 'entrust_bs': u'\u4e70\u5165', 'entrust_amount': 100}]
2015-12-31 15:10:00 - INFO - ------------------------------
2015-12-31 15:10:00 - INFO - 获取资金状况:
2015-12-31 15:10:00 - INFO - 资金状况: [{'enable_balance': 313607.16000000003, 'pre_interest': 0.25, 'current_balance': 313607.16000000003, 'asset_balance': 1001300.0000000001, 'market_value': 687692.8400000001, 'money_type': u'\u4eba\u6c11\u5e01'}]
2015-12-31 15:10:00 - INFO - enable_balance(可用金额): 313607.16
2015-12-31 15:10:00 - INFO - ------------------------------
2015-12-31 15:10:00 - INFO - 持仓:
2015-12-31 15:10:00 - INFO - 获取持仓: [{'last_price': 1138.4781, 'market_value': 113847.81, 'stock_code': u'SH600600', 'income_balance': 0, 'current_amount': 100, 'enable_amount': 100, 'stock_name': u'\u9752\u5c9b\u5564\u9152', 'keep_cost_price': 1138.4781, 'position_str': 'xxxxxx', 'cost_price': 1138.4781}, {'last_price': 1761.2867000000003, 'market_value': 176128.67000000004, 'stock_code': u'SH600132', 'income_balance': 0, 'current_amount': 100, 'enable_amount': 100, 'stock_name': u'\u91cd\u5e86\u5564\u9152', 'keep_cost_price': 1761.2867000000003, 'position_str': 'xxxxxx', 'cost_price': 1761.2867000000003}]
2015-12-31 15:10:00 - INFO - enable_amount(可卖数量): 100

四、中文查看示例

输入:

a = [{u'stock_name': u'\u5927\u540c\u7164\u4e1a',u'amount': 100}]
jd = json.dumps(a,ensure_ascii=False)
log.info(jd)

输出:

2015-12-31 09:20:00 - INFO - [{"stock_name": "大同煤业", "amount": 100}]

五、雪球组合模拟交易

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

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多