量化交易----常见股票特征和编程实现

本节介绍一些常见的股票特征,可用于股票分析和预测模型训练

顺势指标CCI

CCI中文译名为:随顺市势指标。它属于超买超卖指标中较特殊的一种。波动于广向正值无限大和微向负值无限小之间。本指标专门用以测量股价是否已超出常态分布范围

这里写图片描述

计算公式

CCI(N日)=(TP-MA)÷Std÷0.015

其中,TP=(最高价+最低价+收盘价)÷3
MA=近N日收盘价的累计之和÷N
Std=近N日数据的标准差

# Load the necessary packages and modules
import pandas as pd
import pandas.io.data as web
import matplotlib.pyplot as plt
# Commodity Channel Index 
def CCI(data, ndays): TP = (data['High'] + data['Low'] + data['Close']) / 3 CCI = pd.Series((TP - pd.rolling_mean(TP, ndays)) / (0.015 * pd.rolling_std(TP, ndays)),name = 'CCI') data = data.join(CCI) return data# Retrieve the Nifty data from Yahoo finance:
data = web.DataReader('^NSEI',data_source='yahoo',start='1/1/2014', end='1/1/2016')
data = pd.DataFrame(data)# Compute the Commodity Channel Index(CCI) for NIFTY based on the 20-day Moving average
n = 20
NIFTY_CCI = CCI(data, n)
CCI = NIFTY_CCI['CCI']# Plotting the Price Series chart and the Commodity Channel index below
fig = plt.figure(figsize=(7,5))
ax = fig.add_subplot(2, 1, 1)
ax.set_xticklabels([])
plt.plot(data['Close'],lw=1)
plt.title('NSE Price Chart')
plt.ylabel('Close Price')
plt.grid(True)
bx = fig.add_subplot(2, 1, 2)
plt.plot(CCI,'k',lw=0.75,linestyle='-',label='CCI')
plt.legend(loc=2,prop={'size':9.5})
plt.ylabel('CCI values')
plt.grid(True)
plt.setp(plt.gca().get_xticklabels(), rotation=30)

简易波动指标EVM

简易波动指标(Ease of Movement Value)又称EMV指标,它是由RichardW.ArmJr.根据等量图和压缩图的原理设计而成,目的是将价格与成交量的变化结合成一个波动指标来反映股价或指数的变动状况。由于股价的变化和成交量的变化都可以引发该指标数值的变动,因此,EMV实际上也是一个量价合成指标。

这里写图片描述

计算公式

EVM=(Current High Price - Current Low Price)/2 - (Prior High Price - Prior Low Price)/2

# Load the necessary packages and modules
import pandas as pd
import pandas.io.data as web
import matplotlib.pyplot as plt# Ease of Movement 
def EVM(data, ndays): dm = ((data['High'] + data['Low'])/2) - ((data['High'].shift(1) + data['Low'].shift(1))/2)br = (data['Volume'] / 100000000) / ((data['High'] - data['Low']))EVM = dm / br EVM_MA = pd.Series(pd.rolling_mean(EVM, ndays), name = 'EVM') data = data.join(EVM_MA) return data # Retrieve the AAPL data from Yahoo finance:
data = web.DataReader('AAPL',data_source='yahoo',start='1/1/2015', end='1/1/2016')
data = pd.DataFrame(data)# Compute the 14-day Ease of Movement for AAPL
n = 14
AAPL_EVM = EVM(data, n)
EVM = AAPL_EVM['EVM']# Plotting the Price Series chart and the Ease Of Movement below
fig = plt.figure(figsize=(7,5))
ax = fig.add_subplot(2, 1, 1)
ax.set_xticklabels([])
plt.plot(data['Close'],lw=1)
plt.title('AAPL Price Chart')
plt.ylabel('Close Price')
plt.grid(True)
bx = fig.add_subplot(2, 1, 2)
plt.plot(EVM,'k',lw=0.75,linestyle='-',label='EVM(14)')
plt.legend(loc=2,prop={'size':9})
plt.ylabel('EVM values')
plt.grid(True)
plt.setp(plt.gca().get_xticklabels(), rotation=30)

