backtrader概念(二)Trade
trade 交易
对于正常采用自由资金购买股票,不能做空的情况下。当针对某个行情数据对象下,一个订单使得仓位从0变为正值,则打开了一个交易,会触发 notify_trade();此后,当某个订单使仓位从正值变为0,则该交易关闭,会触发 notify_trade()
一个交易可以由多张订单组成
举个例子:
第一次下单,买100股,仓位从 0 变成 100。打开交易,触发notify_trade()
第二次下单,卖100股,仓位从 200 变成 100。不触发notify_trade()
第三次下单,买100股,仓位从 100 变成 0。关闭交易,触发notify_trade()
再加上可以做空的情况进行分析:
当仓位从0变成非0,则打开交易;此后仓位从非0,变为0,则关闭交易。
如果某个订单使得仓位从正值变到负值,或负值变到正值。则意味着两个动作,一个交易被关闭(非0->0),一个新的交易被打开(0->非0)。
打开交易,触发notify_trade,此时trade.status=1,open
关闭交易,触发notify_trade,此时trade.status=2,close
策略中 self.close():
不能做空的情况下,self.close()会一次性市价卖出全部仓位,关闭交易
可以做空的情况下,self.close()默认市价买回所有卖空仓位,关闭交易
trade对象的属性
ref:唯一交易标识符,int
data:交易涉及到行情数据对象
status:状态。0:Created、1:Open、2:Closed
tradeid:交易id,int,由创建订单时的参数tradeid设置, 如:self.buy(tradeid=1)。默认为0,用于区分不同类型的交易
size(int):交易当前的数量
price(float):交易的当前价格
value(float):交易的当前市值
commission(float):当前累计佣金
pnl(float):当前毛利或损失
pnlcomm(float):扣佣后的净利润
isclosed(boolen):交易是否关闭
isopen(boolen)::交易是否开放
justopened(boolen):交易是否刚刚打开
baropen(int):交易打开的bar
dtopen(float):交易打开的日期时间,使用方法open_datetime获取python的datetime.datetime,或使用backtrader提供的 num2date
barclose(int):交易关闭的bar
dtclose(float):交易关闭的日期时间
barlen(int):交易开放的bar数
historyon(boolen):是否记录交易历史
history(list):交易更新事件列表
trade对象的方法
getdataname(self,):获取涉及的行情数据对象名字
open_datetime(self, tz-None, naive=True):交易打开日期时间
close_datetime(self, tz-None, naive=True):交易关闭日期时间
update(self, order, size, price, value, commission, pnl, comminfo):更新当前交易
策略的 _trades 属性
作用:记录了发生过的交易trade列表
使用:
self._trades[self.data0][0]
含义:返回 与行情数据self.data0 相关的,tradeid为0 的trades列表
trade的history属性
一个记录每笔交易的详细历史。
使用:
首先创建cerebro时开启记录交易历史
cerebro = bt.Cerebro(tradehistory=True)
获取数据
def notify_trade(self, trade):for h in trade.history:
每个h中含有 status, event两个属性
h.status.status
h.status.dt
h.size
h.event.order
h.event.size
。。。
backtrader概念(二)Trade相关推荐
- 看《墨攻》理解IoC概念(二 )http://www.qqread.com/erp/3/j380307_3.html
看<墨攻>理解IoC概念(二) 巧巧电脑网络 2007-11-07 IT168 陈雄华 收藏此文 大 中 小 分享到QQ空间人人网开心网豆瓣新浪微博腾讯微博更多0 上一页123下一 ...
- C#基础概念二十五问 【二】 [转]
11.可以使用抽象函数重写基类中的虚函数吗? 答: 可以 需使用 new 修饰符显式声明,表示隐藏了基类中该函数的实现 或增加 override 修饰符,表示抽象重写了基类中该函数的实现 示例: cl ...
- C#面向对象 基础概念二十五个 (很基础,必须掌握的知识)
1.静态成员和非静态成员的区别? 2.const 和 static readonly 区别? 3.extern 是什么意思? 4.abstract 是什么意思? 5.internal 修饰符起什么作用 ...
- C#基础概念二十五问[转]
注:本文部份资料来自网络,如有侵权,请与我联系,我会在第一时间声明引用或将其删除! 当初学 C# 时是找个人大概问了一下数据类型和分支语句就开始做项目了.这两天又全面的看了一下相关的基础知识(学而时习 ...
- GIS的基本概念二:大地水准面、旋转椭球体(椭球体)、大地基准面
上一章粗略整理了一下坐标系的概念,基本理解如何用坐标来表示地理空间.面对现实的地球,还是有一个疑问.众所周知,我们的地球表面是一个凹凸不平的表面,对于地球测量而言,地表是一个无法用数学公式进行表达的曲 ...
- 基本电路概念(二)什么是电容?
一.前言 我儿子对电路板有一种近乎疯狂的痴迷,每次周末加班的时候,他总是恳求我带他一起到公司,就是为了能够看一看电路板.看一看电路焊接过程.为了不影响工作,我只能是找一些废旧的电路板,加上从蜗窝同学那 ...
- 密码学基础概念(二)
1.1密码学的基本概念 1.什么是密码学 密码学是保密学的一部分.保密学是研究密码系统或通信安全的科学,它实际上包含两个分支--密码学和密码分析学.密码学是对信息进行编码实现隐蔽信息的一门科学:而密码 ...
- C#基础概念二十五问
注:本文部份资料来自网络,如有侵权,请与我联系,我会在第一时间声明引用或将其删除! 当初学 C# 时是找个人大概问了一下数据类型和分支语句就开始做项目了.这两天又全面的看了一下相关的基础知识(学而时习 ...
- 新概念二册 Lesson 36 Across the Channel横渡海峡(非限定性定语从句)
文章目录 1 课文 2 单词 2.1 record [ˈrekɔ:d] n. 纪录 2.2 strong [strɒŋ] adj.强壮的 2.3 swimmer [ˈswɪmə(r)] n.游泳运动员 ...
- 外显子和基因组基本概念(二)
上接:外显子和基因组基本概念(一) (补)细胞周期(Cell cycle):含间期(Interphase)与分裂期(即M期:Mitosis有丝分裂:Meiosis减数分裂)两个阶段. 间期分为:DNA ...
最新文章
- 继承和多态 1.0 -- 继承概念(is-a、has-a,赋值兼容规则,隐藏重定义)
- gentoo下gnome的抓图功能
- Android开发者必备:推荐一款助力开发的开源APP
- Guru of the Week 条款01: 变量的初始化
- CentOS7 安装 Node.js
- 英语学习过程中的几点体会(1)
- asp 下拉框二级联动
- zabbix加vm虚拟服务器,zabbix监控vmware exsi主机的图文步骤
- Bootstrap3 工具提示插件的选项
- Java回文数的判断与生成
- Google Code 开源项目
- torch.nn.Module.named_buffers(prefix=‘‘, recurse=True)
- 端口(port)详解
- 哈工大2022计统大作业
- Handler消息机制介绍,流程梳理
- OLAP引擎 :CH Doris impala+kudu优缺点分析
- 详解train_test_split()函数(官方文档有点不说人话)
- 赛宝-亿能软件测试技术沙龙第1期 – 性能测试工程师职业规划与成长之路
- 500内部服务器错误。你查找的资源存在问题,因而无法显示
- 基于flowable的审批系统安装及部署