专栏首页钱塘小甲子的博客Backtrader量化平台教程(二):Strategy类

Backtrader量化平台教程(二):Strategy类

AD:(本人录制的backtrader视频课程,大家多多支持哦~ https://edu.csdn.net/course/detail/9040

上次我们分析了回测平台大的框架,这次着重介绍一下策略的编写。先来看一个策略的类,上次说了,一个策略其实被一个类完全描述了。

# Create a Stratey
class TestStrategy(bt.Strategy):

    def log(self, txt, dt=None):
        ''' Logging function fot this strategy'''
        dt = dt or self.datas[0].datetime.date(0)
        print('%s, %s' % (dt.isoformat(), txt))

    def __init__(self):
        # Keep a reference to the "close" line in the data[0] dataseries
        self.dataclose = self.datas[0].close

    def next(self):
        # Simply log the closing price of the series from the reference
        self.log('Close, %.2f' % self.dataclose[0])

        if self.dataclose[0] < self.dataclose[-1]:
            # current close less than previous close

            if self.dataclose[-1] < self.dataclose[-2]:
                # previous close less than the previous close

                # BUY, BUY, BUY!!! (with all possible default parameters)
                self.log('BUY CREATE, %.2f' % self.dataclose[0])
                self.buy()

        既然是类,那么肯定要initiation,策略类当然也一样。这里,我们的初始化函数就是获取了一个数据而已。这个数据的来源就是我们喂给框架的DataFeed。

       这里初始化的数据是一个很重要的东西,是一个heartbeat。什么叫做heartbeat呢?就是一个时间基准,在strategy类中,当我们获取下标为0的数据的时候,表示的是当前的数据,而-1则是前一时刻,一次类推。既然有了时间线,那么怎么走呢?所以我们有一个next方法,这个方法写的其实就是整个策略的核心部分了,就是你要判断什么时候买股票,什么时候卖股票,卖多少,买多少。这个方法,顾名思义,就是每次一天的数据使用完,就会被cerbero调用,所以叫做next。

这样,整个基本的框架就搭建完毕了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • vn.py源码解读(三、事件驱动引擎代码分析)

            先抛开一切,我们来想一想,如果自己要写一个事件驱动引擎会怎么写?之前也说过,所谓的事情驱动就是你要监听一些事件,当某些事件发生的时候,要分配相对...

    钱塘小甲子
  • vn.py源码解读(四、主引擎代码分析----初始化函数)

            vnpy有一个叫做主引擎的东西,在三里面也说过,个人觉得这个应该是一个运行框架的东西,不应该叫做引擎,不过没关系,名字而已嘛。这一篇呢主要就是分...

    钱塘小甲子
  • vn.py源码解读(一、环境配置与回测初试)

            近来忙于毕业找工作,也不知道能不能继续在量化界混了。周末比较闲,抽空研究了一下vn.py。有人说,为什么学那么多的回测平台呀。其实我个人觉得,做...

    钱塘小甲子
  • 解决强化学习反馈稀疏问题之HER方法原理及代码实现

    本文将介绍一种修改目标,使有效回报数量变多的方法。该方法称简称HER (paper地址):https://arxiv.org/abs/1707.01495v1。

    J.Q.Wang@2048
  • vn.py源码解读(三、事件驱动引擎代码分析)

            先抛开一切,我们来想一想,如果自己要写一个事件驱动引擎会怎么写?之前也说过,所谓的事情驱动就是你要监听一些事件,当某些事件发生的时候,要分配相对...

    钱塘小甲子
  • 强化学习反馈稀疏问题-HindSight Experience Replay原理及实现!

    在强化学习中,反馈稀疏是一个比较常见同时令人头疼的问题。因为我们大部分情况下都无法得到有效的反馈,模型难以得到有效的学习。为了解决反馈稀疏的问题,一种常用的做法...

    石晓文
  • 读 SnapKit 和 Masonry 自动布局框架源码

    一直觉得 SnapKit 和 Masonry 这两个框架设计和封装的很好,用起来的体验也是一致的,翻了下它们的源码,对其设计方式和涉及的技术做了下记录。文章打算...

    用户7451029
  • Python导入自定义类

    现有自定义类(Color.py)如下,类位于路径’/Users/chuxing/python/test’下:

    py3study
  • DWIntrosPage 简单定制引导页

    下面摘取部分代码 DWIntrosPageContentViewController

    Dwyane
  • PyQt5--QToggleButton

    py3study

扫码关注云+社区

领取腾讯云代金券