Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫';EMA与股票不匹配';艾玛?_Python_Python 3.x_Pandas_Finance_Stockquotes - Fatal编程技术网

Python 熊猫';EMA与股票不匹配';艾玛?

Python 熊猫';EMA与股票不匹配';艾玛?,python,python-3.x,pandas,finance,stockquotes,Python,Python 3.x,Pandas,Finance,Stockquotes,我试图使用Python(带熊猫)计算英特尔(INTC)每日股票数据的20天指数移动平均值(EMA)。Pandas有很多方法可以做到这一点,我也尝试过stockstats,它在Pandas上运行,但它们不会返回与我从股票/金融网站获得的相同的EMA 我仔细检查了收盘价,它们是匹配的,但均线总是“错” 这是我正在使用的CSV: 它包含从2016年4月20日到2018年2月1日的英特尔股票(股票代码:INTC)的每日日期、月份名称、开盘、高点、低点、收盘、日平均值和成交量 当我看到像或这样的大型股票网

我试图使用Python(带熊猫)计算英特尔(INTC)每日股票数据的20天指数移动平均值(EMA)。Pandas有很多方法可以做到这一点,我也尝试过stockstats,它在Pandas上运行,但它们不会返回与我从股票/金融网站获得的相同的EMA

我仔细检查了收盘价,它们是匹配的,但均线总是“错”

这是我正在使用的CSV:

它包含从2016年4月20日到2018年2月1日的英特尔股票(股票代码:INTC)的每日日期、月份名称、开盘、高点、低点、收盘、日平均值和成交量

当我看到像或这样的大型股票网站时,它们的数字与我的不匹配。他们彼此匹配,但我不匹配

例如

df2['Close'].ewm(span=20,min_periods=0,adjust=False,ignore_na=False).mean()
或者

或者

请给我2018年2月1日的均线指数,比如44.71美元、47.65美元、46.15美元等,而任何金融网站的实际20天均线指数为45.65美元。无论我在哪一天计算均线,我都得到了错误的数字。当我尝试5天均线时,这甚至是错误的

我已经阅读、观看并关注了有关该主题的教程,但它们的结果也与任何金融网站上已被接受/发布的EMA不符。制作教程和视频的人根本就不会在Panda计算完数字后互相核对。我需要我的号码来匹配


我怎样才能得出互联网上其他所有金融网站对EMAs的相同数据?我认为这与调整后的收盘价无关,因为我使用的是旧的/已结算的数据,我的收盘价和日期与它们相同。

对数据框进行排序,使日期按递增顺序排列。 由于数据是按日期递减的,如果不先对日期进行排序,则
ewm
计算会以指数方式将最早的日期加权,而不是最晚的日期(应该如此)

屈服

                  ewm  backward_ewm
Date                               
2018-01-26  45.370936     48.205638
2018-01-29  45.809895     48.008337
2018-01-30  46.093714     47.800794
2018-01-31  46.288599     47.696667
2018-02-01  46.418256     47.650000
这与2018-02-01的EWMA(20)为46.42的说法一致

我建议使用python计算技术指标。我发现它比熊猫带来的更准确,有更多的指标

使用TA计算20周期指数移动平均值,如下所示:

import pandas_ta as ta

data["EMA20"] = ta.ema(df2["Close"], length=20)

你试过ewma吗?@BUZZY不赞成使用ewm,但我试过了,没有更好的效果。你是个该死的巫师:)这很有魅力,非常感谢!我还在学熊猫(我相信你已经猜到了)。干杯
import pandas as pd

df = pd.read_csv('intc_data.txt', parse_dates=['Date'], index_col=['Date'])
df['backward_ewm'] = df['Close'].ewm(span=20,min_periods=0,adjust=False,ignore_na=False).mean()
df = df.sort_index()
df['ewm'] = df['Close'].ewm(span=20,min_periods=0,adjust=False,ignore_na=False).mean()
print(df[['ewm', 'backward_ewm']].tail())
                  ewm  backward_ewm
Date                               
2018-01-26  45.370936     48.205638
2018-01-29  45.809895     48.008337
2018-01-30  46.093714     47.800794
2018-01-31  46.288599     47.696667
2018-02-01  46.418256     47.650000
import pandas_ta as ta

data["EMA20"] = ta.ema(df2["Close"], length=20)