总结

使用递归和循环两种方法来完成
python环境下循环相比于递归更快,更适应极端样本情况


递归

def _ema(arr,i=None):N = len(arr) α = 2/(N+1) #平滑指数i = N-1 if i is None else iif 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


引用

设置递归极限https://www.cnblogs.com/wozijisun/p/5642540.html




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()
引用

|Pandas Document|
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.ewm.html?highlight=ewma

Python 计算EMA(指数移动平均线)相关推荐

  1. python 移动平均线_Python 计算EMA(指数移动平均线)

    总结 使用递归和循环两种方法来完成 python环境下循环相比于递归更快,更适应极端样本情况 递归 def _ema(arr,i=None): N = len(arr) α = 2/(N+1) #平滑 ...

  2. EMA(指数移动平均)及其深度学习应用

    在深度学习中,经常会使用EMA(指数移动平均)这个方法对模型的参数做平均,以提高测试指标并增加模型鲁棒. 1.基于数学的介绍 1.1 公式例子 我们有关于"温度-天数"的数据 :在 ...

  3. php计算股票均线,移动平均线——Moving Average 平均线的计算公式

    在前一章节我们介绍了一些走蜡烛图技术的形态包括持续形态和反转形态等等.虽然蜡烛图已经成为目前交易中广泛使用的技术分析工具但是在实际应用中由于自身的一些缺点使得交易者判断买人卖出时机的准确度降低.蜡烛图 ...

  4. mysql计算均线_MySQL移动平均线 – 4周

    我一直在阅读几篇关于在 mysql查询中估算移动平均值的帖子,但是看起来我的情况稍微有些困难,因为该表不包含我想要计算平均值的列.我需要计算每个组的行数,并显示该组的移动平均值. 我在表中基本上只有一 ...

  5. EMA - 指数移动平均

    EMA 基本概念见 Wikipedia,本文不赘述. 基本公式 S[0] = Y[0] S[i] = Y[i] * alpha + S[i-1] * (1 - alpha) 其中 alpha 为平滑因 ...

  6. python计算ema_python – 添加一个列(EMA),它是pandas中先前新列值的结果

    我的Orignal数据框如下: Date C 0 a 1 b 2 c 3 d 这是股票数据. 0,1,2,3是次,C:关闭是浮点数. 我需要能够将EMA(指数移动平均线)的列添加到通过从当前C列计算得 ...

  7. 指标详解(2)-- 指数平滑移动平均线(MACD)详解

    一.定义:MACD称为指数平滑移动平均线,是从双指数移动平均线发展而来的,由快的指数移动平均线(EMA12)减去慢的指数移动平均线(EMA26)得到快线DIF,再用2×(快线DIF-DIF的9日加权移 ...

  8. 使用Numpy快速分析股票数据——计算移动平均线及日周均线之间的转换

    Numpy所提供的数据结构是python数据分析的基础 本篇使用numpy库分析亚马逊股票近一年的历史数据 主要目标:(1)计算n日移动平均线:(2)将日均线转换为周均线. 解决处理的函数:卷积函数. ...

  9. 【提分trick】SWA(随机权重平均)和EMA(指数移动平均)

    1. SWA随机权重平均 1.1步骤 1.2代码 2.EMA指数移动平均 2.1步骤 2.2代码 3.总结 在kaggle比赛中,不管是目标检测任务.语义分割任务中,经常能看到SWA(Stochast ...

最新文章

  1. 唏嘘!程序员,你的年底KPI完不成的原因找到了!
  2. Linux LVM 的使用详解
  3. 网络营销外包专员浅析网络营销外包如何防止发布的外链被删除呢?
  4. HD 2955 Robberies(0-1背包)
  5. flex gallery / 产品展示
  6. 在新美大“创业”:KTV预定业务演进之路
  7. 完全二叉树的节点数量
  8. 面试:HLS加密视频播放模糊不清
  9. 导致企业5S管理失败的八大根源
  10. 一位acm过来人的心得
  11. 使用HTML+CSS仿写小米官网首页
  12. 大数据应用导论 Chapter1 | 大数据技术与应用概述
  13. win10电脑右击新建没有Word、Excel怎么办
  14. 如何把照片进行压缩?好用的压缩方法分享
  15. 字节、腾讯争先部署,ClickHouse+Doris 赶超 MySQL 810 倍
  16. 大学生计算机PHP实训报告,大学生计算机实训心得体会
  17. Vant删除图片Vue版本
  18. MySQL连接查询的成本
  19. 【线性代数】二、向量组和方程组
  20. 【数据结构】二叉树 (Binary Tree)

热门文章

  1. Git本地仓库与GitHub远程仓库的同步方法
  2. 从记忆星期浅谈日语学习感想
  3. 计算机多种形状我来画教案,小学电脑画图——曲线-教案(6页)-原创力文档
  4. 2013新东方考研英语视频课程(33G)【全程无加密】
  5. [Easy] 169. Majority Element
  6. [Python Tips] 从list中选择”除某个特定元素之外“的值
  7. 邮件服务器之Webmail
  8. HCIA网络基础11-IP路由原理及静态路由
  9. MySQL按天查询语句
  10. 大数据之Python数据分析 实训 信用卡客户风险评价之一、处理信用卡数据异常值