python - Web 服务使用 python 查找股票的收盘价
问题描述
我正在尝试编写一个查找股票收盘价的网络服务。使用 Python Flask 或 Goland
● 为响应 GET 请求,该服务应返回最后 NDAYS 天的数据以及这些天的平均收盘价。例如,对于 aapl 和 NDAYS=3,GET 响应可能如下所示: ○ appl data=[110.56, 111.25, 115.78], average=112.50
● 股票 SYMBOL(要查找的符号)和 NDAYS(天数)是提供给程序的环境变量。我还需要使用 apikey 进行这样的示例查询,例如:
"Meta Data": {
"1. Information": "Daily Time Series with Splits and Dividend Events",
"2. Symbol": "MSFT",
"3. Last Refreshed": "2020-10-14",
"4. Output Size": "Compact",
"5. Time Zone": "US/Eastern"
},
"Time Series (Daily)": {
"2020-10-14": {
"1. open": "223.0000",
"2. high": "224.2200",
"3. low": "219.1300",
"4. close": "220.8600",
"5. adjusted close": "220.8600",
"6. volume": "23422344",
"7. dividend amount": "0.0000",
"8. split coefficient": "1.0000"
},
"2020-10-13": {
"1. open": "222.7200",
"2. high": "225.2100",
"3. low": "220.4300",
"4. close": "222.8600",
"5. adjusted close": "222.8600",
"6. volume": "28950843",
"7. dividend amount": "0.0000",
"8. split coefficient": "1.0000"
},
"2020-10-12": {
"1. open": "218.7900",
"2. high": "223.8600",
"3. low": "216.8100",
"4. close": "221.4000",
"5. adjusted close": "221.4000",
"6. volume": "40461368",
"7. dividend amount": "0.0000",
"8. split coefficient": "1.0000"
}
○ 不需要严格的错误处理。你可以假设存货存在,天数是有效的,等等。换句话说,这可能是一个快速而肮脏的程序——它不需要高度抛光。
到目前为止,我已经编写了这段代码,我不确定如何获取 3 天和平均时间,而不是如何将我的代码设置在 Web 服务器上,它不起作用,请帮忙。
from alpha_vantage.timeseries import TimeSeries
from flask import Flask, redirect, url_for
import json
import requests
import pandas as pd
app = Flask(__name__)
@app.route("/")
def home():
return "Hello! This is the home page <h1>HELLO</h1>"
@app.route("/")
def user():
#Enter Key here
key = "mykey is here"
ts = TimeSeries(key)
aapl, meta = ts.get_daily(symbol= "AAPL")
print(aapl['2020-10-10'])
if __name__ == "__main__":
app.run()
解决方案
阅读您的要点,您似乎有一些应该遵循的指导方针。
首先,在现实世界的应用程序中构建它,您的 API 应该能够处理查询参数,例如http:/localhost:5000/api/[SYMBOL]?NDAYS=days
. 在代码中将是这样的:
# You can pass query params
# /api/AAPL?NDAYS=3
@app.route("/api/<symbol>")
def user(symbol):
# You can now get the query parameters with
# request.args.to_dict()
# {"NDAYS": "3"}
但是,由于声明 NDAYS 和 SYMBOL 是通过环境变量提供给您的,因此您需要先将它们加载到 Python 脚本中。
import os
@app.route('/average')
def get_average():
stock = os.environ.get('SYMBOL')
ndays = os.environ.get('NDAYS')
# get the data from the JSON structure you are provided
# and return it
推荐阅读
- javascript - 我可以在 xampp (localhost) 中运行我的项目,但是即使在配置后尝试在另一台计算机上运行时我也无法运行
- python - xlwt 写入:意外的数据类型
- php - Laravel 控制器 -> API 类
- c# - Unity - 在我的游戏中处理 2 个键绑定输入
- c# - 为什么 1000 个线程比几个线程快?
- jquery - 嵌套函数在 HTML 中调用时不会执行
- c++ - 通过 LAN 向嵌入式设备发送自定义命令:字符还是整数?
- javascript - json中的意外令牌D?
- r - stat_compare_means 选定组的方差分析
- php - “无法访问站点”Socket.IO