《MATLAB金融算法分析实战》之量化投资趋向指标1— python实现

《MATLAB金融算法分析实战》之量化投资趋向指标1— python实现

这本书我个人比较喜欢,也学习到了很多东西,matlab上学的时候没好好学,最近发现python写一遍也很有意思,除了速度慢点。本篇博客仅当作个人记录用,推荐大家买原版书去学习。

《MATLAB金融算法分析实战:基于机器学习的股票量化分析》全面系统地讲解了MATLAB金融算法分析与应用,以及金融数据挖掘中的趋向和发展趋势指标,并结合具体的机器学习算法分析,让读者深入学习和掌握MATLAB金融数据机器学习算法。

第四章 量化投资趋向指标

量化投资趋向指标是广大投资者经常参考的指标,例如MACD和QACD曲线,很多的散户、新手也会在不知其所以然的情况下,进行自行判断股票的涨跌趋势。本章主要围绕升降线指标ACD、动向平均数指数ADX、多空指数BBI、佳庆指标CHO、市场趋势指标CYE、方向标准离差指数DDI、平均线差指标DFMA、趋向指标DMI、简单波动指标EMV、鬼道线指标GDX、绝路航标指标JLHB等内容。

4.1 升降线指标(ACD)

升降线(ACD)是分析股票收盘价与股票最高价、股票最低价间关系的指标。
升降线指标(ACD)下降,而股票价格上升时,此时投资者可以卖出手中股票;
升降线指标(ACD)上升,而股票价格下降时,投资者可以考虑买入该股票;
升降线(ACD)指标上穿其20日均线时,为买入信号;升降线(ACD)指标下穿其20日均线时,为卖出信号

ACD升降线指标的计算公式如下:

《MATLAB金融算法分析实战》之量化投资趋向指标1— python实现_第1张图片
其中,LC为昨日股票收盘价。
如果今天的股票收盘价大于昨日的股票收盘价,则今天DIF为今天的股票收盘价与今天的股票最低价和昨日的股票收盘价的最小值的差值;如果今天的股票收盘价小于等于昨日股票收盘价,则今天的DIF为今天的股票收盘价与今天的股票最高价和昨日的股票收盘价的最小值的差值。
如果今天的股票收盘价等于昨天的股票收盘价,则今天的ACD计算值为昨天的ACD计算值;如果今天的股票收盘价不等于昨天的股票收盘价,则今天的ACD计算值为今天的DIF计算值与昨天的ACD值之和。

具体的ACD升降线指标的函数程序如下:

#highprice为股票最高价,lowprice为股票最低价,closeprice为股票收盘价
def ACD(highprice,lowprice,closeprice):
    dif = closeprice.copy()
    acd = [0 for x in range(len(closeprice))]
    for i in range(1,len(closeprice)):
        if closeprice[i]>closeprice[i-1]:
            dif[i] = closeprice[i]-min(lowprice[i],closeprice[i-1])
        else:
            dif[i] = closeprice[i]-max(highprice[i],closeprice[i-1])
        
        if closeprice[i] == closeprice[i-1]:
            acd[i] = acd[i-1]
        else:
            acd[i] = acd[i-1]+dif[i]
    
    del dif
    return acd

测试数据:近一周8连涨停的复旦复华(600624)历史数据(数据来源:网易财经)

爬取股票数据,参考待定

url = 'http://quotes.money.163.com/service/chddata.html?code=0{}&start={}&end={}&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;CHG;PCHG;TURNOVER;VOTURNOVER;VATURNOVER;TCAP;MCAP'.format(stockcode,starttime,endtime)
urllib.request.urlretrieve(url, filepath+stockcode+'.csv')

data = pd.read_csv(filepath+stockcode+'.csv',parse_dates=True,engine = 'python')
data.sort_values(by='日期', inplace=True, ascending=True)
data = data.reset_index(drop = True)
data['日期'] = pd.to_datetime(data['日期'],format='%Y-%m-%d')
data['月份'] = data['日期'].dt.month
data.head()

《MATLAB金融算法分析实战》之量化投资趋向指标1— python实现_第2张图片
用matplotlib看一下

fig,ax = plt.subplots(figsize = (14,10))
df.plot(x = '日期',y = '收盘价',color = 'r',ax = ax)
df.plot(x = '日期',y = 'ACD',color = 'b',ax = ax)

《MATLAB金融算法分析实战》之量化投资趋向指标1— python实现_第3张图片
可以看出,升降线指标ACD逼近股票的走势,但是相对滞后股票的走势,可进行短期预测。

引用:
[1]MATLAB金融算法分析实战 https://yuedu.baidu.com/ebook/72c2fe159a6648d7c1c708a1284ac850ad0204d5?pn=1&click_type=10010002
[2]网易财经 http://quotes.money.163.com/trade/lsjysj_600624.html#01b07

你可能感兴趣的:(金融算法)