python 移动平均线_Python 计算EMA(指数移动平均线)
总结
使用递归和循环两种方法来完成
python环境下循环相比于递归更快,更适应极端样本情况
递归
def _ema(arr,i=None):
N = len(arr)
α = 2/(N+1) #平滑指数
i = N-1 if i is None else i
if i==0:
return arr[i]
else:
data = 0
data += (α*arr[i]+(1-α)*EMA(arr,i-1)) #递归公式
return data
循环
def _ema(arr):
N = len(arr)
α = 2/(N+1)
data = np.zeros(len(arr))
for i in range(len(data)):
data[i] = arr[i] if i==0 else α*arr[i]+(1-α)*data[i-1] #从首开始循环
return data[-1]
主体
def EMA(arr,period=21):
data = np.full(arr.shape,np.nan)
for i in range(period-1,len(arr)):
data[i] = _ema(arr[i+1-period:i+1])
return data
耗时
样本为900长度的numpy.array:
递归保持在2.5ms附近,循环在1ms以内
当样本达到5000时
递归超过10ms,循环5ms左右
样本
python默认递归极限为1000,若样本数超过1000,则需要调高递归极限
import sys
sys.setrecursionlimit(10000)
调高递归极限至10000
引用
Pandas(1.0.1)和talib对比
总结
talib计算一维样本速度快的令人发指…但是缺点是面对多维样本只能通过循环
pandas一维下虽然速度不及talib,但是10000的长度也只插了3ms左右,而且面对多维样本可以一步到位
Talib
import talibarr
data = talib.EMA(arr,timeperiod=21)
Pandas
import pandas as pd
def EMA(arr,period=21):
df = pd.DataFrame(arr)
return df.ewm(span=period,min_periods=period).mean()
引用
原文链接:https://blog.csdn.net/cRexxar/article/details/105532398
python 移动平均线_Python 计算EMA(指数移动平均线)相关推荐
- Python 计算EMA(指数移动平均线)
总结 使用递归和循环两种方法来完成 python环境下循环相比于递归更快,更适应极端样本情况 递归 def _ema(arr,i=None):N = len(arr) α = 2/(N+1) #平滑指 ...
- EMA(指数移动平均)及其深度学习应用
在深度学习中,经常会使用EMA(指数移动平均)这个方法对模型的参数做平均,以提高测试指标并增加模型鲁棒. 1.基于数学的介绍 1.1 公式例子 我们有关于"温度-天数"的数据 :在 ...
- 使用python根据身高体重计算BMI指数
#python(day01) 根据身高.体重计算BMI指数 创建两个变量:一个用于计算身高(单位:米),一个用来记录体重(单位:千克),根据公式"BMI=体重/(身高*身高)",代 ...
- EMA - 指数移动平均
EMA 基本概念见 Wikipedia,本文不赘述. 基本公式 S[0] = Y[0] S[i] = Y[i] * alpha + S[i-1] * (1 - alpha) 其中 alpha 为平滑因 ...
- python 大气污染物模型_Python AQI空气污染指数数据分析与机器学习
导入模块 import numpy as np import pandas as pd import datetime import matplotlib as mpl import matplotl ...
- 用python写一段计算autocad多段线长度的代码
答:# 请在下面输入代码.import math#获取多段线的点坐标 points = [(1,1), (2,1), (2,2), (3,2)]#计算多段线的长度 length = 0 for i i ...
- python判断天数_Python计算两个日期相差天数的方法示例
本文实例讲述了Python计算两个日期相差天数的方法.分享给大家供大家参考,具体如下: #!/usr/bin/python import time import sys def dateinput() ...
- python离散积分_python 计算离散点的微分和积分(超详细)
前言: 本文计算离散点微分和积分的内容,参考的是origin软件提供的算法. 鉴于在百度和谷歌搜索标题的结果不尽人意,因此想在此做一个详细的总结. 若阅读时间有限,可直接阅读第二或第三部分的代码及其运 ...
- python 画三角函数_Python计算三角函数之asin()方法的使用
asin()方法返回x的反正弦,以弧度表示. 语法 以下是asin()方法语法: asin(x) 注意:此函数是无法直接访问的,所以我们需要导入math模块,然后需要用math的静态对象来调用这个函数 ...
最新文章
- 生信分析-TBtools绘制热图
- leetcode怎么用时间刷_LeetCode刷题专栏第一篇--思维导图时间安排
- 126篇殿堂级深度学习论文分类整理 从入门到应用(下)
- python os.access_os.access(path, mode)
- 信息学奥赛一本通C++语言——1022: 整型与布尔型的转换
- IDEA2018部署jeesite3完美运行教程
- 史上最实用mysql参数之一-----sql_safe_updates
- 干货 | 那些高产的学者都是怎样工作的?
- 20145325张梓靖 《信息安全系统设计基础》第10周学习总结
- linux shell中实现字符串反转的几种简单方法
- 干货:IT运维管理规划
- HDU-3237 Help Bubu(状压dp)
- 华硕笔记本Delete键和Insert键合二为一与分离
- Server Tomcat v7.0 Server at localhost failed to start.
- 商务办公软件应用与实践【6】
- 2021年在vue中使用 Google Map
- c++ 中. 和 -,波浪号 ~ 符号怎么用 ————很重要
- 苹果地图错误将驾车者导向沙漠:偏离70公里
- WiFi未来发展趋势 你知道吗?
- 正则表达式匹配电话号码