Path: blob/master/finrl/meta/preprocessor/example_of_shioaji_api.py
732 views
from __future__ import annotations12import gc34import pandas as pd56from finrl.config_tickers import TAI_0050_TICKER7from finrl.meta.data_processors.processor_sinopac import SinopacProcessor8from finrl.meta.preprocessor.preprocessors import data_split9from finrl.meta.preprocessor.shioajidownloader import SinopacDownloader101112TRAIN_START_DATE = "2023-04-13"13TRAIN_END_DATE = "2024-04-13"14TRADE_START_DATE = "2024-04-13"15TRADE_END_DATE = "2024-07-31"161718def process_ticker_data(ticker):19print(f"Processing data for ticker: {ticker}")20df_raw = SinopacDownloader(21start_date=TRAIN_START_DATE, end_date=TRADE_END_DATE, ticker_list=[ticker]22).fetch_data()2324df_raw.rename(25columns={26"open": "Open",27"high": "High",28"low": "Low",29"close": "Close",30"volume": "Volume",31"amount": "Amount",32},33inplace=True,34)3536processor = SinopacProcessor(37API_KEY="3Tn2BbtCzbaU1KSy8yyqLa4m7LEJJyhkRCDrK2nknbcu",38API_SECRET="Epakqh1Nt4inC3hsqowE2XjwQicPNzswkuLjtzj2WKpR",39)4041cleaned_df = processor.clean_data(df_raw)42df_with_indicators = processor.add_technical_indicator(cleaned_df)43df_with_vix = processor.add_vix(df_with_indicators)44df_with_turbulence = processor.add_turbulence(df_with_vix, time_period=252)4546# Save processed data for each ticker to a separate file47df_with_turbulence.to_csv(f"data_{ticker}.csv")4849# Explicitly delete unused objects and collect garbage50del df_raw, cleaned_df, df_with_indicators, df_with_vix, df_with_turbulence51gc.collect()525354df_final = pd.DataFrame()55for ticker in TAI_0050_TICKER:56process_ticker_data(ticker)57# Load processed data from file and concatenate58df_ticker = pd.read_csv(f"data_{ticker}.csv")59df_final = pd.concat([df_final, df_ticker], ignore_index=True)60del df_ticker # free up memory61gc.collect()6263train = data_split(df_final, TRAIN_START_DATE, TRAIN_END_DATE)64trade = data_split(df_final, TRADE_START_DATE, TRADE_END_DATE)65train.to_csv("train_data.csv")66trade.to_csv("trade_data.csv")676869