DaQuant > 帮助 > 策略编写

2.9 指标调用

在大宽网中我们可以使用大宽网内置的指标,这里以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 = MACDUpdate(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")
上一页下一页