在大宽网中我们可以使用大宽网内置的指标,这里以MACD为例说明,其他的指标调用请参见第六章技术分析。
x# -*- coding: UTF-8 -*-
class Main(Algorithm):
code = 'rb0000' ##设定交易标的
barDate = LocalDate.of(2010, 4, 16)
def init(self):
startDate = LocalDate.of(2016, 1, 1)
self.setStartDate(startDate)
self.setEndDate(2016, 12, 31)
self.lastOpenDateTime = LocalDateTime.of(2016, 1, 1, 9, 0)
self.setDrive(TimeFrame.MIN_5)
self.barseries = self.addQuotation(TimeFrame.MIN_5, self.code)
self.macd = MACD(10,15,5)
def onData(self):
if self.barseries.size()<=1 :
return
self.macd.update(self.barseries.close(1)) ## 更新指标
self.info("DEA:"+ str(self.macd.DEA.last(0))) ##将相应的指标值输出
## self.info("DIF:" + str(self.macd.DIF.last(0))) ##将相应的指标值输出
## self.info("MACD:"+ str(self.macd.MACD.last(0))) ##将相应的指标值输出
## 如果MACD长度小于2 就返回
if self.macd.MACD.size() <2:
return
## 做逻辑判断
if self.macd.DEA.last(0)>0 and self.macd.MACD.last(0) >self.macd.MACD.last(1):
self.info("do something")
def onComplete(self):
self.info("end")
由上面的例子我们可以看出:对于指标的使用同其他对象一样 。 一般可以分为:申明定义,指标更新及更新使用。
申明定义
上面的例子是在init()方法中申明与初始化
xxxxxxxxxx
self.macd = MACD的Update(10,15,5)
对指标进行更新
调用了MACD的Update()方法对MACD中的相关变量进行了更新。这个方法要放在策略的onData方法中,使用BAR数据更新。
xxxxxxxxxx
self.macd.update(self.barseries.close(1)) ## 更新指标
使用指标
对于指标的使用比较灵话,可以是数据更新计算,也可以是逻辑判断处理。
xxxxxxxxxx
self.info("DEA:"+ str(self.macd.DEA.last(0))) ##将相应的指标值输出
self.info("DIF:" + str(self.macd.DIF.last(0))) ##将相应的指标值输出
self.info("MACD:"+ str(self.macd.MACD.last(0))) ##将相应的指标值输出
if self.macd.MACD.size() <2:
return
if self.macd.DEA.last(0)>0 and self.macd.MACD.last(0) >self.macd.MACD.last(1):
self.info("do something")