backtrader FAQ:什么是一篮子订单Bracket Orders optMaster_backtrader stopargs_扫地僧量化的博客-程序员宅基地

技术标签: 扫地僧backtrader量化回测  

完整教程见这里

一篮子订单并非一个单一订单,而是三个订单组合起来的,其中一个是主订单,另外两个一是针对主订单的止损保护单,二是针对主订单的获利了结单。

我们考虑一个做多的场景:这种场景下,我们想买入股票(创建买单),但是又希望在股价下跌时通过止损卖单限制损失,并且希望股价上升到目标价后卖出股票获利了结。因此,当下达一个主买单后,同时下达一个止损卖单保护自己,再同时下达一个获利了结卖单保护利润,说明如下:

  • 一个主买单buy,默认是限价单Limit,要设置主限制价price(相当于进入市场价格)。此单称为main单。
  • 一个子卖单sell,默认为停损单Stop,限制损失,要设置子停损价stopprice。此单称为stop单。
  • 再一个子卖单sell,默认为限价单Limit,以获利离场,要设置子限制价(即获利了结价)limitprice。此单称为limit单。

以上三个价格的关系是:stopprice(止损价)<price(进入价)<limitprice(获利了结价)。

这3个订单一起提交,主订单执行后,两个子订单才激活(激活前不执行)。若主单取消,则子单自动取消。激活的子单中任意一个执行或取消将导致另一个自动取消。

以下是代码例子:

brackets = self.buy_bracket(limitprice=14.00, price=13.50, stopprice=13.00)

返回值brackets 是一个列表[main, stop, limit],记录了三个订单的引用。


该方法的签名如下:

buy_bracket(self, data=None, size=None, price=None, plimit=None,# 主买单设置
                    exectype=bt.Order.Limit, valid=None, tradeid=0,
                    trailamount=None, trailpercent=None, oargs={},
                    stopprice=None, stopexec=bt.Order.Stop, stopargs={},# 止损卖单设置
                    limitprice=None, limitexec=bt.Order.Limit, limitargs={},# 获利了结卖单设置
                    **kwargs):

 

 

如果是做空的场景,那么命令是self.sell_bracket(),它用于发布一个主卖单,一个止损保护买单和一个获利了结买单,此时三个价格的关系是:

stopprice(止损价)>price(进入价)>limitprice(获利了结价),例子如下:

self.sell_bracket(limitprice=short_tp, price=entry, stopprice=short_stop, exectype=bt.Order.Limit)
该方法的签名如下:
sell_bracket(self, data=None,size=None, price=None, plimit=None,# 主卖单设置
                     exectype=bt.Order.Limit, valid=None, tradeid=0,
                     trailamount=None, trailpercent=None,
                     oargs={},
                     stopprice=None, stopexec=bt.Order.Stop, stopargs={},# 止损买单设置
                     limitprice=None, limitexec=bt.Order.Limit, limitargs={},# 获利了结买单设置
                     **kwargs):

 

 

如果你想看详细的使用案例代码,参考这里

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qtbgo/article/details/110947745

智能推荐

itemcf的hadoop实现优化(Python)-程序员宅基地

