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

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

无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。教程链接:https://www.cbedai.net/qtlyx

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

  1. # Create a Stratey
  2. class TestStrategy(bt.Strategy):
  3. def log(self, txt, dt=None):
  4. ''' Logging function fot this strategy'''
  5. dt = dt or self.datas[0].datetime.date(0)
  6. print('%s, %s' % (dt.isoformat(), txt))
  7. def __init__(self):
  8. # Keep a reference to the "close" line in the data[0] dataseries
  9. self.dataclose = self.datas[0].close
  10. def next(self):
  11. # Simply log the closing price of the series from the reference
  12. self.log('Close, %.2f' % self.dataclose[0])
  13. if self.dataclose[0] < self.dataclose[-1]:
  14. # current close less than previous close
  15. if self.dataclose[-1] < self.dataclose[-2]:
  16. # previous close less than the previous close
  17. # BUY, BUY, BUY!!! (with all possible default parameters)
  18. self.log('BUY CREATE, %.2f' % self.dataclose[0])
  19. self.buy()

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

 

 

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

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

 

 

 

(0)

相关推荐