欢迎光临
专业期货策略平台

博易云量化交易开发教程6

常用指标

常用指标

做行情分析和交易判断常用的一些指标,如MACD、KDJ等,具体支持的指标见下方表格。

参数

指标计算参数见下方表格,包含目前支持的指标,参数,默认参数值

指标品种和K线周期参数设置方法同GetHisData,具体如下:

Code:合约代码 + 市场代码

BarType K线类型,如日线周线月线分钟线

详细周期:Year 、Season 、Month 、Week 、Day、Min240、Min120、Min60、Min30、Min15、Min5、Min3、Min

option 可设定前/后复权,可指定StartDate/EndDate/Count

option.WeightType:0为不复权,1为前复权,2为后复权

注意:StartDate/EndDate/Count,取两个使用,如option.StartDate = datetime.datetime(2012, 3, 5)起始,option.Count = 10 总K线数,则得到的K线数据是从12年3月5号到15号;

option也可不设置,如KDJ.Attach(g.code, BarType.Day)

返回

GetValue获取指标计算结果,返回一个list,包含每一根K线对应的指标结果; GetValueAt获取获取指定日期/时间的指标计算结果,返回一个词典,如{‘DEA’: -0.02339127950538261, ‘serial’: 6514, ‘MACD’: -0.007363316204148762, ‘DIF’: -0.027072937607456993, ‘datetime’: datetime.datetime(2016, 12, 12, 11, 25)}。

示例

#创建KDJ对象
KDJ = CreateIndicator("KDJ")
#设定参数,也可以不设置,系统有自带的默认参数,见下表
param = {"N":9,"M1":3,"M2":3}
KDJ.SetParameter(param)
#设定要计算KDJ的品种和K线周期
if KDJ:
  KDJ.Attach(g.code, BarType.Day)
#开始计算
KDJ.Calc()
#获取计算结果,返回对应结果的list
K = KDJ.GetValue("K")
D = KDJ.GetValue("D")
J = KDJ.GetValue("J")
if len(K)>0:
  print 'K' + str(K[-1])
  print 'D' + str(D[-1])
  print 'J' + str(J[-1])
#获取当前时间一根K线的指标值,返回一个词典
time = GetCurrentTime()
cukdj = KDJ.GetValueAt(time)
print cukdj

支持的指标

指标名称参数及默认值输出结果
KDJ随机指标{“N”:9,”M1″:3,”M2″:3}K/D/J
KD随机指标{“N”:9,”M1″:3,”M2″:3}K/D
DMA平均线差{“SHORT”:10,”LONG”:50,”M”:10}DDD/AMA
MACD指数平滑异同平均线{“SHORT”:12,”LONG”:26,”M”:9}DIF/DEA/MACD
MASS梅斯线{“N1″:9,”N2″:25,”M”:6}MASS/MAMASS
MFI资金流量指标{“N”:14,”N2″:6 }MFI
TRIX三重指数平滑平均线{“N”:12,”M”:9 }TRIX/TRMA
BIAS乖离率{“L1″:6,”L2″:12,”L3”:24}BIAS1/BIAS2/BIAS3
CCI顺势指标{“N”:14}CCI
DPODetrended Price OscillatorDPO
W&R威廉指标{“N”:14}W&R
RSI相对强弱指标{“N1″:6,”N2″:12,”N3”:24}RSI1/RSI2/RSI3
SLOWKD慢速KD{“N”:9,”M1″:3,”M2″:3, “M3”:5}K/D
ARBR人气意愿指标{“N”:26}AR/BR
CRCR能量指标{“N”:26,”M1″:5,”M2″:10, “M3”:20, “M4”:62}CR/MA1/MA2/MA3/MA4
VRVR容量比率{“N”:26}VR
AMV成本价均线{“M1″:5,”M2”:13, “M3”:34, “M4”:60}AMV1/AMV2/AMV3/AMV4
ASI振动升降指标ASI
OBV能量潮OBV
PVTPrice/Volume TrendPVT
WVAD威廉变异离散量WVAD
BRAR情绪指标{“M”:26,”N”:26 }BR/AR
MOM动量线{“N”:12,”M”:6 }MOM1/MOM2
MTMMTM动力指标{“N”:12,”M”:6 }MTM/MTMMA
OSC变动速率线{“N”:20,”M”:6 }OSC/MAOSC
PSY心理线{“N”:12,”M”:6 }PSY/PSYMA
WAD威廉多空力度线{“M”:30}WAD/MAWAD
ADAccumulation/DistributionAD
ATR真实波幅{“N”:15}TR/ATR
VOL成交量{“M1″:5,”M2”:10}VOLUME/MAVOL1/MAVOL2
BBI多空指数{“M1″:3,”M2”:6, “M3”:12, “M4”:24}BBI
EXPMA指数平滑移动平均线{“P1″:5,”P2”:10, “P3”:20, “P4”:60}MA1/MA2/MA3/MA4
MA均价{“P1″:5,”P2”:10, “P3”:20, “P4”:40, “P5″:60,”P6”:0, “P7”:0, “P8”:0}MA(5)/MA(10)/MA(20)/MA(40)/MA(60)括号里的数字由ma均线周期参数决定
SAR抛物转向{“N”:10,”S”:2,”MAXP”:20}SAR
SARPB抛物转向(澎博){“N”:10,”S”:2,”MAXP”:20}SARPB
VMA变异平均线{“M1″:6,”M2”:12, “M3”:30, “M4”:72, “M5”:144}VMA1/VMA2/VMA3/VMA4/VMA5
BOLL布林线{“N”:26,”P”:2}MID/UPPER/LOWER
MIKE麦克指标{“N”:12}WR/MR/SR/WS/MS/SS