移动平均线指标MA

移动平均线(MA)具有趋势的特性,它比较平稳,不像日K线会起起落落地震荡。越长期的移动平均线,越能表现稳定的特性。不轻易向上向下,必须等股价趋势的真正明朗。移动平均线说到底是一种趋势追踪工具,便于识别趋势已经终结或者反转,新的趋势是否正在形成。

这里写图片描述

计算公式

.N日MA=N日收市价的总和/N(即算术平均数)

# Moving Averages Code# Load the necessary packages and modules
import pandas as pd
import pandas.io.data as web
import matplotlib.pyplot as plt# Simple Moving Average 
def SMA(data, ndays): SMA = pd.Series(pd.rolling_mean(data['Close'], ndays), name = 'SMA') data = data.join(SMA) return data# Exponentially-weighted Moving Average 
def EWMA(data, ndays): EMA = pd.Series(pd.ewma(data['Close'], span = ndays, min_periods = ndays - 1), name = 'EWMA_' + str(ndays)) data = data.join(EMA) return data# Retrieve the Nifty data from Yahoo finance:
data = web.DataReader('^NSEI',data_source='yahoo',start='1/1/2013', end='1/1/2016')
data = pd.DataFrame(data) 
close = data['Close']# Compute the 50-day SMA for NIFTY
n = 50
SMA_NIFTY = SMA(data,n)
SMA_NIFTY = SMA_NIFTY.dropna()
SMA = SMA_NIFTY['SMA']# Compute the 200-day EWMA for NIFTY
ew = 200
EWMA_NIFTY = EWMA(data,ew)
EWMA_NIFTY = EWMA_NIFTY.dropna()
EWMA = EWMA_NIFTY['EWMA_200']# Plotting the NIFTY Price Series chart and Moving Averages below
plt.figure(figsize=(9,5))
plt.plot(data['Close'],lw=1, label='NSE Prices')
plt.plot(SMA,'g',lw=1, label='50-day SMA (green)')
plt.plot(EWMA,'r', lw=1, label='200-day EWMA (red)')
plt.legend(loc=2,prop={'size':11})
plt.grid(True)
plt.setp(plt.gca().get_xticklabels(), rotation=30)

布林线指标(BB)

布林线(BOLL)由约翰布林先生创造,其利用统计原理,求出股价的标准差及其信赖区间,从而确定股价的波动范围及未来走势,利用波带显示股价的安全高低价位,因而也被称为布林带。其上下限范围不固定,随股价的滚动而变化。布林指标和麦克指标MIKE一样同属路径指标,股价波动在上限和下限的区间之内,这条带状区的宽窄,随着股价波动幅度的大小而变化,股价涨跌幅度加大时,带状区变宽,涨跌幅度狭小盘整时,带状区则变窄。

计算公式

中轨线=N日的移动平均线
上轨线=中轨线+两倍的标准差
下轨线=中轨线-两倍的标准差

################ Bollinger Bands ############################## Load the necessary packages and modules
import pandas as pd
import pandas.io.data as web# Compute the Bollinger Bands 
def BBANDS(data, ndays):MA = pd.Series(pd.rolling_mean(data['Close'], ndays)) SD = pd.Series(pd.rolling_std(data['Close'], ndays))b1 = MA + (2 * SD)B1 = pd.Series(b1, name = 'Upper BollingerBand') data = data.join(B1) b2 = MA - (2 * SD)B2 = pd.Series(b2, name = 'Lower BollingerBand') data = data.join(B2) return data# Retrieve the Nifty data from Yahoo finance:
data = web.DataReader('^NSEI',data_source='yahoo',start='1/1/2010', end='1/1/2016')
data = pd.DataFrame(data)# Compute the Bollinger Bands for NIFTY using the 50-day Moving average
n = 50
NIFTY_BBANDS = BBANDS(data, n)
print(NIFTY_BBANDS)

