美文网首页程序员简书面面观
量化交易入门笔记-策略下单函数

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

作者: 东南有大树 | 来源:发表于2018-10-05 13:28 被阅读158次

    按股数下单函数

    语法:

    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)
    

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

    相关文章

      网友评论

        本文标题:量化交易入门笔记-策略下单函数

        本文链接:https://www.haomeiwen.com/subject/aslqaftx.html