问题描述
过去几个小时我一直在这里撞墙,我对 python 不太熟悉,我正在尝试从雅虎财经导入历史数据。
我已将其设置为导入我想要的数据,但在尝试添加一些技术指标时遇到了实际数据的问题。我看到数据被四舍五入,使得低价和高价完全相同,除非我能解决这个问题,否则它对我的项目毫无用处。
我曾尝试使用 yfinance 的替代方案,即 alpha vantage,但遇到了同样的问题,我尝试将字段转换为浮点数,但它也给了我相同的值,只是后面有很多零。>
我怀疑这是我导入数据的方式,或者我的蜘蛛设置方式。下面的代码是我导入数据的方式,
import numpy as np
import pandas as pd
import yfinance as yf
from alpha_vantage.foreignexchange import ForeignExchange
api_key = "XXXXXXXXXXXXXXXX"
data = yf.download(tickers='EURUSD=X',period='7d',interval='1m',rounding ="True")
data3 = data.to_numpy()
fx =ForeignExchange(key=api_key,output_format="pandas")
data_FX,Meta_data_FX = fx.get_currency_exchange_inTraday(from_symbol="EUR",to_symbol = "USD",interval="1min",outputsize = "full")
这是将数据添加到数据集的方式
Datetime Open High Low Close Adj Close Volume
2021-01-15 00:00:00+00:00 1.2154 1.2154 1.2154 1.2154 1.2154 0
2021-01-15 00:01:00+00:00 1.2157 1.2157 1.2157 1.2157 1.2157 0
2021-01-15 00:02:00+00:00 1.2155 1.2155 1.2155 1.2155 1.2155 0
2021-01-15 00:03:00+00:00 1.2157 1.2157 1.2157 1.2157 1.2157 0
2021-01-15 00:04:00+00:00 1.2158 1.2158 1.2158 1.2158 1.2158 0
2021-01-15 00:05:00+00:00 1.2158 1.2158 1.2158 1.2158 1.2158 0
2021-01-15 00:06:00+00:00 1.2158 1.2158 1.2158 1.2158 1.2158 0
2021-01-15 00:07:00+00:00 1.2161 1.2161 1.2161 1.2161 1.2161 0
这个蜘蛛是不是需要调整,或者有更好/更正确的方式导入数据
解决方法
我不知道为什么yfinance的高低值是一样的,但是如果你把yfinance设置为1小时的间隔,高低值就会不同,所以如果你把alpha边调整为1小时,就可以了处理它。如果规范需要 1 分钟的间隔,那么这个答案是没有用的。
import datetime
import pandas as pd
import yfinance as yf
data = yf.download(tickers='EURUSD=X',period='7d',interval='1h',rounding ="True")
data3 = data.to_numpy()
Open High Low Close Adj Close Volume
Date
2021-01-18 1.2070 1.2085 1.2069 1.2079 1.2079 0
2021-01-18 1.2080 1.2085 1.2076 1.2082 1.2082 0
2021-01-18 1.2085 1.2089 1.2080 1.2086 1.2086 0
2021-01-18 1.2086 1.2088 1.2074 1.2079 1.2079 0
2021-01-18 1.2077 1.2080 1.2070 1.2073 1.2073 0
... ... ... ... ... ... ...
2021-01-25 1.2145 1.2148 1.2142 1.2146 1.2146 0
2021-01-26 1.2145 1.2149 1.2137 1.2139 1.2139 0
2021-01-26 1.2139 1.2151 1.2139 1.2149 1.2149 0
2021-01-26 1.2149 1.2154 1.2149 1.2149 1.2149 0
2021-01-26 1.2148 1.2148 1.2148 1.2148 1.2148 0
146 rows × 6 columns
from alpha_vantage.foreignexchange import ForeignExchange
with open('./alpha_vantage_api_key.txt') as f:
api_key = f.read()
fx =ForeignExchange(key=api_key,output_format="pandas")
data_FX,meta_data_FX = fx.get_currency_exchange_intraday(from_symbol="EUR",to_symbol = "USD",interval="60min",outputsize = "full")
1. open 2. high 3. low 4. close
date
2021-01-26 03:00:00 1.2145 1.2146 1.2143 1.2145
2021-01-26 02:00:00 1.2134 1.2146 1.2132 1.2145
2021-01-26 01:00:00 1.2143 1.2143 1.2131 1.2134
2021-01-26 00:00:00 1.2142 1.2145 1.2140 1.2143
2021-01-25 23:00:00 1.2137 1.2145 1.2134 1.2142
... ... ... ... ...
2020-11-30 20:00:00 1.1952 1.1952 1.1940 1.1947
2020-11-30 19:00:00 1.1954 1.1960 1.1949 1.1952
2020-11-30 18:00:00 1.1947 1.1955 1.1940 1.1954
2020-11-30 17:00:00 1.1964 1.1965 1.1941 1.1948
2020-11-30 16:00:00 1.1994 1.2003 1.1954 1.1964