自己做量化交易软件(39)小白量化实战12–利用神经网络程序预测价格上涨

自己做量化交易软件(39)小白量化实战12–利用神经网络程序预测价格上涨
大家使用小白量化软件的主要目不是为了仿通达信公式和仿大智慧公式,大家主要的目的想利用Python神经网络和深度学习等功能来用人工智能AI程序研究股市。从这篇文章开始,我逐步给大家介绍,如何利用小白量化金融模块库来实现自己的深度学习程序。
人工神经网络(Artificial Neural Networks,简写为ANNs)是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的,并具有自学习和自适应的能力。
人工神经网络分为浅层神经网络和深层神经网络。浅层神经网络有很多非线性分类器,深层神经网络有很多深度学习模型,后期再介绍深度学习程序预测股价。
这篇文章主要介绍浅层神经网络分类器的功能,可以简单地说,我们的目的就是让神经网络学习历史行情数据学习,对未来股价涨跌做分类(上涨或不上张,也就是预测)。即根据当前数据预测下一周期,上涨(数值1.0)或不上涨(数值0.0)。
Python的sklearn库有很多学习算法,我以神经网络模型向量机(SVM)机器学习算法为例做介绍。
假定我们获取日线数据800条,选取前790条数据进行学习,拿最后10条数据做验证。实际操作需要使用数百万条数据,甚至更多数据,才会有准确效果。这里是学习神经网络的演示例子。
历史行情涨跌是已知的,我们可以根据实际涨跌做涨跌标记label,我们把下一周期涨跌结果移动到前一周期,做学习标签label2。
数据源只有K线数据是不够的,我们又加了一些常规技术指标,读者可以拿自编指标来测试。
准备工作,如果读者使用[绿色Py37],需要按如下顺序卸载旧库,再安装新库。

自己做量化交易软件(39)小白量化实战12--利用神经网络程序预测价格上涨
安装最新的sklearn库:

程序安装完就可以运行下面的深度学习程序了。这个程序是我给读者做的神经网络入门学习程序,已经有详细的说明了。有疑问可在读者群中交流。演示程序使用了很多常规指标,都可以进行替换。

#购买零基础搭建量化投资系统>正版书,送小白量化软件源代码。# https://item.jd.com/61567375505.html#独狼荷蒲qq:2775205#通通python量化群:524949939#电话微信:18578755056#微信公众号:独狼股票分析from HP_formula import *  #小白量化仿通达信公式函数库import HP_tdx as htdx  #小白量化通达信行情库#KDJ指标def KDJ(N=9, M1=3, M2=3):    RSV = (CLOSE - LLV(LOW, N)) / (HHV(HIGH, N) - LLV(LOW, N)) * 100    K = SMA(RSV,M1,1)    D = SMA(K,M2,1)    J = 3*K-2*D    return K, D, J#RSI指标def RSI(N1=5):    LC = REF(CLOSE, 1)    RSI1 = SMA(MAX(CLOSE - LC, 0), N1, 1) / SMA(ABS(CLOSE - LC), N1, 1) * 100.00    return RSI1def VR(M1=26):    """    VR容量比率    """    LC = REF(CLOSE, 1)    VR = SUM(IF(CLOSE > LC, VOL, 0), M1) / SUM(IF(CLOSE  LC, VOL, 0), M1) * 100    return VRdef ARBR(M1=26):    """    ARBR人气意愿指标    """    AR = SUM(HIGH - OPEN, M1) / SUM(OPEN - LOW, M1) * 100    BR = SUM(MAX(0, HIGH - REF(CLOSE, 1)), M1) / SUM(MAX(0, REF(CLOSE, 1) - LOW), M1) * 100    return AR, BRdef DMI(M1=14, M2=6):    """    DMI 趋向指标    """    TR = SUM(MAX(MAX(HIGH - LOW, ABS(HIGH - REF(CLOSE, 1))), ABS(LOW - REF(CLOSE, 1))), M1)    HD = HIGH - REF(HIGH, 1)    LD = REF(LOW, 1) - LOW    DMP = SUM(IF((HD > 0) & (HD > LD), HD, 0), M1)    DMM = SUM(IF((LD > 0) & (LD > HD), LD, 0), M1)    DI1 = DMP * 100 / TR    DI2 = DMM * 100 / TR    ADX = MA(ABS(DI2 - DI1) / (DI1 + DI2) * 100, M2)    ADXR = (ADX + REF(ADX, M2)) / 2    return DI1, DI2, ADX, ADXR#连接行情主站htdx.TdxInit(ip='183.60.224.178',port=7709)code='600080'#获取日线数据,800条数据df = htdx. get_security_bars(nCategory=4,nMarket = 0,code=code,nCount=800)#对数据做小白量化格式转换mydf=df.copy()CLOSE=mydf['close']LOW=mydf['low']HIGH=mydf['high']OPEN=mydf['open']VOL=mydf['volume']C=mydf['close']L=mydf['low']H=mydf['high']O=mydf['open']V=mydf['volume']#自编防通达信技术指标计算mydf['ema5']=EMA(C,5)  #5日均线mydf['k'],mydf['d'],mydf['j']=KDJ()  #kdj指标mydf['rsi']=RSI()   #rsi指标mydf['vr']=VR()   #VR指标mydf['ar'],mydf['br']=ARBR()  #ARBR指标mydf['di1'],mydf['di2'],mydf['adx'],mydf['adxr']=DMI()  #DMI指标#设置涨跌标签mydf['label']=IF(C>REF(C,1),1.0,0.0)   #平判断当日上涨或不上张mydf['label2']=REF(mydf['label'],-1)  #把下一周期的上涨移动到前一周期,用于学习标签print(mydf)mydf=mydf.tail(100)x_all = []     #定义两个列表变量y_all = []#装配深度网络学习数据for i in range(0,len(mydf)-1):    features = []    features.append(mydf['open'].iloc[i])     features.append(mydf['high'].iloc[i])     features.append(mydf['low'].iloc[i])     features.append(mydf['close'].iloc[i])     features.append(mydf['ema5'].iloc[i])     features.append(mydf['rsi'].iloc[i])    features.append(mydf['k'].iloc[i])    features.append(mydf['d'].iloc[i])    features.append(mydf['j'].iloc[i])    features.append(mydf[来源:荷蒲
                                                        

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月8日
下一篇 2021年1月8日

相关推荐