backtrader中何为一个交易trade?你可能并没理解它

本文围绕backtrader回测程序展开,介绍当交易trade状态改变时会触发策略的notify_trade方法。阐述了backtrader中交易的定义,包括不能做空和可以做空两种情况。还提及了高级用法,如记录交易对象、对交易分类等,可指定订单所属交易类型进行分析。

1 概述

在backtrader回测程序中,当交易trade状态发生改变时,会触发策略的notify_trade方法,这里头可以输出交易trade信息,例子如下:

记录交易收益情况(可省略,默认不输出结果)

def notify_trade(self, trade):       
   
    if trade.isclosed:
        print('毛收益 %0.2f, 扣佣后收益 % 0.2f, 佣金 %.2f' %
              (trade.pnl, trade.pnlcomm, trade.commission))

不仔细的话,你可能想当然以为你已经理解了trade的概念,但仔细想想,你真的理解了吗?trade状态核实发生改变?他有几个状态?它到底是什么意思?很快你就会模糊了!

在我们一般买卖股票时,只涉及向券商发订单,并无交易(trade)的概念。并不是下一个买单,就是一个交易,下一个卖单,又代表另一个交易。交易的概念实际是用户方的概念。

2 那么backtrader中是如何定义交易的呢?

对正常采用自有资金购买股票,不能做空的情况下,当一个订单使得仓位从0变为正值,则打开了一个交易,此后,当某订单使得仓位从正值变为0,则该交易关闭,这两种情况都会触发notify_trade方法。

一个交易可能由多个订单组成。不能做空的情况下,举个例子观察交易状态的变化,在next方法中:

第一次下买单买100股,此订单执行时,仓位从0变为正值(100),系统打开一个交易,会触发notify_trade方法,在notify_trade中检查交易状态status,为1 open。

然后下第二张买单100股,订单执行时不会触发notify_trade,仓位变为200。

然后下卖单卖100股,仍然不会触发notify_trade,仓位变为100。

再下一个卖单卖100股,执行时,仓位从10

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扫地僧量化

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值