时间函数

设定计时时间—SetTimer

设定计时时间—SetTimer(Second) 结合计时器OnTimer事件使用,每过设定好的秒数调用一次计时器OnTimer事件,直到KillTimer结束定时器为止

参数

Second 秒数

示例

timerid = SetTimer(5)

结束计时器—KillTimer(id)

参数

id:要结束的计时器ID

示例

def OnStart(context) :
    context.counter = 0
    TimerID = SetTimer(2)
def OnTimer(context, timerid) :
    context.counter += 1
    print "I\'ve been hitted by " + str(timerid) + " and Counter is " + str(context.counter) + " at " + str(GetCurrentTime())
    if context.counter >= 5 :
        ret = KillTimer(timerid)
        if ret :
            print "KillTimer " + str(timerid)

获取当前时间—GetCurrentTime

参数

返回

datetime格式的当前时间

示例

cutime = GetCurrentTime()

获取当前交易日—GetCurrentTradingDate

获取当前交易日—GetCurrentTradingDate(exchange)

参数

exchange 交易所代码,如’SHFE’代表上期所、’DCE’代表大商所、’CZCE’代表郑商所

返回

datetime格式的当前交易日

示例

a = GetCurrentTradingDate('SHFE')
print '当前交易日: ' + str(a)

获取前一交易日—GetPreviousTradingDate

获取前一交易日—GetPreviousTradingDate(exchange,CurrentTradingDate)

参数

exchange 交易所代码,如’SHFE’代表上期所、’DCE’代表大商所、’CZCE’代表郑商所

CurrentTradingDate 当前交易日,传入一个datetime格式的时间,根据这时间找前一交易日,也可以用GetCurrentTradingDate获取当前交易日

返回

datetime格式的前一交易日

示例

a = GetCurrentTradingDate('SHFE')
b = GetPreviousTradingDate('SHFE',a)
print '前一交易日: ' + str(b)

获取后一交易日—GetNextTradingDate

获取后一交易日—GetNextTradingDate(exchange,CurrentTradingDate)

参数

exchange 交易所代码,如’SHFE’代表上期所、’DCE’代表大商所、’CZCE’代表郑商所

CurrentTradingDate 当前交易日,传入一个datetime格式的时间,根据这时间找后一交易日,也可以用GetCurrentTradingDate获取当前交易日

返回

datetime格式的后一交易日

示例

a = GetCurrentTradingDate('SHFE')
c = GetNextTradingDate('SHFE',a)
print '后一交易日: ' + str(c)

获取交易日列表—GetTradingDates

获取交易日列表—GetTradingDates(exchange,startdate,enddate),用来获取一段时间段内的交易日列表

参数

exchange 交易所代码,如’SHFE’代表上期所、’DCE’代表大商所、’CZCE’代表郑商所

startdate 起始日期,可以传入datetime格式的时间,也可以直接传入数字格式的,如20181018

enddate 结束日期,可以传入datetime格式的时间,也可以直接传入数字格式的,如20181031

返回

一个list,包含这段时间内的所有交易日,交易日是datetime格式的

示例

d = GetTradingDates('SHFE',20181018,20181031)
print d

其他函数

日志log

log.error(content)

log.warn(content)

log.info(content)

log.debug(content)

print content1, content2, …

print输出的结果等同于log.info, 但是print后面的每一个元素会占用一行

参数

可以是字符串、list等

返回

None

示例

def OnQuote(context,code) :
    print '调用到OnQuote事件'
    dyndata = GetQuote("rb1905.SHFE")
    log.debug('最新价: ' + str(dyndata.now))
    log.warn( '最新价: ' + str(dyndata.now))
    log.error( '最新价: ' + str(dyndata.now))
    log.info( '最新价: ' + str(dyndata.now))

回测标志函数IsBackTest

调用函数IsBackTest(),用于Python策略判断自己现在的运行状态是否属于回测。

参数

返回

bool型,true表示目前属于回测,false表示是实跑

示例

isback = IsBackTest()

0 0 vote
Article Rating
Click to rate this post!
[Total: 0 Average: 0]
赞(0) 打赏
未经允许不得转载:A期客 » 博易云量化交易开发教程6
订阅
提醒
guest
0 评论
Inline Feedbacks
View all comments

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

0
Would love your thoughts, please comment.x
()
x