【发布时间】:2021-01-05 20:47:58
【问题描述】:
我可以使用下面的代码从单个文件(包含代码、日期、OHLC 和交易量)构建框架,然后使用 TA-lib 构建技术指标。工作正常。我还可以使用“glob”将数千个 csv 组合成一个 blob 并导入 SQL,然后针对 sql(使用其他插件)运行 python 脚本来解析值并构建技术指标值,但是,正在发生的事情是移动不是单独计算每个符号的平均值,而是只计算 SQL 表(或 csv)中所有符号的平均值,从而搞砸了一切。换句话说,在第 11 行,股票代码已经从 A 变为 B,前 10 行都是股票代码 A,TA-lib 只是使用第 11 行上的数据,就好像它是股票代码 A 数据的一部分但现在,它是股票代码 B。它应该从每个独特的股票代码重新开始。如果我能找到一种方法为每个 csv 文件构建单独的数据框,运行计算,然后输出到数千个新创建的 csv 文件(每个唯一代码一个),这将解决问题。我也可以一起避免 SQL。提前致谢。
import pandas as pd
import talib
csv_file = "C:\\Users\\Bob\\IBM.csv"
df = pd.read_csv(csv_file)
Symbol = df['Symbol']
Date = df['Date']
Open = df['Open']
High = df['High']
Low = df['Low']
Close = df['Close']
Volume = df['Volume']
from talib import SMA,T3
SMA = SMA(Close, timeperiod=5)
print(SMA)
T3 = T3(Close, timeperiod=5, vfactor=0)
print(T3)
total_df = pd.concat([Symbol, Date, Open, High, Low, Close, Volume, SMA, T3])
print(total_df)
total_df.to_csv("test.csv")
**************下面是我最新的代码**************
import pandas as pd
import talib
import glob, os
from talib import SMA, T3
import os
csv_file_list = glob.glob(r"H:\EOD_DATA_RECENT\TEST\\*.csv")
print(csv_file_list)
for csv_file in csv_file_list:
df = pd.read_csv(csv_file)
print(df)
df['SMA'] = SMA(df['AdjustedClose'], timeperiod=5)
# print(df['SMA'])
df['T3'] = T3(df['AdjustedClose'], timeperiod=5, vfactor=0)
# print(df['T3'])
print(df)
df.to_csv("test.csv")
【问题讨论】:
-
欢迎来到 SO!你的问题现在有点不清楚,因为你的代码并没有真正显示你正在尝试做的事情是行不通的,它指的是像 SMA() 和 T3() 这样的东西,如果其他人尝试过,它们就无法重现运行这个。尝试创建一个MCWE