python通达信5分钟转,10分钟,15分钟,30分钟,60分钟,量化交易,K线
生活随笔
收集整理的這篇文章主要介紹了
python通达信5分钟转,10分钟,15分钟,30分钟,60分钟,量化交易,K线
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
import osimport pandas as pdfrom pandas import Timedeltafrom stock_c.csv2dataframe import import_csv# 用通達信小周期,生成大周期數據def csv_resample(df, rule) -> pd.DataFrame:# 重新采樣Open列數據df_open = round(df['Open'].resample(rule=rule, closed='right', label='left').first(), 2)df_high = round(df['High'].resample(rule=rule, closed='right', label='left').max(), 2)df_low = round(df['Low'].resample(rule=rule, closed='right', label='left').min(), 2)df_close = round(df['Close'].resample(rule=rule, closed='right', label='left').last(), 2)df_volume = round(df['Volume'].resample(rule=rule, closed='right', label='left').sum(), 2)# print("新周期數據已生成")# 生成新周期數據df_15t = pd.DataFrame()df_15t = df_15t.assign(Open=df_open)df_15t = df_15t.assign(High=df_high)df_15t = df_15t.assign(Low=df_low)df_15t = df_15t.assign(Close=df_close)df_15t = df_15t.assign(Volume=df_volume)# 去除空值df_15t = df_15t.dropna()return df_15t# 根據通達信5分鐘周期數據,生成其他周期數據def lc5_resample(filepath, name, targetdir, rule) -> None:# (通達信.lc5文件路徑, 通達信.lc5文件名稱, 處理后要保存到的文件夾)# 設置處理后保存文件的路徑和名稱print("周期轉換已開始: " + rule)file_object_path = targetdir + name.split('.')[0] + ".lc" + rule[:len(rule) - 1] + '.csv'df = import_csv(filepath)if rule == '60T':df = round(change_13_11_14_12(df), 2)df = csv_resample(df, rule)df.to_csv(file_object_path)print("數據轉換已完成: " + name)def lc5_rule(rule):# 設置通達信5分鐘周期數據文件所在的文件夾path_dir = '../lc5/'# 設置要轉換的新周期rule_cycle = rule# 設置數據處理好后,要將csv文件保存的文件夾target_dir = '../lc' + rule_cycle[:len(rule_cycle) - 1] + '/'# 讀取文件夾下的通達信.lc5.csv文件listfile = os.listdir(path_dir)# 逐個處理文件夾下的通達信.lc5.csv文件,并生成對應的csv文件,保存到對應周期文件夾下for fname in listfile:lc5_resample(path_dir + fname, fname, target_dir, rule_cycle)else:print('The for ' + path_dir + ' to ' + target_dir + ' loop is over')print("文件轉換已完成")def change_13_11_14_12(df) -> pd.DataFrame:date = []for i in df.index:if i.hour == 13:i = i - Timedelta('02:00:00')if i.hour == 14 and i.minute == 0 and i.second == 0:i = i - Timedelta('02:00:00')date.append(i)df = df.assign(Date=pd.Series(date, index=df.index))df.set_index(['Date'], inplace=True)return df# 轉換成新周期lc5_rule('10T')lc5_rule('15T')lc5_rule('30T')lc5_rule('60T')# 讀取csv文件,返回pd.DataFrame對象def import_csv(stock_code) -> pd.DataFrame:df = pd.read_csv(stock_code)df['Date'] = pd.to_datetime(df['Date'], format='%Y/%m/%d')df.set_index(['Date'], inplace=True)return df
總結
以上是生活随笔為你收集整理的python通达信5分钟转,10分钟,15分钟,30分钟,60分钟,量化交易,K线的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 了解UART
- 下一篇: 看4D电影,挨了一顿毒打