原始数据如下:u1 a,d,b,cu2 a,a,cu3 b,du4 a,d,cu5 a,b,c计算公式使用:sim = U(i)∩U(j) / (U(i)∪U(j))其中: (U(i)∪U(j)) = U(i) + U(j) - U(i)∩U(j) 原始的Hadoop实现需要5轮MR,优化后只需要两轮就可以完成。之前的轮数过多,主要在于计算(U(i)∪U(j

字节 4 轮面试,收到 45k*18 Offer!揭秘面试流程及考点!_字节面试几轮-程序员宅基地

前段时间,有个朋友又出去面试了,这次他面试目标比较清晰,面的都是业务量大、业务比较核心的部门。前前后后去了不少公司,几家大厂里,他说给他印象最深的是字节。3 轮技术面 + 1 轮 HR 面,他最终拿到了 45k*18薪 的 Offer。第一轮主要考察 Java 基础,二、三轮注重对应⽤技术的掌握,以及对过往项目的业务理解。之所以令他印象深刻,是因为每轮都聊了一个半小时以上,确实让他受益匪浅。如果这些你回答不出来,那么我建议你刷一遍题库。我这里有一份Java架构成长笔记和滴滴、美团等大厂的面试真题,帮_字节面试几轮

c语言中阶乘相加怎么表示_c语言求阶乘累加和-程序员宅基地

展开全部题目中数据很大于是我们有了高精度算法思路是什么呢:一个数组里面每一位存的是十进制数三位(也62616964757a686964616fe58685e5aeb931333363383433可以只存一位,但是比较慢)也可以理解成一千进制这样能模拟大整数的乘法、加法#include#include#definemax(a,b)(a>b?a:b)intn;FILE*input,*..._c语言怎么算阶乘相加fac

oracle中的交集、并集、差集_oracle并集,交集,差集-程序员宅基地

oracle中的交集、并集、差集_oracle并集,交集,差集

python Tkinter学习笔记 简单的计算器 03-程序员宅基地

'''Created on 2013-9-27@author: liangqianwu'''#_*_ coding:utf-8_*_from Tkinter import * def frame(root,side): w=Frame(root) w.pack(side=side,expand=YES,fill=BOTH) return wdef butt

Python 保存加载mat格式文件_scipy.io.loadmat 数据是ndarray-程序员宅基地

mat为matlab常用存储数据的文件格式,python的scipy.io模块中包含保存和加载mat格式文件的API。_scipy.io.loadmat 数据是ndarray

随便推点

bitcount函数:统计x中值为1的二进制位数_c++ bitcount-程序员宅基地

bitcount(unsigned x):统计x中值为1的二进制位数 将x声明为无符号类型是为了保证将x右移时,无论该程序在什么机器上运行,左边空出的位都是0(而不是符号位)填补。1、通过右移操作实现#include <stdio.h>//通过右移操作实现int bitcount(unsigned x) { int b; for(b = 0; x != 0; x >>= 1) { if(x & 01) { b++; } } ._c++ bitcount

subString方法实现字符串/手机号截取功能_substring截取手机号_感谢一切给予的博客-程序员宅基地

package com.it.Stringjiequ;/*需求:实现手机号屏蔽如157****1234,实现:涉及到字符串截取1.首先调用subString()方法确定开始/结束索引截取前三位,然后继续调用subString()方法确定开始,直接截取到最后2.完成字符串的拼接即可** */import java.util.Scanner;public class Stringshoujihaopingbi { public static void main(String[] arg_substring截取手机号

QThread与多线程-程序员宅基地

QThread类为我们提供了一种平台无关的管理线程的方式。一个QThread对象管理应用程序中的一个线程,该线程从run()函数开始执行。并且,默认情况下,我们可以在run()函数中通过调用QThread::exec()函数来在当前线程中开启一个事件循环。

LaTeX中插入eps格式图片_latex怎么插入eps-程序员宅基地

之前向LaTeX插入图片的时候,一直使用.jpg格式,编译出来效果很不好,很多地方稍微放大就显得很模糊。后来采用.eps(Encapsulated Post Script)格式的图片,因为是矢量图,即使放大也不会失真,效果很好,推荐使用。下面介绍如何在LaTeX中插入.eps格式的图片。第一步:生成.eps格式的图片1、利用visio画图,另存为pdf格式的图片利用Adobe ..._latex怎么插入eps

关于android系统时间 NTP_安卓时间服务器地址-程序员宅基地

1、配置Android的NTP服务器地址目录:frameworks/base/core/res/res/values/config.xml1725 <!-- Remote server that can provide NTP responses. -->1726 <string translatable="false" name="config_ntpServer">cn.ntp.org.cn</string>cn.ntp.org.cn ..._安卓时间服务器地址

MATLAB中文件读取I/O-程序员宅基地

1、打开文件fid = fopen('filename', 'permission')fid在正常情况下应该返回一个非负整数,称为文件标识,如果返回的文件标识为-1,则表示fopen无法打开该文件,原因可能是该文件不存在,也可能是用户无权限打开此文件。filename是要打开的文件名称,permission则表示要对文件进行处理的方式.'r':只读文件(reading)'w':只...

推荐文章

热门文章

相关标签