Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >熊猫移动平均计算失踪日期?

熊猫移动平均计算失踪日期?
EN

Stack Overflow用户
提问于 2021-02-02 04:16:44
回答 1查看 506关注 0票数 0

我试图使用Alpha Vantage的实时外汇数据制作一个简单的移动平均线(API键可以免费从Alpha Vantage注册)。除了SMA的周期不完整外,一切看起来都很好。

例如,如果我设置了data[:'2020-1-1'],它应该返回1.1.2020到当前日期的数据。然而,发生的情况是,从2020年12月到2021年1月这段时期已经过去。

我试着绘制图表,并意识到我的移动平均周期越大,最近的数据就会被删除。我的图表上的情节如下:

英镑美元

2020年开始阶段的数据-1-1

Dataframe周期固定但NAN值

以下是我在三个单独文件中的代码:

这是execution.py文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from alpha_vantage.foreignexchange import ForeignExchange
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from to_USD import currencyExchangeB
from smvgavg import sma

UniSymbol = 'USD'
fromSymbolsB = ['EUR','GBP']

for symbol in fromSymbolsB:
    # store the result that return from "currencyExchange()" function
    result = currencyExchangeB(UniSymbol,symbol)

    # generate graph by passing those result of each currency data
    sma(result,UniSymbol,symbol)

下一个文件是to_USD.py文件,我使用它从Alpha Vantage提取外币数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from alpha_vantage.foreignexchange import ForeignExchange
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import datetime

# added a class to collect a collection of variable so it can be return easily in the following function
class GRAPH_STRUCT:
    date:any
    symbol:str
    def __init__(self,date,symbol):
        self.date = date
        self.symbol = symbol

def currencyExchangeB(toCurrencyB,fromCurrencyB):
    # create an array to store the result
    result = []

    cc = ForeignExchange(key='%ALPHA_VANTAGE_APIKEY%',output_format='pandas')
    data, meta_data = cc.get_currency_exchange_daily(from_symbol=fromCurrencyB,to_symbol=toCurrencyB,outputsize='full')

    # append those result in the array
    result = GRAPH_STRUCT(data[:'2020-1-1'],toCurrencyB)

    # return those result in the end of the function
    return result

最后一个文件是用于计算简单移动平均值的smvgavg.py文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

#dataObj is a datatype of GRAPH_STRUCT
def sma(dataObj,UniSymbol,symbol):
    maA = 25
    maB = 50
    maT = [maA,maB]
    for ma in maT:
        smaString = "SMA" + str(ma)

        data = dataObj.date
        data[smaString] = data.iloc[:,3].rolling(window = ma).mean()
        data = data.iloc[ma:]

        print(data)
        fig = plt.gcf()
        fig.set_size_inches(10, 6)
        plt.plot(data['4. close'], label='Close' if ma == 0 else "",color='red')
        plt.plot(data['SMA' + str(ma)],label='SMA' + str(ma))

    plt.title(symbol + '/' + UniSymbol, y=1)
    plt.xlabel("Date")
    plt.ylabel("Exchange Rate")
    plt.legend()
    plt.show()

任何帮助都将不胜感激。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-02 04:41:59

这不是因为pandas或Python,而是因为SMA是如何计算的。除非你自己做了计算,才能看到发生了什么,这可能有点棘手。

简单移动平均的公式是在n个区间取n个收盘价。除以n,其中P是收盘价,数是n天SMA中的偶数间隔,一个5天SMA的周期如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(P1 + P2 + P3 + P4 + P5)/5

您的一些开始日期似乎缺少的原因是,从句点计算的数据点被放置在该期间的end中。举个例子,让我们来看一下Airbnb (ABNB)对TD美国的思考或游泳的看法。这只股票是最近上市的,所以我们可以很容易地看到,这个50天的SMA (紫色线)也有一些日期似乎是缺失的:

您可以做的是获得更早的信息,您将不会显示在您的图形。

例如,如果要显示2020年12月至2021年2月10天的SMA行,可以在开始日期前10天将数据写入,然后将开始日期绘制为结束日期。这将填充似乎缺少的区域,因为您的计算现在说明了前一个期间(这将不会被绘制)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66009577