强力指数FI

强力指数指标(Force Index)由Alexander Elder发明,该技术指标用来指示上升或下降趋势的力量大小,在零线上下移动来表示趋势的强弱。

计算公式

FORCE INDEX(i)=VOLUME(i)*[MA(ApPRICE,N,i)-MA(ApPRICE,N,i-1)]

FORCE INDEX(i):当前柱的力量指数
VOLUME(i):当前柱的交易量;
MA(ApPRICE,N,i):在任何一个时段内当前柱的任何移动平均线:
MA(ApPRICE,N,i-1)——前一柱的任何移动平均线。

################# Force Index ######################################################### Load the necessary packages and modules
import pandas as pd
import pandas.io.data as web# Force Index 
def ForceIndex(data, ndays): FI = pd.Series(data['Close'].diff(ndays) * data['Volume'], name = 'ForceIndex') data = data.join(FI) return data# Retrieve the Apple data from Yahoo finance:
data = web.DataReader('AAPL',data_source='yahoo',start='1/1/2010', end='1/1/2016')
data = pd.DataFrame(data)# Compute the Force Index for Apple 
n = 1
AAPL_ForceIndex = ForceIndex(data,n)
print(AAPL_ForceIndex)

变化速率ROC

OC(Price Rate of Change)又称变动率指标,乃以今天的收盘价比较其N天前的收盘价的差除以N天前的收盘(本质其实是N日K线的涨幅),以比率表示之,此指标经由Gerald Apple 和 Fred Hitschler 两人于"Stock Market Trading Systems"一书中介绍,采用12天及25天周期可达到相当的效果。

计算公式

(close-ref(close,N))/ref(close,N)*100

# Rate of Change code# Load the necessary packages and modules
import pandas as pd
import pandas.io.data as web
import matplotlib.pyplot as plt# Rate of Change (ROC)
def ROC(data,n):N = data['Close'].diff(n)D = data['Close'].shift(n)ROC = pd.Series(N/D,name='Rate of Change')data = data.join(ROC)return data # Retrieve the NIFTY data from Yahoo finance:
data = web.DataReader('^NSEI',data_source='yahoo',start='6/1/2015',end='1/1/2016')
data = pd.DataFrame(data)# Compute the 5-period Rate of Change for NIFTY
n = 5
NIFTY_ROC = ROC(data,n)
ROC = NIFTY_ROC['Rate of Change']# Plotting the Price Series chart and the Ease Of Movement below
fig = plt.figure(figsize=(7,5))
ax = fig.add_subplot(2, 1, 1)
ax.set_xticklabels([])
plt.plot(data['Close'],lw=1)
plt.title('NSE Price Chart')
plt.ylabel('Close Price')
plt.grid(True)
bx = fig.add_subplot(2, 1, 2)
plt.plot(ROC,'k',lw=0.75,linestyle='-',label='ROC')
plt.legend(loc=2,prop={'size':9})
plt.ylabel('ROC values')
plt.grid(True)
plt.setp(plt.gca().get_xticklabels(), rotation=30)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/52749.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

量化交易 第三课 数据获取接口

获取数据 概述数据接口种类行业 & 板块 股票类表股票代码 & 代码补齐RiceQuant 上的股票股票自动搜索及补全 获取行业获取板块代码展示 获取股票合约数据某一合约历史数据通过 bar_dict 获取代码展示 获取财务数据查询财务数据过滤指标条件代码展示 定时获取数据每天运…

微信公众号开发,配置完整代码,示例

一、server.js文件 const express require(express) const app express() const crypto require(crypto) //引入node内置加密模块 const randomstring require(randomstring) //引入第三方产生随机字符串模块,来产生nonceStr const axios require(axios) /…

