def trading_file(filename): start_trading_day = 20000104 end_trading_day = 20081230 _property = 0 #総資産 money = 1000000 #所持金 filepath = args.data_folder + '/' + filename #株価データの読み込み _time, _open, _max, _min, _close, _volume, _keisu, _shihon = make_dataset.readfile( filepath) try: iday = _time.index(start_trading_day) eday = _time.index(end_trading_day) except: return np.nan point_rsi = getStrategy_RSI(start_trading_day, end_trading_day, _time, _close) #売買開始日からスライス _time = _time[iday:eday] _close = _close[iday:eday] profit_ratio = trading(money, point_rsi, _close)[0] return profit_ratio
def trading_file(filename): start_trading_day = 20000104 end_trading_day = 20081230 _property = 0#総資産 money = 1000000#所持金 filepath = args.data_folder +'/'+ filename #株価データの読み込み _time,_open,_max,_min,_close,_volume,_keisu,_shihon = make_dataset.readfile(filepath) try: iday = _time.index(start_trading_day) eday = _time.index(end_trading_day) except: return np.nan point_rsi = getStrategy_RSI(start_trading_day,end_trading_day,_time,_close) #売買開始日からスライス _time = _time[iday:eday] _close = _close[iday:eday] profit_ratio = trading(money,point_rsi,_close)[0] return profit_ratio
tf.write('bound_ratio:'+str(bound_ratio)) sum_profit_ratio = 0 profit_ratio_list = [] trading_count_list = [] files = os.listdir("./stockdata") for f in files: print f predictlist = [] outputlist = [] money = 1000000#所持金 filepath = "./stockdata/%s" % f #株価データの読み込み _time,_open,_max,_min,_close,_volume,_keisu,_shihon = md.readfile(filepath) try: iday = _time.index(START_TEST_DAY) except: print 'can not find START_TEST_DAY' continue train, test = md.getTeacherDataMultiTech(f,START_TEST_DAY,NEXT_DAY,input_num,stride=1,u_vol=u_vol,u_ema=u_ema,u_rsi=u_rsi,u_macd=u_macd,u_stoch=u_stoch,u_wil=u_wil) if (train == -1) or (test == -1): print 'skip',f continue for row in test:
def main(files): start_trading_day = 20000104 end_trading_day = 20081230 #start_trading_day = 20090105 #end_trading_day = 20101229 meigara_count = 0 sum_profit_ratio_rsi = 0 sum_profit_ratio_macd = 0 sum_profit_ratio_gd = 0 sum_profit_ratio_stoch = 0 sum_profit_ratio_rsi = 0 sum_bh_profit_ratio = 0 for f in tqdm(files): #print f _property = 0#総資産 money = 1000000#所持金 filepath = args.data_folder +'/'+ f #株価データの読み込み _time,_open,_max,_min,_close,_volume,_keisu,_shihon = make_dataset.readfile(filepath) try: iday = _time.index(start_trading_day) eday = _time.index(end_trading_day) except: #print "can't find start_test_day" continue#start_trading_dayが見つからなければ次のファイルへ point_rsi = getStrategy_RSI(start_trading_day,end_trading_day,_time,_close) point_macd = getStrategy_MACD(start_trading_day,end_trading_day,_time,_close) point_gd = getStrategy_GD(start_trading_day,end_trading_day,_time,_close) point_stoch = getStrategy_STOCH(start_trading_day,end_trading_day,_time,_close,_max,_min) #売買開始日からスライス _time = _time[iday:eday] _close = _close[iday:eday] #buy&holdの利益率を計算 bh_profit_ratio = float((_close[-1] - _close[0]) / _close[0]) * 100 sum_bh_profit_ratio += bh_profit_ratio profit_ratio = trading(money,point_rsi,_close) #print "RSI profit of %s is %f " % (f, profit_ratio[0]) sum_profit_ratio_rsi += profit_ratio[0] profit_ratio = trading(money,point_macd,_close) #print "MACD profit of %s is %f " % (f, profit_ratio[0]) sum_profit_ratio_macd += profit_ratio[0] profit_ratio = trading(money,point_gd,_close) #print "GD profit of %s is %f " % (f, profit_ratio[0]) sum_profit_ratio_gd += profit_ratio[0] profit_ratio = trading(money,point_stoch,_close) #print "STOCH profit of %s is %f " % (f, profit_ratio[0]) sum_profit_ratio_stoch += profit_ratio[0] meigara_count += 1 #print meigara_count print "RSI profit average is = %f" % (sum_profit_ratio_rsi / meigara_count) print "MACD profit average is = %f" % (sum_profit_ratio_macd / meigara_count) print "GD profit average is = %f" % (sum_profit_ratio_gd / meigara_count) print "STOCH profit average is = %f" % (sum_profit_ratio_stoch / meigara_count) print 'buy&hold profit = %f' % (sum_bh_profit_ratio / meigara_count) print "all meigara is %d" % meigara_count
sum_profit_ratio_macd = 0 sum_profit_ratio_gd = 0 sum_profit_ratio_stoch = 0 sum_profit_ratio_rsi = 0 sum_bh_profit_ratio = 0 files = os.listdir("./stockdata") for f in files: print f _property = 0#総資産 money = 1000000#所持金 filepath = "./stockdata/%s" % f #株価データの読み込み _time,_open,_max,_min,_close,_volume,_keisu,_shihon = make_dataset.readfile(filepath) try: iday = _time.index(start_trading_day) eday = _time.index(end_trading_day) except: print "can't find start_test_day" continue#start_trading_dayが見つからなければ次のファイルへ point_rsi = getStrategy_RSI(start_trading_day,end_trading_day,_time,_close) point_macd = getStrategy_MACD(start_trading_day,end_trading_day,_time,_close) point_gd = getStrategy_GD(start_trading_day,end_trading_day,_time,_close) point_stoch = getStrategy_STOCH(start_trading_day,end_trading_day,_time,_close,_max,_min) #売買開始日からスライス _time = _time[iday:eday] _close = _close[iday:eday]
import time from make_dataset import ImgDataset, readfile, readfile_add from MSASDNet import MSASDNet f = open("./logs/train_logs.txt", 'w') f.write("Training loss logs:") f.write("\n") f.close() # train_path = "./AISD/Train412/" val_path = "./AISD/Val51/" print("Reading data ......") batch_size = 4 train_x, train_y = readfile_add(train_path, True) val_x, val_y = readfile(val_path, True) train_set = ImgDataset(train_x, train_y) val_set = ImgDataset(val_x, val_y) train_loader = DataLoader(train_set, batch_size=batch_size, shuffle=True) val_loader = DataLoader(val_set, batch_size=batch_size, shuffle=False) # 定义模型 model = MSASDNet().cuda() loss = nn.CrossEntropyLoss() # 二分类交叉熵损失函数 loss = nn.CrossEntropyLoss() # 优化器 Adam optimizer = torch.optim.Adam(model.parameters(), lr=0.001) num_epoch = 30 # 开始训练
def main(files): start_trading_day = 20000104 end_trading_day = 20081230 #start_trading_day = 20090105 #end_trading_day = 20101229 meigara_count = 0 profit_ratio_rsi_list = [] profit_ratio_macd_list = [] profit_ratio_gd_list = [] profit_ratio_stoch_list = [] profit_ratio_rsi_list = [] bh_profit_ratio_list = [] for f in tqdm(files): #print f _property = 0 #総資産 money = 1000000 #所持金 filepath = args.data_folder + '/' + f #株価データの読み込み _time, _open, _max, _min, _close, _volume, _keisu, _shihon = make_dataset.readfile( filepath) try: iday = _time.index(start_trading_day) eday = _time.index(end_trading_day) except: #print "can't find start_test_day" continue #start_trading_dayが見つからなければ次のファイルへ point_rsi = getStrategy_RSI(start_trading_day, end_trading_day, _time, _close) point_macd = getStrategy_MACD(start_trading_day, end_trading_day, _time, _close) point_gd = getStrategy_GD(start_trading_day, end_trading_day, _time, _close) point_stoch = getStrategy_STOCH(start_trading_day, end_trading_day, _time, _close, _max, _min) #売買開始日からスライス _time = _time[iday:eday] _close = _close[iday:eday] #buy&holdの利益率を計算 bh_profit_ratio = float((_close[-1] - _close[0]) / _close[0]) * 100 bh_profit_ratio_list.append(bh_profit_ratio) profit_ratio = trading(money, point_rsi, _close)[0] profit_ratio_rsi_list.append(profit_ratio) profit_ratio = trading(money, point_macd, _close)[0] profit_ratio_macd_list.append(profit_ratio) profit_ratio = trading(money, point_gd, _close)[0] profit_ratio_gd_list.append(profit_ratio) profit_ratio = trading(money, point_stoch, _close)[0] profit_ratio_stoch_list.append(profit_ratio) meigara_count += 1 #print meigara_count print "RSI profit average is = ", sum(profit_ratio_rsi_list) / len( profit_ratio_rsi_list) print "MACD profit average is = ", sum(profit_ratio_macd_list) / len( profit_ratio_macd_list) print "GD profit average is = ", sum(profit_ratio_gd_list) / len( profit_ratio_gd_list) print "STOCH profit average is = ", sum(profit_ratio_stoch_list) / len( profit_ratio_stoch_list) print 'buy&hold profit = ', sum(bh_profit_ratio_list) / len( bh_profit_ratio_list) print "all meigara is %d" % meigara_count tools.listToCsv('profit_ratio_list.csv', bh_profit_ratio_list, profit_ratio_gd_list, profit_ratio_macd_list, profit_ratio_rsi_list, profit_ratio_stoch_list)