复制
相关文章
如何在 wxPython 中创建多个工具栏
作为C++库wxWidgets的包装器,wxPython允许Python开发人员利用这个成熟且经过实战测试的框架的强大功能。它具有各种平台的本机外观和感觉,包括Windows,macOS和Linux。使用 wxPython,您可以使用各种小部件(例如按钮、文本控件,当然还有工具栏)设计具有视觉吸引力且响应迅速的桌面应用程序。
很酷的站长
2023/08/11
2920
如何在 wxPython 中创建多个工具栏
如何在Linux中创建文件?多个文件创建操作命令。
如果文件file1.txt不存在,则上面的命令将创建该文件,否则,它将更改其时间戳。
用户5005176
2021/08/10
39.1K0
图表中包含负值的双色填充技巧
今天教大家怎么在Excel里制作带负值的双色填充图表 正负值双色填充 ▼ 通常如果数据中带负值 默认的图表输出虽然能够显示负值 但是负值颜色与正值并没有任何区别 视觉效果大打折扣 今天来教大家怎么处理
数据小磨坊
2018/04/10
2.6K0
图表中包含负值的双色填充技巧
如何在JavaScript中处理大量数据
在几年之前,开发人员不会去考虑在服务端之外处理大量的数据。现在这种观念已经改变了,很多Ajax程序需要在客户端和服务器端传输大量的数据。此外,更新DOM节点的处理在浏览器端来看也是一个很耗时的工作。而且,需要对这些信息进行分析处理的时候也很可能导致程序无响应,浏览器抛出错误。 将需要大量处理数据的过程分割成很多小段,然后通过JavaScript的计时器来分别执行,就可以防止浏览器假死。先看看怎么开始: function ProcessArray(data,handler,callback){ Process
CSDN技术头条
2018/02/09
3K0
如何在 JavaScript 中创建自定义排序方法
一般情况咱们排序大都按数字或字母顺序,但也有一些情况下,咱们可能需要自定义排序顺序。
前端小智@大迁世界
2020/05/12
3.3K0
如何在 JavaScript 中创建自定义排序方法
如何在 iOS 的源码中包含图片?
通过添加这个开源库,笔者 80% 的调试工作都可以用这个库完成,而无需 Xcode 工具。
酷酷的哀殿
2020/10/26
1.4K0
如何在 iOS 的源码中包含图片?
包含多个矩形的Pblock
Pblock是可以嵌套的,尽管这种应用方式并不常见。嵌套Pblock是为了更细粒度的对相关逻辑进行布局约束。从设计层次角度讲,嵌套的Pblock对应的逻辑单元是父层与子层的关系。
Lauren的FPGA
2019/10/30
1.4K0
JavaScript中的数组创建
数组是一个包含了对象或原始类型的有序集合。很难想象一个不使用数组的程序会是什么样。
疯狂的技术宅
2019/03/27
3.5K0
在 Angular 应用中创建包含组件
包含组件就是指可以包含其它组件的组件, 以 Bootstrap 的卡片 (Card) 为例, 它包含页眉 (header) 、 主体 (body) 和 页脚 (footer) , 如下图所示:
beginor
2020/08/07
4.8K0
在 Angular 应用中创建包含组件
在Excel中创建条件格式图表
问题:希望图表中对于比率为90或以上的呈现绿色,70至90的呈现黄色,低于70的呈现红色。可以在图表中设置条件格式吗?如下图1所示。
fanjy
2023/09/15
4030
在Excel中创建条件格式图表
[WPF 自定义控件]创建包含CheckBox的ListBoxItem
不过它用起来不怎么样,与其这样还不如参考UWP的ListView实现,而且动画效果也很好看:
dino.c
2020/02/21
2.9K0
[WPF 自定义控件]创建包含CheckBox的ListBoxItem
【汇编】(七)包含多个段的程序
考虑这样一个问题,编程计算以下8个数据的和,结果存在 ax 寄存器中: 0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H;
sidiot
2023/08/28
2350
JavaScript中创建对象的几种模式
代码如下: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>创建对象的模式</title> 6 <meta name="viewport" content="width=device-width, initial-scale=1"> 7 <!--<link rel="stylesheet" type="text/css" href="ma
用户1149564
2018/07/31
1.2K0
JavaScript中创建对象的几种模式
如何在MySQL数据库中创建新表
[IF NOT EXISTS]主要是用于判定新建的表是否存在 engine需要指定存储引擎。可以使用任何存储引擎,如:InnoDB,MyISAM,HEAP,EXAMPLE,CSV,ARCHIVE,MERGE, FEDERATED或NDBCLUSTER。如果不明确声明存储引擎,MySQL将默认使用InnoDB。 column_list较为复杂,为指定表的列表。字段的列用逗号(,)分隔。 column_list的语法如下:
用户7639835
2021/08/26
10K0
如何在js中创建对象
七夕临近了,没有对象的来创建一个吧 使用对象字面量: const o = { name: "zehan", greeting() { return `Hi, 我是${this.name}`; } }; o.greeting(); // "Hi, zehan" 使用构造函数: function Person(name) { this.name = name; } Person.prototype.greeting = function () { return `Hi, 我是
ZEHAN
2020/09/23
7.6K0
如何在Mac中创建MiniKube
Minikube是一个工具,可以在本地轻松运行Kubernetes。 Minikube在笔记本电脑的VM中运行单节点Kubernetes集群,供希望尝试Kubernetes或日常开发的用户使用。
方志朋
2022/05/08
2.4K0
如何在Mac中创建MiniKube
如何在Dynamo中创建UI
本文介绍了如何在Dynamo中创建UI,通过使用WPF技术实现了窗口的创建和交互。首先介绍了IronPython和Dynamo的基础知识,然后讲解了实现原理和准备工作。最后通过具体的操作步骤和代码示例讲解了如何在Dynamo中创建UI。
企鹅号小编
2018/01/05
2.1K0
如何在Dynamo中创建UI
用 await/async 正确链接 Javascript 中的多个函数[每日前端夜话0xAF]
在我完成 electrade【https://www.electrade.app/】 的工作之余,还帮助一个朋友的团队完成了他们的项目。最近,我们希望为这个项目构建一个 Craiglist 风格的匿名电子邮件中继,其中包含 “serverless” Google Firebase Function(与 AWS Lambda,Azure Function 等相同)。到目前为止,我发现用 .then() 回调处理异步操作更容易思考,但是我想在这里用 async/await,因为它读起来更清晰。我发现大多数关于链接多个函数的文章都没有用,因为他们倾向于发布从MSDN 复制粘贴的不完整的演示代码。在 async/await 上有一些难以调试的陷阱,因为我遇到了所有这些陷阱,所以我将在这里发布自己的完整代码并解释我的学习过程。
疯狂的技术宅
2019/08/23
6.3K0
Excel图表技巧07:创建滑动显示的图表
下图1是我在chandoo.org上看到的一个图表技巧。很有趣的图表显示方式,你能想到吗?
fanjy
2021/01/20
1.5K0
Excel图表技巧07:创建滑动显示的图表
点击加载更多

相似问题

如何在任意图表中创建包含多个系列的图表?

11

同步图表或多个图表,如Android中的高级图表

36

高级图表中包含多个图表。

13

如何创建包含数据的ggplot图表?

23

绘制包含多个数据序列的图表

113
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文