量化入门 - JoinQuant入门学习1

2021-07-28  本文已影响0人  FANDX

下单相关的API

参考连接:https://www.joinquant.com/view/community/detail/3c7c9e987e011d531cf81222c83f7925

order(security, amount,...)

下单指定股数

股票示例

期货示例

order_target(security, amount, ...)

调整指定股票到指定股数

股票示例(假设下单前已经持有了平安银行500股且全部可平仓):

期货示例(假设下单前已经持有了IF1901空单5手,多单3手)

order_value(security, value, ....)

下单指定金额用来购买指定股票,遵循向下取整原则。

股票示例(假设平安银行下单时最新价为10元):

order_target_value(security, value, ...)

下单让仓位指定到指定的金额,会自动计算来价格来控制持仓。

股票示例(假设目前已持有平安银行500股且全部可平仓,下单时最新价为10元):

关于order/trader对象以及订单处理

参考链接:https://www.joinquant.com/view/community/detail/2ecedbc451f8345c2aefdc11fcd0d1a6

订单处理

从委托到成交的流程:
Order下单后,持仓/可用资金变化情况

交易函数

下限价单指定style=LimitOrderStyle(目标价位) 即可, 买入时不能高于目标价位, 卖出时不能低于目标价位, 如果不满足, 则等待满足后再交易,注意股票的交易单位为每手100股。

下单失败可以查看日志中对应时间点的warning,有详细说明
下单可能的失败原因:

  1. 标的数量经调整后变成0 (请看下面的说明)。
  2. 标的停牌。
  3. 标的成交量不足以交易(涨停,跌停等)。
  4. 标的未上市或者退市。
  5. 标的不存在。
  6. 为股票、基金开了空单。
  7. 选择了不存在的仓位号,如没有建立多个仓位,而设定pindex的数大于0。

注意,下单如果是废单,那么返回值是None,所以不能打印Order订单的实际数据。

交易订单会遵循的原则
  1. 卖出时会根据您持有股票的数量来限制您卖出的数量。
  2. 我们会遵守A股交易规则: 每次交易数量只能是100的整数倍, 但是卖光所有股票时不受这个限制。
  3. 在下单时会根据您当前的可用资金,成交量等对下单股数进行调整。
  4. 您在触发下单信息时自己打印的成交记录(信息)并不是特别可靠,请以实际结果及日志信息为准,系统会在每天16:00取消所有未完成交易(撤单),查询get_orders(status=OrderStatus.canceled)需要在16点至17点之间查询。

Order对象

重点注意:每天17点聚宽会对order对象进行归类,17点之后在调取get_orders获取的order对象就是属于第二天的订单,那么在get_orders获取当天的订单的时候就会出现错误

get_orders会返回一个Order对象,里面是UserOrder对象的值

UserOrder({'status': open, 'style': LimitOrderStyle: _limit_price=7.58, 'order_id': 1536135521, 'price': 0.0, 'pindex': 0, 'amount': 100, 'action': u'open', 'security': '000001.XSHE', 'side': u'long', 'filled': 0, 'add_time': datetime.datetime(2016, 6, 1, 9, 30)})

OrderStatus对象

  1. 通过 order对象.status 获取到的结果是一个枚举对象。

  2. 如果想查询状态是否是某种状态,需要获取具体的属性或者和status对象直接进行比较。

  3. 由于(回测/模拟)16点会撤销未完成订单,17点后通过get_orders等获取的order对象归属于下一交易日,所以查询时需要注意这两个时间点。

# 盘后获取当天未完成的订单(包括盘后自动撤销的限价单)
def func(context):  #16:00之后,17点之前运行
    order_dict = get_orders(status = OrderStatus.canceled)
    

获取trader中的信息

## 收盘后运行函数  
def after_market_close(context):
    #得到当天所有成交记录
    trades = get_trades()
    # 循环去打印出每一单的成交记录
    for _trade in trades.values():
        log.info('成交记录:'+str(_trade))
    print('-'*50)

聚宽投资研究使用

参考连接:https://www.joinquant.com/view/community/detail/34426b055bc8600cba6abec85d164ea5

其实聚宽的投资研究环境使用的Jupyter,本地安装Anaconda环境都会去自动安装Jupyter,提供了非常方便的python实时运行环境,方便做数据分析研究。聚宽的研究模块支持以下功能

常用的快捷键(命令模式下)

![ image-20210728164850268.png

常用的快捷键(编辑模式下)

](https://img.haomeiwen.com/i14862829/27525d324d3e7e4f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

快捷键总结

两种模式
编辑模式
命令行模式
上一篇下一篇

猜你喜欢

热点阅读