Backtrader 文档学习-Order OCO orders

本文详细介绍了Backtrader中的OrderOCO(OneCancelstheOther)订单管理策略,展示了如何在交易策略中使用它来控制订单执行,并通过实例演示了OCO在外汇交易中的行为,包括IB代理的角色以及订单组如何影响订单的自动取消机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Backtrader 文档学习-Order OCO orders

主要是可以使用订单组的管理策略,使用订单组策略,则一组订单中,有一个符合条件的订单成交,订单组中其他的订单就自动被取消。

1.概述

V1.9.36.116 版本交互式代理支持StopTrail、StopTrailLimit和OCO。

  • OCO始终将组中的第一个order指定为参数OCO
  • 代理模拟和IB代理具有相同的行为。指定:price作为初始停止触发价格(也指定trailamount),然后plimit作为初始限制价格。两者之间的差异将决定极限偏移量(极限价格与停止触发价格之间的距离)。

IB代理(Introducing Broker)是外汇行业中一个特殊的群体,主要充当销售角色,负责拓展外汇交易商市场并获取更多客户。
IB代理的职责是为外汇交易商拓展市场,并从交易商那里获得一定的返佣作为销售的佣金。在服务外汇平台的第三方工作人员中,也有被称为IB代理的,职责是为平台发展客户,以赚取交易者点差中的佣金为收入来源。

使用模式尽量保持用户友好,如果策略中的逻辑已决定发布订单的时候了,则可以这样使用OCO:

def next(self):
    ...
    o1 = self.buy(...)
    ...
    o2 = self.buy(..., oco=o1)
    ...
    o3 = self.buy(..., oco=o1)  # or even oco=o2, o2 is already in o1 group

第一个order o1将类似于组长。通过用oco命名参数指定o1,o2和o3成为OCO组的一部分。请注意,代码片段中的注释表明,通过指定O2(O2已经是组的一部分),o3也可以成为组的一部分。
随着order组的形成,将发生以下情况:
如果该组中的任何订单被执行、取消或过期,其他订单将被取消 。
理解:订单组中,只能有一个订单成交。

2.示例

现金额度到50000,因为资产价值达到4000,3个order,其中1给订单至少需要12000(broker的默认值为10000)

标准的SMA交叉策略,该示例执行以下操作:

  • 当快速均线向上穿过慢速均线时,发出3个order
  • order1是限价订单,将在限制天内到期(策略的参数),用收盘价降低1个百分点作为限价
  • order2是限价订单,到期时间更长,限价更低。
  • order3是更进一步降低限价的限价单
    order3 is a Limit order which further reduces the limit price

因此order2和order3不会执行,因为:

  • order1如首先执行,将触发其他订单的取消
    或者
  • order1将到期,也将触发其他订单的取消

系统保留3个订单的参考ID,只有在notify_order中显示三个ID为已完成、已取消、保证金或过期时,才会发出新的order 。

在持有某些bar的头寸后,就简单退出。

(1)程序
from __future__ import (absolute_import, division, print_function,
                        unicode_literals)


import argparse
import datetime

import backtrader as bt


class St(bt.Strategy):
    params = dict(
        ma=bt.ind.SMA,
        p1=5,
        p2=15,
        limit=0.005,
        limdays=3,
        limdays2=1000,
        hold=10,
        switchp1p2=False,  # switch prices of order1 and order2
        oco1oco2=False,  # False - use order
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值