400字范文,内容丰富有趣,生活中的好帮手!
400字范文 > python通达信5分钟转 10分钟 15分钟 30分钟 60分钟 量化交易 K线

python通达信5分钟转 10分钟 15分钟 30分钟 60分钟 量化交易 K线

时间:2018-09-22 08:53:43

相关推荐

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。