零代码编程:用ChatGPT自动登陆微信公众号后台

要实现微信公众号后台自动登陆&#xff0c;可以使用ChatGPT来编写Python代码实现。 微信公众平台账号密码登陆&#xff0c;要先点击“使用账号登录”&#xff0c;源代码是&#xff1a;<a href"javascript:;" class"login__type__container__select-type"…

Java代码 微信公众号推送(代码详细)

用的是idea, 需要修改的地方在于这些地方改了 然后吧账号密码填写进去就好了 运行类是 Yi 这个类 非常简单 祝大家成功 ,不会的关注私聊 微信公众号测试注册地址:微信公众平台 (qq.com) 我用的模板是这个只有一个数据 ,当然这个可以自己添加 做出来的效果当然上面那个…

如何优雅的在微信公众号中编辑代码

这篇文章严格意义上是写给有公众号且公众号文章需要贴代码的朋友们看的。 1 公众号编辑器真难用 自从入坑公众号以来&#xff0c;被公众号的这个编辑器简直折磨死了。我发的文章基本上是少不了贴代码的&#xff0c;可是每次贴上去的代码总是被公众号的编辑器无厘头的给我过滤掉…

初访Chirper:一个禁止人类发言的人工智能社交网络,AI们居然在吵架,太6了

最近&#xff0c;在网上仅仅用ChatGPT和AI聊天已经不够刺激了&#xff0c;现在&#xff0c;AI已经有了属于自己的专属社区&#xff1a;Chirper 简而言之&#xff0c;这是一个禁止人类发帖、评论、转发的类推特网站。人类进去后只能看见&#xff1a;成千上万个AI聊天机器人在其…

ChatGPT和搜索引擎哪个更好用

目录 ChatGPT和搜索引擎的概念 ChatGPT和搜索引擎的作用 ChatGPT的作用 搜索引擎的作用 ChatGPT和搜索引擎哪个更好用 总结 ChatGPT和搜索引擎的概念 ChatGPT是一种基于对话的人工智能技术&#xff0c;而搜索引擎则是一种用于在互联网上查找和检索信息的工具。它们各自具…

产品负责人 VS 产品经理

概述 Scrum框架创造了对新角色的需求&#xff0c;其中就包括 “产品负责人” 。这不可避免额外地导致对产品负责人和产品经理角色的误解和误用&#xff0c;对团队产生不必要的压力。 角色混淆会带来噪音和摩擦&#xff0c;削弱团队对价值、质量、速度和满意度的关注。这种混乱…

从程序员到产品经理

一直以来我都觉得自己是个典型性程序员。 比如出门时候我总是穿格子衫、牛仔裤&#xff0c;戴着黑框眼镜背个双肩包&#xff1b; 比如休闲时候我是个死宅&#xff0c;喜欢玩游戏和看小说&#xff1b; 比如一直到23岁时候我依然是“妹手软”&#xff0c;没谈过恋爱。 当然可能也…

产品经理培训还好找工作吗?

本篇文章主要讲解粉丝后台留言问题&#xff1a;新人转产品&#xff0c;通过培训班还好找工作吗。 日期&#xff1a;2021年8月21日 作者&#xff1a;任聪聪 我以不同角度为大家解读&#xff0c;培训出来的产品经理是否还好找工作。 产品经理的就业行情还好吗 先来看两组数据&a…

人工智能 | ShowMeAI资讯日报 #2022.06.05

ShowMeAI日报系列全新升级&#xff01;覆盖AI人工智能 工具&框架 | 项目&代码 | 博文&分享 | 数据&资源 | 研究&论文 等方向。点击查看 历史文章列表&#xff0c;在公众号内订阅话题 #ShowMeAI资讯日报&#xff0c;可接收每日最新推送。点击 专题合辑&…

