量化交易入门笔记-策略下单函数

按股数下单函数

语法:

order(security, amount, style=None, side='long', pindex=0)

各项参数的意义:

  • security-标的代码
  • amount-交易数量,正数表示买入,负数表示卖出
  • style-下单类型,有两种
    • 市价单 (MarketOrder)。市价单是指不论价格,接下单,直到交易全部完成。
    • 限价单 (LimitOrder) 。限价单是指定一个价格,买入时不能高于它,卖出时不能低于它,如果不能满足,则等待满足后再交易。
    • 默认情况下为市价单,即None表示MarketOrder
  • side-用来指定开多单,还是空单。其中long表示开多单,short表示开空单。默认为 long,即开多单。需要注意的是,股票和基金暂不支持开空单
  • pindex-在使用set_subportfolios创建了多个仓位时,指定subportfolio的序号,从0开始。默认为0

按股数下单函数,如果创建订单成功,则返回Order对象,失败则返回None

实例代码:

买入平定银行股票100股

order('000001.XSHG', 100)

下一个市价单

order('000001.XSHG', 100, MarketOrderStyle())

以10元价下一个限价单

order('00001.XSHG', 100, LimitOrderStyle(10.0))

目标股数下单函数

语法:

order_target(security, amount, style=None, side='long', pindex=0)

目标股数下单函数与按股数下单函数的参数几乎一样,只有第二个参数amount表示的意义不一样。这里amount指期望的最终数量

该函数如果创建订单成功,则返回Order对象,失败则返回None

实例代码:

卖出平安银行所有股票,即最终持有平安银行的股数为0

order_target('000001.XSGH', 0)

买入平安银行所有的股票到100股,即最终持有平安银行的股票数为100股

order_target('000001.XSHG', 100)

按价值下单函数

语法:

order_value(security, value, style=None, side='long', pindex=0)

按价值下单函数与按股数下单函数的参数几乎一样,只有第二个参数不一样,这里的value表示价值(也就是多少钱),即卖出多少钱的股票或买入多少钱的股票

该函数如果创建订单成功,则返回Order对象,失败则返回None

实例代码:

卖出价值为10000元的平安银行的股票

order_value('000001.XSHG', -10000)

买入价值为10000元的平安银行股票

order_value('000001.XSHG', 10000)

目标价值下单函数

语法:

order_target_value(security, value, style=None, side='long', pindex=0)

目标价值下单函数与按股数下单函数的参数几乎一样,只有第二个参数value的意义不一样,这里的value指表示期望的股票的最终价值,也就说将股票买入或卖出直到持有价值(钱)为某个数量为止

该函数如果创建订单成功,则返回Order对象,失败则返回None

实例代码:

卖出平安银行所有股票

order_target_value('000001.XSHG', 0)

调整平安银行股票仓位到10000元价值

order_target_value('000001.XSHG', 10000)

撤单函数

语法:

cancel_order(order)

参数order是指Order对象或者order_id。

撤单指取消委托,如果取消委托成功,则返回 Order 对象,如果委托不存在,则返回None

实例代码:

假设将撤单功能放在一个自定义的函数里

# 该函数在每个交易日结束时运行
# 即将当天盘中下单未成功的订单撤单
def after_trading_end(context):
    # 获取当前未完成的订单
    orders = get_open_orders()
    # 通过循环,将所有未完成的订单撤单
    for _order in orders.values():
        cancel_order(_order)

获取未完成订单函数

语法:

get_open_orders()

该函数可获得当天所有未完成的订单。

实例代码:

# 该函数在每个交易日结束时运行
# 即将当天盘中下单未成功的订单撤单
def after_trading_end(context):
    # 获取当前未完成的订单
    orders = get_open_orders()
    # 通过循环,将所有未完成的订单撤单
    for _order in orders.values():
        cancel_order(_order)

获取订单信息函数

语法:

get_orders(order_id=None, security=None, status=None)

该函数可以获取当天所有的订单(get_open_orders只能获取当天所有未完成的订单)】

参数意义:

  • order_id - 订单 id
  • security - 标的代码,可以用来查询指定标的的所有订单
  • status - 表示订单状态,可以查询特定订单状态的所有订单

实例代码:

def after_trading_end(context):
    # 得到当天所有订单
    orders = get_orders()
    for _order in orders.values():
        log.info(_order.order_id)
    # 根据订单id查询订单
    get_orders(order_id='1517627499')
    # 查询所有标的为 000002.XSHG 的订单
    get_orders(security='000002.XSHG')
    # 查询订单状态为 OrderStatus.held 的所有订单
    get_orders(status=OrderStatus.held)
    # 查询标的为 000002.XSHG 且状态为 OrderStatus.held 的所有订单
    get_orders(security='000002.XSHG', status=OrderStatus.held)

获取成交信息函数

语法:

get_trades()

该函数获取当天所有的成交记录。需要注意的是,一个订单可能分多次成交

实例代码:

def after_trading_end(context):
    # 得到当天所有成交记录
    trades = get_trades()
    for _trade in trades.values():
        log.info(_trade.trade_id)

注:本文章为个人学习笔记,参考了一些书籍与官方教程,不作任何商业用途!

猜你喜欢

转载自blog.csdn.net/weixin_38486884/article/details/82943573