Python版MACD画图范例

1 篇文章 0 订阅
1 篇文章 0 订阅

Python版MACD画图范例

代码非常简单:

‘’‘backtest
start: 2021-06-24 00:00:00
end: 2021-07-24 00:00:00
period: 1d
exchanges: [{“eid”:“OKEX”,“currency”:“BTC_USDT”}]
‘’’

ChartCfg = {
‘__isStock’: True,
‘title’: {
‘text’: ‘Python画图’
},
‘yAxis’: [{
‘title’: {‘text’: ‘K线’},
‘style’: {‘color’: ‘#4572A7’},
‘opposite’: False
}, {
‘title’: {‘text’: ‘指标轴’},
‘opposite’: True
}],
‘series’: [{
‘type’: ‘candlestick’,
‘name’: ‘当前周期’,
‘id’: ‘primary’,
‘data’: []
}, {
‘type’: ‘line’,
‘id’: ‘dif’,
‘name’: ‘DIF’,
“yAxis” : 1,
‘data’: []
}, {
‘type’: ‘line’,
‘id’: ‘dea’,
‘name’: ‘DEA’,
“yAxis” : 1,
‘data’: []
}, {
‘type’: ‘line’,
‘id’: ‘macd’,
‘name’: ‘MACD’,
“yAxis” : 1,
‘data’: []
}]
}

def main():
global ChartCfg
preTime = 0
chart = Chart(ChartCfg)
chart.reset()
while True:
while True:
r = _C(exchange.GetRecords)
if len® > 50:
break
# 计算指标
macd = TA.MACD®

    LogStatus(_D(), len(r))
    
    # 画图
    for i in range(len(r)):
        if r[i]["Time"] == preTime:
            chart.add(0, [r[i]["Time"], r[i]["Open"], r[i]["High"], r[i]["Low"], r[i]["Close"]], -1)
            chart.add(1, [r[i]["Time"], macd[0][i]], -1)
            chart.add(2, [r[i]["Time"], macd[1][i]], -1)
            chart.add(3, [r[i]["Time"], macd[2][i]], -1)
        elif r[i]["Time"] > preTime:
            chart.add(0, [r[i]["Time"], r[i]["Open"], r[i]["High"], r[i]["Low"], r[i]["Close"]])
            chart.add(1, [r[i]["Time"], macd[0][i]])
            chart.add(2, [r[i]["Time"], macd[1][i]])
            chart.add(3, [r[i]["Time"], macd[2][i]])
            preTime = r[i]["Time"]
    Sleep(500)

ChartCfg 图表配置字典
这个ChartCfg字典变量中保存的是图表配置信息,例如:
这个图表中有几条线?(三条指标线,分别是DIF、DEA、MACD)
这个图表中有K线么?(‘type’: ‘candlestick’ 这个类型就是指设置为K线数据)
MACD数值都比较小,如果交易对是BTC_USDT,画图的时候就会指标压缩在一起很不方便看,所以图表还要配置为2个Y轴。(所以’yAxis’中有两个Y轴配置,一个是指标轴,一个是K线轴)

载入数据
在这个范例策略中main函数开始执行图表的初始化,调用Chart函数,把图表配置ChartCfg作为参数传入,生成一个图表对象chart。然后进入一个循环,不停的获取K线数据,判断K线数据BAR数量只要大于50个就可以计算MACD指标(BAR太少算不出有效指标)。然后就可以把K线数据和指标数据写入图表了。
写入图表使用chart对象的方法add函数。
写入时,如果指定add函数的最后一个参数-1,为更新当前数据点的数值。如果不传-1,为新增一个数据点。
当K线BAR新生成时,新增一个数据点,当K线BAR没有生成时,更新最后一个BAR和对应的指标。(通过K线BAR的时间戳对比判断出)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值