从k-line到决策实践:huobi api实现(一)

获取实时k线

import requests
import pandas as pd
url = 'https://api.hbdm.com/market/history/kline?symbol=ETH_CQ&period=5min&size=200'
result = requests.get(url=url, timeout=2).json()['data']
k = pd.DataFrame(result)

画蜡烛图

蜡烛图对于直观理解很重要. mpl.finance早已迁移至mpl_finance, 此外在有时画蜡烛图需要涉及时间格式的处理(请参考这里)

import matplotlib.pyplot as plt
import mpl_finance as mpf
fig, ax = plt.subplots()
#mpf.candlestick_ochl(ax, quotes) #涉及对时间的不必要处理, 不好用
mpf.candlestick2_ochl(ax, k['open'], k['close'], k['high'], k['low'], width=1, colorup='r',colordown='g')

在这里插入图片描述

进一步的可视化

这里将使用talib
talib的安装与简易使用, BBANDS函数解析之后再写
民工三连: MA, MACD, BBANDS

from talib import MA,MACD,BBANDS
u,m,l = BBANDS(k['close'])
ma5 = MA(k['close'], 5)
ma10 = MA(k['close'], 10) 
fig, axs = plt.subplots(2,1)
mpf.candlestick2_ochl(axs[0], k['open'], k['close'], k['high'], k['low'], width=1, colorup='r',colordown='g')
axs[0].plot(ma5, color='b')
axs[0].plot(ma10, color=(0.1, 0.2, 0.5))
axs[0].plot(u, color='y')
axs[0].plot(l, color='y')
macd, macdsignal, macdhist = MACD(k['close'], fastperiod=12, slowperiod=26, signalperiod=9)
axs[1].plot(macd)
axs[1].plot(macdsignal)
axs[1].bar(range(len(macdhist)),macdhist)

在这里插入图片描述

一个简易的多因子策略

根据经验观测, 尝试构造以下简单策略:

  1. BBANDS反转策略: 在BBANDS下界多单,上界空单, 当超出时按比例加仓(需要小仓位, 否则容易爆仓)
  2. 超过MA30后加仓, 相反则减仓
  3. MA5>MA10时加仓,相反则减仓
  4. macd上突后加仓, 相反则减仓

实现(理想情况)(用于回测):

stackmalong = (k['close']>ma30)*1.0
stackmashort = (ma5>ma10)*2.0 
stackmacd = (mahist>0)*2.0
#bbands 策略略微复杂一些,

决策(用于交易)(伪代码)
具体的实现将在下一篇文章里

stackc = current_stack = hold/asset+1
stackr = recommended_stack = f(k)
if stackr-stackc>0:
	tobuy = (stackr-stackc)*asset*p/100
	equprice = f2(depth)
	api_buy(tobuy, equprice)
else:
	tosell = (stackr-stackc)*asset*p/100
	equprice = f2(depth)
	api_sell(tosell, equprice)

此外, k线并非只由close构成, 尤其是合约中由于止损/爆仓的存在, 会出现上下插针的情况, 对于简单策略影响很大
将盘口纳入考量也十分必要, 限于篇幅暂不表述
在high/low中经常会触发策略,而等k线结束通常早就凉了, 长线可能还好, 短线会哭的**都不认识的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值