【原生代码】Python3 计算DI、ADX趋向指标
1.引用:
import pandas as pd
import numpy as np
2.代码
#RSI中使用的移动平均线。 它是指数加权移动平均线,alpha加权值 = 1 /长度
def RMA(r, days, name=0):cps = [ v[name] for v in r ] if name else rrmas = [0 for i in range(len(cps))] # 创造一个和cps一样大小的集合alpha = 1 / daysfor i in range(len(cps)):if i > days-1:if rmas[i-1] and not np.isnan(rmas[i-1]):rmas[i] = alpha * cps[i] + (1 - alpha) * rmas[i-1]else:ma = 0for i2 in range(i-days,i): #求平均值ma += cps[i2+1]rmas[i] = ma / daysreturn rmas#其他MA类型看上一篇文章
def ATR(r, days, ma='sma'):tr = [0]for i in range(len(r)):if i:tr.append(max(r[i]['High']-r[i]['Low'], abs(r[i]['High'] - r[i-1]['Close']), abs(r[i]['Low'] - r[i-1]['Close'])))if ma == 'rma':return RMA(tr, days)if ma == 'ema':return EMA(tr, days)if ma == 'sma':return SMA(tr, days)if not ma:return tr"""DI"""
def DI(r, days):df = pd.DataFrame(r)df['up'] = df['High'] - df['High'].shift(1)df['down'] = -(df['Low'] - df['Low'].shift(1))df['truerange'] = RMA(ATR(r, days=0, ma=0), days)df['plus'] = RMA([df['up'][i] if df['up'][i] > df['down'][i] and df['up'][i]> 0 else 0 for i in range(len(df['up']))], days) / df['truerange']df['minus'] = RMA([df['down'][i] if df['down'][i] > df['up'][i] and df['down'][i]> 0 else 0 for i in range(len(df['up']))], days) / df['truerange']df['plus'] = df['plus'].apply(float) * 100df['minus'] = df['minus'].apply(float) * 100return df['plus'], df['minus']"""ADX趋向指标"""
def ADX(r, diDays, adxDays):df = pd.DataFrame(r)df['plus'], df['minus'] = DI(r, diDays)df['sum'] = df['plus'] + df['minus']df['adx'] = [abs(df['plus'][i] - df['minus'][i]) / (1 if df['sum'][i] == 0 else df['sum'][i]) for i in range(len(df['sum']))]df['adx'] = RMA(df['adx'].values, adxDays)df['adx'] = df['adx'].apply(float) * 100return df['adx'], df['plus'], df['minus']
3.使用例子
指标计算的值我都和TradingView对比过,放心使用~
r为K线数据
df['adx'], df['plus'], df['minus'] = ADX(r, 14, 14)
博客原文:https://sumubai.cc/post/24
【原生代码】Python3 计算DI、ADX趋向指标相关推荐
- python计算长方形面积代码_Python计算两个矩形重合面积代码实例
这篇文章主要介绍了Python 实现两个矩形重合面积代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 代码如下 计算两个矩形的重合面积 imp ...
- 【原生代码】Python3 实现ATR、MA、EMA、SMMA、RMA、TEMA指标的计算
1. 参数说明 r:K线数据,字典或者数组 days:指标长度 name:使用哪一个字段,填'Close'即可,如果不填则代表r是数组而不是字典 变量r 字典结构图如下: {{'Time': 0,'C ...
- 【邢不行|量化小讲堂系列19-Python量化入门】平均趋向指标(ADX)策略在A股的实证
引言: 邢不行的系列帖子"量化小讲堂",通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助. [历史文章汇总]请点击此处 [必读文章]EOS期现 ...
- k8s边缘节点_KubeEdge v0.2发布,全球首个K8S原生的边缘计算平台开放云端代码
从v0.1到v0.2 小数点后的一小步 是边缘计算领域里程碑式的一大步 KubeEdge发布v0.2版本 全球首个基于K8S 提供云边协同能力的开源边缘计算架构 正式补齐最后一块拼图 将毫无保留地提供 ...
- 人工智能/云原生/数据科学/计算等方向内容整理志愿者招募了!
持续招募内容整理志愿者!云原生.数据科学.AI.低代码.计算等方向,有意愿的小伙伴,欢迎识别二维码提前报名哦.我们将持续为爱学习.有时间的小伙伴,提供多重福利! 要求: 1. 你需要具备一定学术背景, ...
- MUI调用原生自定义方法实现计算缓存与清空缓存
由于项目需要最近在做webapp开发用的是MUI框架,自己本来是做原生开发的,在开发的时候有一个需求是实现计算缓存和清除缓存的功能,原生java方法实现轻轻松松,网上代码一大把,不过是webapp倒是 ...
- 《MATLAB金融算法分析实战》之量化投资趋向指标1— python实现
<MATLAB金融算法分析实战>之量化投资趋向指标1- python实现 这本书我个人比较喜欢,也学习到了很多东西,matlab上学的时候没好好学,最近发现python写一遍也很有意思,除 ...
- 使用Elasticsearch计算布林带宽度指标
布林带宽度(Bollinger Band Width)是美国股市分析家约翰·布林于2010年发明,用于测量布林带(Bollinger Bands于1980年发明)上下轨道线之间的相对距离.它随带宽变窄 ...
- Hubble:“百万原生代码+混合交易分析”的利器!
长时间以来,人工智能和大数据一直作为孪生兄弟相互支撑. 但如今,生产与离线分析各自独立的传统信息化结构已经无法支撑AI的发展. 每个异构数据库产品之间的同步和数据冗余.业务的实时性需要流数据框架.ML ...
最新文章
- Python+OpenCV实现AI人脸识别身份认证系统(3)—训练人脸识别模型
- Matcher 类中的group(),group(int i),groupCount()
- Angular2父子组件数据传递之@ViewChild获取子组件详解
- 腾讯面试题 linux下free命令详解
- 会计记忆总结之六:账务处理程序
- boost::sort模块实现spreadsort 字符串函子排序示例
- numpy matlab 索引不同,与Numpy相似的MATLAB数组索引
- (一)Hyperledger Fabric 1.1安装部署-基础环境搭建
- 信号 09 | 函数pause
- 概率论之pandas
- 微软:“不好意思,我们还不够Cool,不能运行”
- OpenShift 4 - 基于URL的应用路由
- 关于字符匹配所引起的的问题
- 267. Palindrome Permutation II --back tracking 以及palindrome 的优化方法ing
- Vue.js 学习笔记 九 v-if和v-show
- 爱奇艺开源的高性能网络安全监控引擎
- jQuery WeUI学习笔记二
- 国际区号+手机号正则校验
- c语言中primesum函数,c语言之函数
- springboot/maven-orika 映射