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

mac2025-09-12  14

文章目录

获取实时k线画蜡烛图进一步的可视化一个简易的多因子策略

获取实时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)

一个简易的多因子策略

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

BBANDS反转策略: 在BBANDS下界多单,上界空单, 当超出时按比例加仓(需要小仓位, 否则容易爆仓)超过MA30后加仓, 相反则减仓MA5>MA10时加仓,相反则减仓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)