def get_high_low_points(self, stock_code_list): msg = '''<html> <tr>Trend inverse reminder from H&L Model</tr> <table width="300" border="1" bordercolor="black" cellspacing="1">''' bar_size = [5, 30, 60] column_num = [5, 9, 13] threshold = [0.03, 0.05, 0.15] send_email_flag = False for ii in range(len(bar_size)): if bar_size[ii] == 60: stock_intraday_data = LoadData.get_daily_stock_data( stock_code_list, "20100101") msg = msg + ''' <tr><td rowspan="2">''' + ''' daily </td>''' else: stock_intraday_data = LoadData.get_intraday_stock_data( stock_code_list, bar_size=bar_size[ii], delta_days=365) msg = msg + ''' <tr><td rowspan="2">''' + str( bar_size[ii]) + ''' min </td>''' high_point_index_list, high_point_list, high_point_time_list, low_point_index_list, low_point_list, low_point_time_list = HighLowPoint.get_high_low_points_list( stock_intraday_data, threshold[ii]) fall_end_list = [] rise_end_lsit = [] fall_end_msg = "" rise_end_msg = "" for jj in range(len(stock_code_list)): self.write_data_to_file(column_num[ii], jj, high_point_list[jj][-1], high_point_time_list[jj][-1], low_point_list[jj][-1], low_point_time_list[jj][-1]) temp_msg_fall_end, temp_msg_rise_end = self.judge_trend_inverse( high_point_list[jj], low_point_list[jj], self.current_price[jj]) if temp_msg_fall_end == True: fall_end_list.append(stock_code_list[jj]) send_email_flag = True if temp_msg_rise_end == True: rise_end_lsit.append(stock_code_list[jj]) send_email_flag = True for item in fall_end_list: fall_end_msg = fall_end_msg + item + " " for item in rise_end_lsit: rise_end_msg = rise_end_msg + item + " " msg = msg + "<td>" + "Falling End" + "</td><td>" + fall_end_msg + "</td></tr><tr><td> Rising End </td><td>" + rise_end_msg + "</td></tr> \n" msg = msg + " </table></html>" print msg if send_email_flag == True: a = SendEmail.Send_Email("Trend inverse reminder from H&L Model", msg) print a.isSend
def verify_account(self): self.usernameError.setText('') self.passwordError.setText('') data = LoadData() if self.usernameInput.text() != '' and self.passwordInput != '': if self.usernameInput.text() == '': self.usernameError.setText('Please enter a username') self.usernameError.adjustSize() if self.passwordInput.text() == '': self.passwordError.setText('Please enter a password') self.passwordError.adjustSize() if self.usernameInput.text() not in data.username_list: self.usernameError.setText('Please check your username') self.usernameError.adjustSize() else: if self.passwordInput.text() not in data.password_list: self.passwordError.setText('You got the wrong password') self.passwordError.adjustSize() else: self.usernameError.setText('Please enter a username') self.usernameError.adjustSize() self.passwordError.setText('Please enter a password') self.passwordError.adjustSize()
def __init__(self): input_file_path = "input/PriceVolume/bench_mark.xlsx" bench_mark_list,self.bench_mark_name_list = self.load_bench_mark_data(input_file_path) #bench_mark_list = ["000016.SH","000001.SH","000300.SH","399006.SZ","399905.SZ"] #self.bench_mark_name_list = [u"上证50",u"上证综指",u"沪深300",u"创业板指",u"中证500"] #bench_mark_list = ["0806.HK","QIHU.N"] #self.bench_mark_name_list = [u"惠理",u"奇虎"] stock_data_list = LoadData.get_daily_stock_data(bench_mark_list,"20110101") self.price_index = 4 self.volume_index = 5 self.trade_cost = 1-0.001 self.range_day = 1 self.regression_day = [2,5] # short flag = 1 表示可以做空 short_flag = 1 self.price_list = [] self.volume_list = [] for ii in range(len(bench_mark_list)): self.price_list.append(list(zip(*stock_data_list[ii])[self.price_index])) self.volume_list.append(list(zip(*stock_data_list[ii])[self.volume_index])) self.plot(self.price_list,bench_mark_list,self.range_day,short_flag) #self.run(bench_mark_list) print "done\n"
def __init__(self): file_path = "input/HighLowPoint/user_data.xlsx" stock_code_list,stock_name_list,stock_buy_price_list,stock_sell_price_list = LoadUserData.load_user_data(file_path) stock_daily_data_list = LoadData.get_daily_stock_data(stock_code_list) self.fall_end_flag = [] self.rise_end_flag = [] print "begin running\n" self.run(stock_code_list,stock_buy_price_list,stock_sell_price_list)
def get_high_low_points(self,stock_code_list): msg = '''<html> <tr>Trend inverse reminder from H&L Model</tr> <table width="300" border="1" bordercolor="black" cellspacing="1">''' bar_size = [5,30,60] column_num = [5,9,13] threshold = [0.03,0.05,0.15] send_email_flag = False for ii in range(len(bar_size)): if bar_size[ii]==60: stock_intraday_data = LoadData.get_daily_stock_data(stock_code_list,"20100101") msg = msg +''' <tr><td rowspan="2">''' + ''' daily </td>''' else: stock_intraday_data = LoadData.get_intraday_stock_data(stock_code_list,bar_size=bar_size[ii],delta_days = 365) msg = msg +''' <tr><td rowspan="2">''' +str(bar_size[ii]) + ''' min </td>''' high_point_index_list,high_point_list,high_point_time_list,low_point_index_list,low_point_list,low_point_time_list = HighLowPoint.get_high_low_points_list(stock_intraday_data,threshold[ii]) fall_end_list = [] rise_end_lsit = [] fall_end_msg = "" rise_end_msg = "" for jj in range(len(stock_code_list)): self.write_data_to_file(column_num[ii],jj,high_point_list[jj][-1],high_point_time_list[jj][-1],low_point_list[jj][-1],low_point_time_list[jj][-1]) temp_msg_fall_end, temp_msg_rise_end = self.judge_trend_inverse(high_point_list[jj],low_point_list[jj],self.current_price[jj]) if temp_msg_fall_end ==True: fall_end_list.append(stock_code_list[jj]) send_email_flag = True if temp_msg_rise_end == True: rise_end_lsit.append(stock_code_list[jj]) send_email_flag = True for item in fall_end_list: fall_end_msg = fall_end_msg + item + " " for item in rise_end_lsit: rise_end_msg = rise_end_msg + item +" " msg = msg +"<td>" + "Falling End" + "</td><td>"+fall_end_msg +"</td></tr><tr><td> Rising End </td><td>"+rise_end_msg+"</td></tr> \n" msg = msg +" </table></html>" print msg if send_email_flag == True: a = SendEmail.Send_Email("Trend inverse reminder from H&L Model",msg) print a.isSend
def __init__(self): file_path = "input/HighLowPoint/user_data.xlsx" stock_code_list, stock_name_list, stock_buy_price_list, stock_sell_price_list = LoadUserData.load_user_data( file_path) stock_daily_data_list = LoadData.get_daily_stock_data(stock_code_list) self.fall_end_flag = [] self.rise_end_flag = [] print "begin running\n" self.run(stock_code_list, stock_buy_price_list, stock_sell_price_list)
def run(self,stock_code_list,stock_buy_price_list,stock_sell_price_list): for ii in range(60): print "the " + str(ii) + " th is begining" self.current_price = LoadData.get_realtime_price(stock_code_list) print self.current_price self.get_high_low_points(stock_code_list) #self.stock_price_reminder(stock_code_list,stock_buy_price_list,stock_sell_price_list) print "the "+ str(ii) + " th is done." time.sleep(300)
def run(self, stock_code_list, stock_buy_price_list, stock_sell_price_list): for ii in range(60): print "the " + str(ii) + " th is begining" self.current_price = LoadData.get_realtime_price(stock_code_list) print self.current_price self.get_high_low_points(stock_code_list) #self.stock_price_reminder(stock_code_list,stock_buy_price_list,stock_sell_price_list) print "the " + str(ii) + " th is done." time.sleep(300)
def __init__(self, ma_days=200, start_date="19950101", init_days=60, short_flag=0): input_file_path = "../input/DeviationFromMA/user_data.xlsx" self.user_stock_code_list, self.user_stock_name_list = self.load_excel( input_file_path) self.user_stock_data_list = LoadData.get_daily_stock_data( self.user_stock_code_list, start_date) self.short_flag = short_flag self.trade_cost = 1 - 0.001 self.ma_days = ma_days self.user_stock_price_data_list = [] self.user_stock_uniform_price_list = [] self.user_stock_datetime_list = [] self.user_stock_price_data_old_list = [] for ii in range(len(self.user_stock_code_list)): self.user_stock_price_data_list.append( (list(zip(*self.user_stock_data_list[ii])[4]))[init_days:]) self.user_stock_price_data_old_list.append( list(zip(*self.user_stock_data_list[ii])[4])) self.user_stock_datetime_list.append( (list(zip(*self.user_stock_data_list[ii])[0]))[init_days:]) self.user_stock_uniform_price_list.append( CalcIndex.Uniform_Price(self.user_stock_price_data_list[ii])) self.price_ma_list = CalcIndex.Calc_MA( self.user_stock_price_data_old_list, int(ma_days), int(init_days)) self.diviation_from_ma_list, self.diviation_from_ma_std_list = self.calc_diviation_from_ma( ma_days) self.ma_dict = {60: 10, 120: 20, 200: 60, 250: 60} self.diviation_ma_list = CalcIndex.Calc_MA(self.diviation_from_ma_list, self.ma_dict[self.ma_days]) #self.plot(ma_days) #self.eveluate_index(ma_days) long_stand_deviation = {60: -0.5, 120: -0.1, 200: -0.15, 250: -0.2} short_stand_deviation = {60: 0.5, 120: 0.1, 200: 0.15, 250: 0.2} self.back_test_info = self.back_test(long_stand_deviation[ma_days], short_stand_deviation[ma_days]) self.plot_back_test(ma_days) print "done."
def __init__(self): file_path = "input/user_data.xlsx" self.user_stock_code_list,self.user_stock_name_list,user_stock_buy_point_list,user_stock_sell_point_list = LoadUserData.load_user_data(file_path) self.daily_stock_data_all = LoadData.get_daily_stock_data(self.user_stock_code_list,"20150101") #存放收盘价 self.daily_stock_data = [] for ii in range(len(self.daily_stock_data_all)): temp = [] for jj in range(len(self.daily_stock_data_all[ii])): temp.append(self.daily_stock_data_all[ii][jj][4]) self.daily_stock_data.append(temp) #print self.daily_stock_data[0][-1],self.daily_stock_data[1][-1] self.reminder_info= [] self.run()
def __init__(self): file_path = "input/user_data.xlsx" self.user_stock_code_list, self.user_stock_name_list, user_stock_buy_point_list, user_stock_sell_point_list = LoadUserData.load_user_data( file_path) self.daily_stock_data_all = LoadData.get_daily_stock_data( self.user_stock_code_list, "20150101") #存放收盘价 self.daily_stock_data = [] for ii in range(len(self.daily_stock_data_all)): temp = [] for jj in range(len(self.daily_stock_data_all[ii])): temp.append(self.daily_stock_data_all[ii][jj][4]) self.daily_stock_data.append(temp) #print self.daily_stock_data[0][-1],self.daily_stock_data[1][-1] self.reminder_info = [] self.run()
def __init__(self): input_file_path = "input/PriceVolume/bench_mark.xlsx" bench_mark_list, self.bench_mark_name_list = self.load_bench_mark_data( input_file_path) #bench_mark_list = ["000016.SH","000001.SH","000300.SH","399006.SZ","399905.SZ"] #self.bench_mark_name_list = [u"上证50",u"上证综指",u"沪深300",u"创业板指",u"中证500"] #bench_mark_list = ["0806.HK","QIHU.N"] #self.bench_mark_name_list = [u"惠理",u"奇虎"] stock_data_list = LoadData.get_daily_stock_data( bench_mark_list, "20110101") self.price_index = 4 self.volume_index = 5 self.trade_cost = 1 - 0.001 self.range_day = 1 self.regression_day = [2, 5] # short flag = 1 表示可以做空 short_flag = 1 self.price_list = [] self.volume_list = [] for ii in range(len(bench_mark_list)): self.price_list.append( list(zip(*stock_data_list[ii])[self.price_index])) self.volume_list.append( list(zip(*stock_data_list[ii])[self.volume_index])) self.plot(self.price_list, bench_mark_list, self.range_day, short_flag) #self.run(bench_mark_list) print "done\n"
def __init__(self,ma_days=200,start_date="19950101",init_days = 60,short_flag =0): input_file_path = "../input/DeviationFromMA/user_data.xlsx" self.user_stock_code_list,self.user_stock_name_list = self.load_excel(input_file_path) self.user_stock_data_list = LoadData.get_daily_stock_data(self.user_stock_code_list,start_date) self.short_flag = short_flag self.trade_cost = 1-0.001 self.ma_days = ma_days self.user_stock_price_data_list = [] self.user_stock_uniform_price_list =[] self.user_stock_datetime_list = [] self.user_stock_price_data_old_list =[] for ii in range(len(self.user_stock_code_list)): self.user_stock_price_data_list.append((list(zip(*self.user_stock_data_list[ii])[4]))[init_days:]) self.user_stock_price_data_old_list.append(list(zip(*self.user_stock_data_list[ii])[4])) self.user_stock_datetime_list.append((list(zip(*self.user_stock_data_list[ii])[0]))[init_days:]) self.user_stock_uniform_price_list.append(CalcIndex.Uniform_Price(self.user_stock_price_data_list[ii])) self.price_ma_list = CalcIndex.Calc_MA(self.user_stock_price_data_old_list,int(ma_days),int(init_days)) self.diviation_from_ma_list,self.diviation_from_ma_std_list = self.calc_diviation_from_ma(ma_days) self.ma_dict ={60:10,120:20,200:60,250:60} self.diviation_ma_list = CalcIndex.Calc_MA(self.diviation_from_ma_list,self.ma_dict[self.ma_days]) #self.plot(ma_days) #self.eveluate_index(ma_days) long_stand_deviation = {60:-0.5,120:-0.1,200:-0.15,250:-0.2} short_stand_deviation = {60:0.5,120:0.1,200:0.15,250:0.2} self.back_test_info = self.back_test(long_stand_deviation[ma_days],short_stand_deviation[ma_days]) self.plot_back_test(ma_days) print "done."
def run(self,bench_mark_list,short_flag = 1,range_day =1): realtime_price_list,realtime_volume_list = LoadData.get_realtime_price_and_volume(bench_mark_list) print bench_mark_list print realtime_price_list print realtime_volume_list reminder_info_flag_list = [] is_send_email = False for ii in range(len(bench_mark_list)): if float(datetime.today().hour) >=15: self.price_list[ii].pop() self.volume_list[ii].pop() print "volume",self.volume_list[ii][-1] old_action_len = [] for regression_day in self.regression_day: old_action_len_per_rangeday = [] self.offset = range_day +regression_day -2 self.slope_price_list = PriceVolume.PriceVolume(self.price_list,range_day,regression_day) self.slope_volume_list = PriceVolume.PriceVolume(self.volume_list,range_day,regression_day) action_index_list,action_type_list,revenue_list = self.backtest(self.offset,short_flag) for ii in range(len(action_type_list)): old_action_len_per_rangeday.append(len(action_index_list[ii])) old_action_len.append(old_action_len_per_rangeday) for ii in range(len(bench_mark_list)): self.price_list[ii].append(realtime_price_list[ii]) self.volume_list[ii].append(realtime_volume_list[ii]) print "volume new",self.volume_list[ii][-1] for ii in range(len(self.regression_day)): temp_reminder_info_flag = [] regression_day = self.regression_day[ii] self.offset = range_day +regression_day -2 self.slope_price_list = PriceVolume.PriceVolume(self.price_list,range_day,regression_day) self.slope_volume_list = PriceVolume.PriceVolume(self.volume_list,range_day,regression_day) action_index_list,action_type_list,revenue_list = self.backtest(self.offset,short_flag) for jj in range(len(action_index_list)): print len(action_index_list[jj]),old_action_len[ii][jj] if len(action_index_list[jj]) - old_action_len[ii][jj] ==1: temp_reminder_info_flag.append(action_type_list[jj][-1]) is_send_email = True else: temp_reminder_info_flag.append("x") reminder_info_flag_list.append(temp_reminder_info_flag) print reminder_info_flag_list if is_send_email == True: msg= '''<html> <tr>Trade reminder from Price & Volume Model</tr> <table width="300" border="1" bordercolor="black" cellspacing="1">''' for ii in range(len(reminder_info_flag_list)): if ii ==0: msg = msg + '''<tr><td> ''' + ''' </td>''' for jj in range(len(reminder_info_flag_list[ii])): msg = msg + ''' <td> ''' + str(bench_mark_list[jj])+ "</td>" msg = msg + ''' </tr>\n''' msg = msg + '''<tr><td>''' + str(self.regression_day[ii]) + ''' day </td>''' for jj in range(len(reminder_info_flag_list[ii])): if reminder_info_flag_list[ii][jj] =="b": msg = msg + '''<td> long </td>''' elif reminder_info_flag_list[ii][jj] =="s": if short_flag ==1: msg = msg + '''<td> short </td> ''' else: msg = msg + '''<td> close previous long postion </td>''' else: msg = msg + '''<td> </td> ''' msg = msg + '''</tr> \n''' msg = msg + '''</table></html> ''' send_email = SendEmail.Send_Email("Trade reminder from Price & Volume Model",msg) print send_email.isSend
# # In[7]: # class LabelTransform(): # def __init__(self, classes): # self.classes = classes # def transform(self, label): # label = self.classes[label] # return label # In[10]: path = './iris.csv' classes = {"Iris-setosa": 0, "Iris-versicolor": 1, "Iris-virginica": 2} labeltransform = LabelTransform(classes) dataset_return = DatasetCSV(path, labeltransform) load_data_obj = LoadData(dataset_return) load_data_obj.prepare_data() print() # idxs = list(range(len(dataset_return))) # random.shuffle(idxs) # train_idx = int(len(dataset_return) * 0.6) # cv_idx = train_idx + int(len(dataset_return) * 0.2) # train = idxs[: train_idx] # cv = idxs[train_idx: cv_idx] # test = idxs[cv_idx:] # # In[ ]: # train_dataset = Subset(dataset_return, train) # cv_dataset = Subset(dataset_return, cv)
from model import CreateModel from data import LoadData from keras.callbacks import ModelCheckpoint import tensorflowjs as tfjs import matplotlib.pyplot as plt model = CreateModel() model.compile(optimizer='sgd', loss='binary_crossentropy', metrics=['binary_accuracy']) training_data, validation_data = LoadData() # ## train model #save_model = ModelCheckpoint('model.h5', save_best_only=True, save_weights_only=True, verbose=1) #print(f'data generator length: {len(training_data)}') #model.fit_generator( # training_data, # validation_data=validation_data, # epochs=2, # callbacks=[save_model]) # ## fine tuning #for layer in base_model.layers[:-5]: # layer.trainable = False #model.compile(optimizer='sgd', loss='binary_crossentropy', metrics=['binary_accuracy']) #model.fit_generator( # training_data, # validation_data=validation_data, # epochs=2, # callbacks=[save_model]) ## save model
def train(configs): """ """ #src = T.imatrix() src = T.itensor3() #tgt = T.ivector() tgt = T.imatrix() src_mask = T.ivector() seg = segmentor_model(**configs) seg.apply(src , src_mask , tgt) cost = seg.cost params = seg.params params_regular = seg.L1 * 1e-6 + seg.L2 * 1e-6 grads = T.grad(cost + params_regular , params) updates = adadelta(params , grads) #train_fn = theano.function([src , src_mask , tgt] , [cost , seg.emb , seg.hidden_output , # seg.log_output , seg.src_mask , seg.tgt , seg.log] , updates=updates , on_unused_input='ignore') train_fn = theano.function([src , src_mask , tgt] , [cost] , updates=updates , on_unused_input='ignore') test_fn = theano.function([src , src_mask , tgt] , [cost , seg.log]) loadData = LoadData(**configs) train_x , train_mask , train_y = loadData.loadTrain() valid_x , valid_x_src , valid_x_length , valid_y = loadData.loadValid() #test_x , test_y = loadData.loadTest() #init some parameters max_epochs = configs['finish_after'] batch_size = configs['batch_size'] window_size = configs['window_size'] iters = 0 valid_cost_best = -1 test_cost_best = -1 epoch_best = -1 iters_best = -1 cnt = 0 batch_x = [] batch_mask = [] batch_y = [] R , P , F1 = evaluate(loadData , test_fn , window_size , valid_x , valid_x_src , valid_x_length , valid_y , "valid") print "R= " , R , " P= " , P , " F1= " , F1 for epoch in range(max_epochs): for i , (x , mask , y) in enumerate(zip(train_x , train_mask , train_y)): xx = contextwin(x , window_size) if cnt >= batch_size - 1: batch_x.append(xx) batch_mask.append(mask) batch_y.append(y) # batch_x : batch_size * sentence_size * window_size # batch_mask : batch_size # batch_y : batch_size * sentence_size # run_cost , k1 , k2 , k3 , k4 , k5 , k6 = train_fn(batch_x , batch_mask , batch_y) run_cost = train_fn(batch_x , batch_mask , batch_y) #print run_cost , k1.shape , k2.shape , k3.shape , k4.shape , k5.shape , k6 #print "epoch: " , epoch , " iters: " , iters , " cost: " , run_cost cnt = 0 batch_x = [] batch_mask = [] batch_y = [] else: batch_x.append(xx) batch_mask.append(mask) batch_y.append(y) cnt += 1 iters += 1 if iters % configs['save_freq'] == 0: R , P , F1 = evaluate(loadData , test_fn , window_size , valid_x , valid_x_src , valid_x_length , valid_y , "valid") print "epoch: " , epoch , "R= " , R , " P= " , P , " F1= " , F1 lm.save() if batch_x: run_cost = train_fn(batch_x , batch_mask , batch_y) print "epoch: " , epoch , " iters: " , iters , " cost: " , run_cost batch_x = [] batch_mask = [] batch_y = [] cnt = 0 R , P , F1 = evaluate(loadData , test_fn , window_size , valid_x , valid_x_src , valid_x_length , valid_y , "valid") print "epoch: " , epoch , "R= " , R , " P= " , P , " F1= " , F1
logger.info("Fold %i Accuracy: %.4f", i, model.score(X[valid_idx], y[valid_idx])) res[valid_idx, :] = model.predict_proba(X[valid_idx]) logger.info("Fold %i Log Loss: %.4f", i, log_loss(y[valid_idx], res[valid_idx])) i += 1 if short: break if short: return -log_loss(y[valid_idx], res[valid_idx]) yhat = np.argmax(res, axis=1) + 1 Y = np.array([int(i[-1]) for i in y]) logger.info("CV Accuracy: %.5f", accuracy_score(Y, yhat)) logger.info("CV Log Loss: %.4f", log_loss(y, res)) return res, -log_loss(y, res) _, y, _ = LoadData() del _ def OptSVC(C, gamma): model = SVC(C=C, gamma=gamma, probability=True) return ReportPerfCV(model, "text", y) def OptBTC(step_size=.5, max_iterations=100, row_subsample=.9, column_subsample=.9, max_depth=8): model = BoostedTreesClassifier(step_size=step_size, max_iterations=max_iterations,
def creepy_data_from_wind_to_local(self): for ii in range(len(self.user_stock_name_list)): self.path_is_exist(self.user_stock_name_list[ii]) data_base_path = sys.path[0] + "\\" + "data" + "\\" + "data_base" stock_fold_path = data_base_path + "\\" + self.user_stock_name_list[ ii] for data_type in self.data_type_list: data_path = stock_fold_path + "\\" + data_type latest_date = self.get_latest_date_in_fold(data_path) print latest_date temp_stock_name = [] temp_stock_name.append(self.user_stock_name_list[ii]) delta_day = ( datetime.now() - datetime(int(latest_date[0:4]), int(latest_date[4:6]), int(latest_date[6:8]))).days print latest_date, delta_day, self.user_stock_name_list[ii] pos = self.user_stock_name_list[ii].split(".")[1] print pos if data_type == "daily": stock_daily_data = LoadData.get_daily_stock_data( temp_stock_name, latest_date) for jj in range(len(stock_daily_data[0])): output_data_path = data_path + "\\" + stock_daily_data[ 0][jj][0] + ".txt" WriteToFile.write_to_file(output_data_path, stock_daily_data[0][jj]) if pos != "SZ" and pos != "SH": break if float(delta_day) > 3 * 365: delta_day = 1095 if data_type == "60min": print "aaa" stock_60_min_data = LoadData.get_intraday_stock_data( temp_stock_name, bar_size=60, delta_days=delta_day) date_60_min_index = self.get_day_sperate_index( stock_60_min_data) print stock_60_min_data print date_60_min_index for jj in range(len(date_60_min_index) - 1): file_path = data_path + "\\" + stock_60_min_data[0][ date_60_min_index[jj]][0][0:8] + ".txt" WriteToFile.write_list_to_file( file_path, stock_60_min_data[0] [date_60_min_index[jj]:date_60_min_index[jj + 1]]) elif data_type == "30min": stock_30_min_data = LoadData.get_intraday_stock_data( temp_stock_name, bar_size=30, delta_days=delta_day) date_30_min_index = self.get_day_sperate_index( stock_30_min_data) for jj in range(len(date_30_min_index) - 1): file_path = data_path + "\\" + stock_30_min_data[0][ date_30_min_index[jj]][0][0:8] + ".txt" WriteToFile.write_list_to_file( file_path, stock_30_min_data[0] [date_30_min_index[jj]:date_30_min_index[jj + 1]]) elif data_type == "15min": stock_15_min_data = LoadData.get_intraday_stock_data( temp_stock_name, bar_size=15, delta_days=delta_day) date_15_min_index = self.get_day_sperate_index( stock_15_min_data) for jj in range(len(date_15_min_index) - 1): file_path = data_path + "\\" + stock_15_min_data[0][ date_15_min_index[jj]][0][0:8] + ".txt" WriteToFile.write_list_to_file( file_path, stock_15_min_data[0] [date_15_min_index[jj]:date_15_min_index[jj + 1]]) elif data_type == "5min": stock_5_min_data = LoadData.get_intraday_stock_data( temp_stock_name, bar_size=5, delta_days=delta_day) date_5_min_index = self.get_day_sperate_index( stock_5_min_data) for jj in range(len(date_5_min_index) - 1): file_path = data_path + "\\" + stock_5_min_data[0][ date_5_min_index[jj]][0][0:8] + ".txt" WriteToFile.write_list_to_file( file_path, stock_5_min_data[0] [date_5_min_index[jj]:date_5_min_index[jj + 1]])
def creepy_data_from_wind_to_local(self): for ii in range(len(self.user_stock_name_list)): self.path_is_exist(self.user_stock_name_list[ii]) data_base_path = sys.path[0] + "\\" + "data" + "\\" + "data_base" stock_fold_path = data_base_path + "\\" + self.user_stock_name_list[ii] for data_type in self.data_type_list: data_path = stock_fold_path + "\\" + data_type latest_date = self.get_latest_date_in_fold(data_path) print latest_date temp_stock_name = [] temp_stock_name.append(self.user_stock_name_list[ii]) delta_day = ( datetime.now() - datetime(int(latest_date[0:4]), int(latest_date[4:6]), int(latest_date[6:8])) ).days print latest_date, delta_day, self.user_stock_name_list[ii] pos = self.user_stock_name_list[ii].split(".")[1] print pos if data_type == "daily": stock_daily_data = LoadData.get_daily_stock_data(temp_stock_name, latest_date) for jj in range(len(stock_daily_data[0])): output_data_path = data_path + "\\" + stock_daily_data[0][jj][0] + ".txt" WriteToFile.write_to_file(output_data_path, stock_daily_data[0][jj]) if pos != "SZ" and pos != "SH": break if float(delta_day) > 3 * 365: delta_day = 1095 if data_type == "60min": print "aaa" stock_60_min_data = LoadData.get_intraday_stock_data( temp_stock_name, bar_size=60, delta_days=delta_day ) date_60_min_index = self.get_day_sperate_index(stock_60_min_data) print stock_60_min_data print date_60_min_index for jj in range(len(date_60_min_index) - 1): file_path = data_path + "\\" + stock_60_min_data[0][date_60_min_index[jj]][0][0:8] + ".txt" WriteToFile.write_list_to_file( file_path, stock_60_min_data[0][date_60_min_index[jj] : date_60_min_index[jj + 1]] ) elif data_type == "30min": stock_30_min_data = LoadData.get_intraday_stock_data( temp_stock_name, bar_size=30, delta_days=delta_day ) date_30_min_index = self.get_day_sperate_index(stock_30_min_data) for jj in range(len(date_30_min_index) - 1): file_path = data_path + "\\" + stock_30_min_data[0][date_30_min_index[jj]][0][0:8] + ".txt" WriteToFile.write_list_to_file( file_path, stock_30_min_data[0][date_30_min_index[jj] : date_30_min_index[jj + 1]] ) elif data_type == "15min": stock_15_min_data = LoadData.get_intraday_stock_data( temp_stock_name, bar_size=15, delta_days=delta_day ) date_15_min_index = self.get_day_sperate_index(stock_15_min_data) for jj in range(len(date_15_min_index) - 1): file_path = data_path + "\\" + stock_15_min_data[0][date_15_min_index[jj]][0][0:8] + ".txt" WriteToFile.write_list_to_file( file_path, stock_15_min_data[0][date_15_min_index[jj] : date_15_min_index[jj + 1]] ) elif data_type == "5min": stock_5_min_data = LoadData.get_intraday_stock_data( temp_stock_name, bar_size=5, delta_days=delta_day ) date_5_min_index = self.get_day_sperate_index(stock_5_min_data) for jj in range(len(date_5_min_index) - 1): file_path = data_path + "\\" + stock_5_min_data[0][date_5_min_index[jj]][0][0:8] + ".txt" WriteToFile.write_list_to_file( file_path, stock_5_min_data[0][date_5_min_index[jj] : date_5_min_index[jj + 1]] )
def load_data(self): print('Loading Dataset...') self.x_right, self.x_left, self.y_train = LoadData().load()
# -*- coding: utf-8 -*- # File Name: main.py # Author: Changsheng Zhang # mail: [email protected] # Created Time: Tue Jul 7 10:09:08 2015 ######################################################################### import os import sys import strategy.test as test import data.LoadData as LoadData if __name__ == '__main__': b = LoadData.get_daily_stock_data(["600000.SH"]) print b[0][0]
# Global variables l_value = [4] thresholds = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9] split = [10, 20, 30, 40, 50, 60, 70, 80, 90] m = 0 train1 = [] train0 = [] data_vector = [] test1 = [] test0 = [] weights = [] weights_history = [] dev_data = [] temp = [] data = LoadData() def logistic_function(x, w): # sigmoid function return expit( np.dot(w, x[:-1]) ) # same as 1.0/(1 + np.exp(-np.dot(weights, x[:-1]))) without overflow warning # last element of x[] = category (or y) def train(train_total): # train global train0, train1, m, data_vector, weights, dev_data, temp if len(temp) == 0: data.createDictionary()
def run(self, bench_mark_list, short_flag=1, range_day=1): realtime_price_list, realtime_volume_list = LoadData.get_realtime_price_and_volume( bench_mark_list) print bench_mark_list print realtime_price_list print realtime_volume_list reminder_info_flag_list = [] is_send_email = False for ii in range(len(bench_mark_list)): if float(datetime.today().hour) >= 15: self.price_list[ii].pop() self.volume_list[ii].pop() print "volume", self.volume_list[ii][-1] old_action_len = [] for regression_day in self.regression_day: old_action_len_per_rangeday = [] self.offset = range_day + regression_day - 2 self.slope_price_list = PriceVolume.PriceVolume( self.price_list, range_day, regression_day) self.slope_volume_list = PriceVolume.PriceVolume( self.volume_list, range_day, regression_day) action_index_list, action_type_list, revenue_list = self.backtest( self.offset, short_flag) for ii in range(len(action_type_list)): old_action_len_per_rangeday.append(len(action_index_list[ii])) old_action_len.append(old_action_len_per_rangeday) for ii in range(len(bench_mark_list)): self.price_list[ii].append(realtime_price_list[ii]) self.volume_list[ii].append(realtime_volume_list[ii]) print "volume new", self.volume_list[ii][-1] for ii in range(len(self.regression_day)): temp_reminder_info_flag = [] regression_day = self.regression_day[ii] self.offset = range_day + regression_day - 2 self.slope_price_list = PriceVolume.PriceVolume( self.price_list, range_day, regression_day) self.slope_volume_list = PriceVolume.PriceVolume( self.volume_list, range_day, regression_day) action_index_list, action_type_list, revenue_list = self.backtest( self.offset, short_flag) for jj in range(len(action_index_list)): print len(action_index_list[jj]), old_action_len[ii][jj] if len(action_index_list[jj]) - old_action_len[ii][jj] == 1: temp_reminder_info_flag.append(action_type_list[jj][-1]) is_send_email = True else: temp_reminder_info_flag.append("x") reminder_info_flag_list.append(temp_reminder_info_flag) print reminder_info_flag_list if is_send_email == True: msg = '''<html> <tr>Trade reminder from Price & Volume Model</tr> <table width="300" border="1" bordercolor="black" cellspacing="1">''' for ii in range(len(reminder_info_flag_list)): if ii == 0: msg = msg + '''<tr><td> ''' + ''' </td>''' for jj in range(len(reminder_info_flag_list[ii])): msg = msg + ''' <td> ''' + str( bench_mark_list[jj]) + "</td>" msg = msg + ''' </tr>\n''' msg = msg + '''<tr><td>''' + str( self.regression_day[ii]) + ''' day </td>''' for jj in range(len(reminder_info_flag_list[ii])): if reminder_info_flag_list[ii][jj] == "b": msg = msg + '''<td> long </td>''' elif reminder_info_flag_list[ii][jj] == "s": if short_flag == 1: msg = msg + '''<td> short </td> ''' else: msg = msg + '''<td> close previous long postion </td>''' else: msg = msg + '''<td> </td> ''' msg = msg + '''</tr> \n''' msg = msg + '''</table></html> ''' send_email = SendEmail.Send_Email( "Trade reminder from Price & Volume Model", msg) print send_email.isSend