我正在使用熊猫来获取一些股票数据,并试图跟踪2天移动平均线和19天移动平均线,并检查它们是否相互交叉。
问题是 如何仅在csv文件没有的地方附加新检索到的数据?如何只计算那几天的移动平均线? 如何检查新的移动平均线是否相互交叉传递?
我要这样做的原因是我不想让我的程序再次遍历整个数据集,这可能会花费很多时间。而且我只关心新数据。
我一直在谷歌搜索,但是我只看到人们下载整个数据集,而不仅仅是下载新数据。
我有一个比较新数据和csv文件中数据时间的想法,一旦匹配则停止追加。
但是,熊猫的滚动方法会遍历整个数据集,我找不到只对新添加的数据进行计算的方法或配置。
由于上述原因,我看不到新的移动平均线是否相互交叉。
import datetime as dt
import pandas as pd
import pandas_datareader.data as web
start = dt.datetime(2000, 1, 1)
end = dt.datetime.now()
# get data frame
# DataReader(ticker,wherefrom,starttime,endtime)
df = web.DataReader('TSLA', 'yahoo', start, end)
# convert data frame to csv
df.to_csv('tsla.csv')
# read .csv file in
df = pd.read_csv('tsla.csv', parse_dates=True, index_col=0) # set to use dates and take away the index colume
# moving average
df['2ma'] = df['Adj Close'].rolling(window=2,min_periods=0).mean()
df['19ma'] = df['Adj Close'].rolling(window=19,min_periods=0).mean()
# write back to the csv file
df.to_csv('tsla.csv')
最终目标是仅对新库存数据执行操作。
预期结果:
比方说,我有一些新的股票数据(当股市关闭或几天之内csv文件没有更新时),我想将新数据附加到csv文件中,计算2天和19天新数据的移动均线,也将它们附加到csv文件中,并检查最新移动均线是否相互交叉传递。