人工智能 | ShowMeAI资讯日报 #2022.06.06

ShowMeAI日报系列全新升级&#xff01;覆盖AI人工智能 工具&框架 | 项目&代码 | 博文&分享 | 数据&资源 | 研究&论文 等方向。点击查看 历史文章列表&#xff0c;在公众号内订阅话题 #ShowMeAI资讯日报&#xff0c;可接收每日最新推送。点击 专题合辑&…

人工智能 | ShowMeAI资讯日报 #2022.06.18

ShowMeAI日报系列全新升级&#xff01;覆盖AI人工智能 工具&框架 | 项目&代码 | 博文&分享 | 数据&资源 | 研究&论文 等方向。点击查看 历史文章列表&#xff0c;在公众号内订阅话题 #ShowMeAI资讯日报&#xff0c;可接收每日最新推送。点击 专题合辑&…

人工智能 | ShowMeAI资讯日报 #2022.06.20

ShowMeAI日报系列全新升级&#xff01;覆盖AI人工智能 工具&框架 | 项目&代码 | 博文&分享 | 数据&资源 | 研究&论文 等方向。点击查看 历史文章列表&#xff0c;在公众号内订阅话题 #ShowMeAI资讯日报&#xff0c;可接收每日最新推送。点击 专题合辑&…

人工智能 | ShowMeAI资讯日报 #2022.06.29

ShowMeAI日报系列全新升级&#xff01;覆盖AI人工智能 工具&框架 | 项目&代码 | 博文&分享 | 数据&资源 | 研究&论文 等方向。点击查看 历史文章列表&#xff0c;在公众号内订阅话题 #ShowMeAI资讯日报&#xff0c;可接收每日最新推送。点击 专题合辑&…

人工智能 | ShowMeAI资讯日报 #2022.06.24

ShowMeAI日报系列全新升级&#xff01;覆盖AI人工智能 工具&框架 | 项目&代码 | 博文&分享 | 数据&资源 | 研究&论文 等方向。点击查看 历史文章列表&#xff0c;在公众号内订阅话题 #ShowMeAI资讯日报&#xff0c;可接收每日最新推送。点击 专题合辑&…

人工智能 | ShowMeAI资讯日报 #2022.06.16

ShowMeAI日报系列全新升级&#xff01;覆盖AI人工智能 工具&框架 | 项目&代码 | 博文&分享 | 数据&资源 | 研究&论文 等方向。点击查看 历史文章列表&#xff0c;在公众号内订阅话题 #ShowMeAI资讯日报&#xff0c;可接收每日最新推送。点击 专题合辑&…

人工智能 | ShowMeAI资讯日报 #2022.06.30

ShowMeAI日报系列全新升级&#xff01;覆盖AI人工智能 工具&框架 | 项目&代码 | 博文&分享 | 数据&资源 | 研究&论文 等方向。点击查看 历史文章列表&#xff0c;在公众号内订阅话题 #ShowMeAI资讯日报&#xff0c;可接收每日最新推送。点击 专题合辑&…

人工智能 | ShowMeAI资讯日报 #2022.06.19

ShowMeAI日报系列全新升级&#xff01;覆盖AI人工智能 工具&框架 | 项目&代码 | 博文&分享 | 数据&资源 | 研究&论文 等方向。点击查看 历史文章列表&#xff0c;在公众号内订阅话题 #ShowMeAI资讯日报&#xff0c;可接收每日最新推送。点击 专题合辑&…

2021QS计算机专业排名发布:MIT斯坦福霸榜,清华北大进入前20

转载于 新智元 来源&#xff1a;qs topuniversities 编辑&#xff1a;yaxin 【新智元导读】2021 QS世界大学学科排名出炉了&#xff01;最新排名涉及51个学科&#xff0c;横跨5大领域。在计算机科学专业排名中&#xff0c;MIT、斯坦福、哈佛占领了世界前三席&#xff0c;中国…