def setReverse1hIndicator(self, base_time): ### get 1h dataset target_time = base_time - timedelta(hours=1) dataset = getBollingerWrapper(target_time, self.instrument, table_type="1h", window_size=28, connector=self.mysql_connector, sigma_valiable=3, length=0) self.upper_sigma_1h3 = dataset["upper_sigmas"][-1] self.lower_sigma_1h3 = dataset["lower_sigmas"][-1] dataset = getBollingerWrapper(target_time, self.instrument, table_type="1h", window_size=100, connector=self.mysql_connector, sigma_valiable=2, length=0) self.sma1h100 = dataset["base_lines"][-1] dataset = getBollingerWrapper(target_time, self.instrument, table_type="1h", window_size=20, connector=self.mysql_connector, sigma_valiable=2, length=1) self.sma1h20 = dataset["base_lines"][-1] self.sma1h20_before = dataset["base_lines"][-2] self.sma1h20_slope = getSlope([self.sma1h20_before, self.sma1h20]) dataset = getBollingerWrapper(target_time, self.instrument, table_type="1h", window_size=40, connector=self.mysql_connector, sigma_valiable=2, length=1) self.sma1h40 = dataset["base_lines"][-1] self.sma1h40_before = dataset["base_lines"][-2] self.sma1h40_slope = getSlope([self.sma1h40_before, self.sma1h40]) dataset = getBollingerWrapper(target_time, self.instrument, table_type="1h", window_size=80, connector=self.mysql_connector, sigma_valiable=2, length=1) self.sma1h80 = dataset["base_lines"][-1] self.sma1h80_before = dataset["base_lines"][-2] self.sma1h80_slope = getSlope([self.sma1h80_before, self.sma1h80])
def setReverse1hIndicator(self, base_time): try: ### get 1h dataset target_time = base_time - timedelta(hours=1) dataset = getBollingerWrapper(target_time, self.instrument, table_type="1h", window_size=21, connector=self.mysql_connector, sigma_valiable=1, length=0) self.upper_sigma_1h1 = dataset["upper_sigmas"][-1] self.lower_sigma_1h1 = dataset["lower_sigmas"][-1] dataset = getBollingerWrapper(target_time, self.instrument, table_type="1h", window_size=21, connector=self.mysql_connector, sigma_valiable=2.5, length=0) self.upper_sigma_1h25 = dataset["upper_sigmas"][-1] self.lower_sigma_1h25 = dataset["lower_sigmas"][-1] dataset = getBollingerWrapper(target_time, self.instrument, table_type="1h", window_size=21, connector=self.mysql_connector, sigma_valiable=3, length=0) self.upper_sigma_1h3 = dataset["upper_sigmas"][-1] self.lower_sigma_1h3 = dataset["lower_sigmas"][-1] dataset = getBollingerWrapper(target_time, self.instrument, table_type="1h", window_size=100, connector=self.mysql_connector, sigma_valiable=2, length=0) self.sma1h100 = dataset["base_lines"][-1] dataset = getBollingerWrapper(target_time, self.instrument, table_type="1h", window_size=20, connector=self.mysql_connector, sigma_valiable=2, length=10) self.sma1h20 = dataset["base_lines"][-1] self.sma1h20_before = dataset["base_lines"][-10] self.sma1h20_slope = getSlope([self.sma1h20_before, self.sma1h20]) dataset = getBollingerWrapper(target_time, self.instrument, table_type="1h", window_size=40, connector=self.mysql_connector, sigma_valiable=2, length=10) self.sma1h40 = dataset["base_lines"][-1] self.sma1h40_before = dataset["base_lines"][-10] self.sma1h40_slope = getSlope([self.sma1h40_before, self.sma1h40]) dataset = getBollingerWrapper(target_time, self.instrument, table_type="1h", window_size=80, connector=self.mysql_connector, sigma_valiable=2, length=10) self.sma1h80 = dataset["base_lines"][-1] self.sma1h80_before = dataset["base_lines"][-10] self.sma1h80_slope = getSlope([self.sma1h80_before, self.sma1h80]) start_time = self.getStartTime(base_time) sql = "select max_price, min_price from %s_%s_TABLE where insert_time > \'%s\' and insert_time < \'%s\'" % (self.instrument, "1h", start_time, base_time) response = self.mysql_connector.select_sql(sql) tmp_max = [] tmp_min = [] for res in response: tmp_max.append(res[0]) tmp_min.append(res[1]) self.thisday_max = max(tmp_max) self.thisday_min = min(tmp_min) except Exception as e: message = traceback.format_exc() self.debug_logger.info("# %s" % base_time) self.debug_logger.info("# %s" % message)
def setReverse5mIndicator(self, base_time): try: ### get 5m dataset target_time = base_time - timedelta(minutes=5) dataset = getBollingerWrapper(target_time, self.instrument, table_type="5m", window_size=21, connector=self.mysql_connector, sigma_valiable=2.5, length=0) self.upper_sigma_5m25 = dataset["upper_sigmas"][-1] self.lower_sigma_5m25 = dataset["lower_sigmas"][-1] dataset = getBollingerWrapper(target_time, self.instrument, table_type="5m", window_size=20, connector=self.mysql_connector, sigma_valiable=2, length=1) self.sma5m20 = dataset["base_lines"][-1] self.sma5m20_before = dataset["base_lines"][-2] dataset = getBollingerWrapper(target_time, self.instrument, table_type="5m", window_size=40, connector=self.mysql_connector, sigma_valiable=2, length=1) self.sma5m40 = dataset["base_lines"][-1] self.sma5m40_before = dataset["base_lines"][-2] dataset = getBollingerWrapper(target_time, self.instrument, table_type="5m", window_size=80, connector=self.mysql_connector, sigma_valiable=2, length=1) self.sma5m80 = dataset["base_lines"][-1] self.sma5m80_before = dataset["base_lines"][-2] self.sma5m20_slope = getSlope([self.sma5m20_before, self.sma5m20]) self.sma5m40_slope = getSlope([self.sma5m40_before, self.sma5m40]) self.sma5m80_slope = getSlope([self.sma5m80_before, self.sma5m80]) except Exception as e: message = traceback.format_exc() self.debug_logger.info("# %s" % base_time) self.debug_logger.info("# %s" % message)
def setExpantionIndicator(self, base_time): upper_list, lower_list, base_list = getBollingerWrapper( base_time, self.instrument, ind_type="bollinger5m3", span=1, connector=self.mysql_connector) self.upper_sigma_5m3 = upper_list[0] self.lower_sigma_5m3 = lower_list[0] self.base_line_5m3 = base_list[0] upper_list, lower_list, base_list = getBollingerWrapper( base_time, self.instrument, ind_type="bollinger1h3", span=1, connector=self.mysql_connector) self.upper_sigma_1h3 = upper_list[0] self.lower_sigma_1h3 = lower_list[0] self.base_line_1h3 = base_list[0] upper_list, lower_list, base_list = getBollingerWrapper( base_time, self.instrument, ind_type="bollinger1h3", span=5, connector=self.mysql_connector) self.slope = getSlope(base_list)
def setReverse5mIndicator(self, base_time): ### get 5m dataset target_time = base_time - timedelta(minutes=5) dataset = getBollingerWrapper(target_time, self.instrument, table_type="5m", window_size=28, connector=self.mysql_connector, sigma_valiable=2.5, length=0) self.upper_sigma_5m25 = dataset["upper_sigmas"][-1] self.lower_sigma_5m25 = dataset["lower_sigmas"][-1] dataset = getBollingerWrapper(target_time, self.instrument, table_type="5m", window_size=20, connector=self.mysql_connector, sigma_valiable=2, length=5) self.sma5m20 = dataset["base_lines"][-1] self.sma5m20_before = dataset["base_lines"][-2] dataset = getBollingerWrapper(target_time, self.instrument, table_type="5m", window_size=40, connector=self.mysql_connector, sigma_valiable=2, length=5) self.sma5m40 = dataset["base_lines"][-1] self.sma5m40_before = dataset["base_lines"][-2] dataset = getBollingerWrapper(target_time, self.instrument, table_type="5m", window_size=80, connector=self.mysql_connector, sigma_valiable=2, length=5) self.sma5m80 = dataset["base_lines"][-1] self.sma5m80_before = dataset["base_lines"][-2] self.sma5m20_slope = getSlope([self.sma5m20_before, self.sma5m20]) self.sma5m40_slope = getSlope([self.sma5m40_before, self.sma5m40]) self.sma5m80_slope = getSlope([self.sma5m80_before, self.sma5m80])
def getDailySlope(self, instrument, target_time, span, connector): table_type = "day" sql = "select end_price from %s_%s_TABLE where insert_time < \'%s\' order by insert_time desc limit %s" % (instrument, table_type, target_time, span) response = connector.select_sql(sql) price_list = [] for res in response: price_list.append(res[0]) price_list.reverse() slope = getSlope(price_list) return slope
def getDailySlope(self, instrument, base_time, span, connector): price_list = [] target_time = base_time.strftime("%Y-%m-%d 07:00:00") sql = "select ask_price, bid_price from %s_TABLE where insert_time < \'%s\' and insert_time like \'%% 06:59:59\' order by insert_time desc limit %s" % ( instrument, target_time, span) response = connector.select_sql(sql) for res in response: price = (res[0] + res[1]) / 2 price_list.append(price) price_list.reverse() slope = getSlope(price_list) return slope
def setIndicator(self, base_time): ask_price_list = self.indicator_object.getAskPriceList() bid_price_list = self.indicator_object.getBidPriceList() # 1時間置きに実行 polling_time = 3600 cmp_object = self.indicator_object.getHighLowPriceDataset() if self.calculatePollingTime(base_time, cmp_object, polling_time): # 前日高値、安値の計算 high_price, low_price = self.getHiLowPriceBeforeDay(base_time) self.indicator_object.setHighLowPriceDataset( high_price, low_price, base_time) wma_length = 200 candle_width = 3600 # 移動平均の取得(WMA200 1h) ewma200_1h = getEWMA(ask_price_list, bid_price_list, wma_length, candle_width) self.indicator_object.setEwma200_1hDataset(ewma200_1h, base_time) # 2.5シグマボリンジャーバンドを取得する window_size = 28 candle_width = 300 sigma_valiable = 2.5 data_set = getBollingerDataSet(ask_price_list, bid_price_list, window_size, sigma_valiable, candle_width) self.indicator_object.setBollinger2p5sigmaDataset(data_set, base_time) # 移動平均の取得(WMA50 5m) wma_length = 50 candle_width = 300 ewma50 = getEWMA(ask_price_list, bid_price_list, wma_length, candle_width) # 短期トレンドの取得 slope_length = (10 * candle_width) * -1 slope_list = ewma50[slope_length:] slope = getSlope(slope_list) self.indicator_object.setEwma50_5mDataset(ewma50, slope, base_time) # 移動平均の取得(WMA200 5m) wma_length = 200 candle_width = 300 ewma200 = getEWMA(ask_price_list, bid_price_list, wma_length, candle_width) self.indicator_object.setEwma200_5mDataset(ewma200, base_time)
def setReverseIndicator(self, base_time): target_time = base_time - timedelta(minutes=1) ### get 1m dataset # dataset = getBollingerWrapper(target_time, self.instrument, table_type="1m", window_size=28, connector=self.mysql_connector, sigma_valiable=2, length=0) # self.upper_sigma_1m2 = dataset["upper_sigmas"][-1] # self.lower_sigma_1m2 = dataset["lower_sigmas"][-1] # self.base_line_1m2 = dataset["base_lines"][-1] dataset = getBollingerWrapper(target_time, self.instrument, table_type="1m", window_size=28, connector=self.mysql_connector, sigma_valiable=2.5, length=0) self.upper_sigma_1m25 = dataset["upper_sigmas"][-1] self.lower_sigma_1m25 = dataset["lower_sigmas"][-1] self.base_line_1m25 = dataset["base_lines"][-1] # sql = "select start_price, end_price, max_price, min_price from %s_%s_TABLE where insert_time < \'%s\' order by insert_time desc limit 1" % (self.instrument, "1m", target_time) # response = self.mysql_connector.select_sql(sql) # self.start_price_1m = response[0][0] # self.end_price_1m = response[0][1] # self.max_price_1m = response[0][2] # self.min_price_1m = response[0][3] # dataset = getBollingerWrapper(target_time, self.instrument, table_type="1m", window_size=28, connector=self.mysql_connector, sigma_valiable=2, length=9) # base_line_1m2_list = dataset["base_lines"][-10:] # self.slope_1m = getSlope(base_line_1m2_list) target_time = base_time width = 60 * 40 sql = "select ask_price, bid_price from %s_TABLE where insert_time < \'%s\' order by insert_time desc limit %s" % ( self.instrument, target_time, width) response = self.mysql_connector.select_sql(sql) tmp = [] for res in response: tmp.append((res[0] + res[1]) / 2) tmp.reverse() ewma40_rawdata = tmp[-1 * 60 * 40:] self.ewma40_1mvalue = getEWMA(ewma40_rawdata, len(ewma40_rawdata))[-1] ### get 5m dataset target_time = base_time - timedelta(minutes=5) # width = 20 # sql = "select end_price from %s_%s_TABLE where insert_time < \'%s\' order by insert_time desc limit %s" % (self.instrument, "5m", target_time, width) # response = self.mysql_connector.select_sql(sql) # tmp = [] # for res in response: # tmp.append(res[0]) # tmp.reverse() # self.ewma20_5mvalue = getEWMA(tmp, len(tmp))[-1] # # dataset = getBollingerWrapper(target_time, self.instrument, table_type="5m", window_size=28, connector=self.mysql_connector, sigma_valiable=2, length=0) # self.base_line_5m2 = dataset["base_lines"][-1] # self.upper_sigma_5m2 = dataset["upper_sigmas"][-1] # self.lower_sigma_5m2 = dataset["lower_sigmas"][-1] dataset = getBollingerWrapper(target_time, self.instrument, table_type="5m", window_size=20, connector=self.mysql_connector, sigma_valiable=2, length=5) self.sma5m20 = dataset["base_lines"][-1] self.sma5m20_before = dataset["base_lines"][-5] dataset = getBollingerWrapper(target_time, self.instrument, table_type="5m", window_size=40, connector=self.mysql_connector, sigma_valiable=2, length=5) self.sma5m40 = dataset["base_lines"][-1] self.sma5m40_before = dataset["base_lines"][-5] dataset = getBollingerWrapper(target_time, self.instrument, table_type="5m", window_size=80, connector=self.mysql_connector, sigma_valiable=2, length=5) self.sma5m80 = dataset["base_lines"][-1] self.sma5m80_before = dataset["base_lines"][-5] self.sma5m20_slope = getSlope([self.sma5m20_before, self.sma5m20]) self.sma5m40_slope = getSlope([self.sma5m40_before, self.sma5m40]) self.sma5m80_slope = getSlope([self.sma5m80_before, self.sma5m80]) target_time = base_time - timedelta(hours=1) dataset = getBollingerWrapper(target_time, self.instrument, table_type="1h", window_size=80, connector=self.mysql_connector, sigma_valiable=2, length=0) self.sma1h80 = dataset["base_lines"][-1]
def setReverseIndicator(self, base_time): target_time = base_time - timedelta(minutes=1) ### get 1m dataset dataset = getBollingerWrapper(target_time, self.instrument, table_type="1m", window_size=28, connector=self.mysql_connector, sigma_valiable=2, length=0) self.upper_sigma_1m2 = dataset["upper_sigmas"][-1] self.lower_sigma_1m2 = dataset["lower_sigmas"][-1] self.base_line_1m2 = dataset["base_lines"][-1] sql = "select start_price, end_price, max_price, min_price from %s_%s_TABLE where insert_time < \'%s\' order by insert_time desc limit 2" % (self.instrument, "1m", target_time) response = self.mysql_connector.select_sql(sql) self.start_price_1m = response[0][0] self.end_price_1m = response[0][1] self.max_price_1m = response[0][2] self.min_price_1m = response[0][3] dataset = getBollingerWrapper(target_time, self.instrument, table_type="1m", window_size=28, connector=self.mysql_connector, sigma_valiable=2, length=9) base_line_1m2_list = dataset["base_lines"][-10:] self.slope_1m = getSlope(base_line_1m2_list) target_time = base_time width = 60*30 sql = "select ask_price, bid_price from %s_TABLE where insert_time < \'%s\' order by insert_time desc limit %s" % (self.instrument, target_time, width) response = self.mysql_connector.select_sql(sql) tmp = [] for res in response: tmp.append((res[0]+res[1])/2) tmp.reverse() ewma30_rawdata = tmp[-1*width:] self.ewma30_1mvalue = getEWMA(ewma30_rawdata, len(ewma30_rawdata))[-1] width = 60*50 sql = "select ask_price, bid_price from %s_TABLE where insert_time < \'%s\' order by insert_time desc limit %s" % (self.instrument, target_time, width) response = self.mysql_connector.select_sql(sql) tmp = [] for res in response: tmp.append((res[0]+res[1])/2) tmp.reverse() ewma50_rawdata = tmp[-1*width:] self.ewma50_1mvalue = getEWMA(ewma50_rawdata, len(ewma50_rawdata))[-1] ### get 5m dataset target_time = base_time - timedelta(minutes=5) sql = "select start_price, end_price, max_price, min_price from %s_%s_TABLE where insert_time < \'%s\' order by insert_time desc limit 2" % (self.instrument, "5m", target_time) response = self.mysql_connector.select_sql(sql) self.start_price_5m_list = [response[1][0], response[0][0]] self.end_price_5m_list = [response[1][1], response[0][1]] self.max_price_5m_list = [response[1][2], response[0][2]] self.min_price_5m_list = [response[1][3], response[0][3]] width = 20 sql = "select end_price from %s_%s_TABLE where insert_time < \'%s\' order by insert_time desc limit %s" % (self.instrument, "5m", target_time, width) response = self.mysql_connector.select_sql(sql) tmp = [] for res in response: tmp.append(res[0]) tmp.reverse() self.ewma20_5mvalue = getEWMA(tmp, len(tmp))[-1] dataset = getBollingerWrapper(target_time, self.instrument, table_type="5m", window_size=28, connector=self.mysql_connector, sigma_valiable=2, length=0) self.base_line_5m2 = dataset["base_lines"][-1] self.upper_sigma_5m2 = dataset["upper_sigmas"][-1] self.lower_sigma_5m2 = dataset["lower_sigmas"][-1]
mysqlConnector = MysqlConnector() output_file = open("regression_test.txt", "w") while True: if decideMarket(target_time): trend_time_width = 5 instrument = "GBP_JPY" sql = "select ask_price from %s_TABLE where insert_time <= \'%s\' and insert_time like \'%%59:59\' order by insert_time desc limit 10" % ( instrument, target_time) response = mysqlConnector.select_sql(sql) base_line_list = [] for res in response: base_line_list.append(res[0]) base_line_list.reverse() slope = getSlope(base_line_list) output_file.write("time = %s, slope = %s\n" % (target_time, slope)) else: pass now = datetime.now() if target_time > now: break target_time = target_time + timedelta(minutes=60) output_file.close()
def set1mIndicator(self, base_time): ask_price_list = self.indicator_object.getAskPriceList() bid_price_list = self.indicator_object.getBidPriceList() try: logging.info("set5mIndicator base_time = %s" % base_time) # 1シグマボリンジャーバンドを取得する window_size = 28 candle_width = 60 sigma_valiable = 1 data_set = getBollingerDataSet(ask_price_list, bid_price_list, window_size, sigma_valiable, candle_width) # instrument, type, upper_sigma, lower_sigma, base_line, insert_time ind_type = "bollinger1m1" sql = "insert into INDICATOR_TABLE(instrument, type, upper_sigma, lower_sigma, base_line, insert_time) values(\'%s\', \'%s\', %s, %s, %s, \'%s\')" % ( self.instrument, ind_type, data_set["upper_sigmas"][-1], data_set["lower_sigmas"][-1], data_set["base_lines"][-1], base_time) self.mysql_connector.insert_sql(sql) logging.info(sql) # 2シグマボリンジャーバンドを取得する window_size = 28 candle_width = 60 sigma_valiable = 2 data_set = getBollingerDataSet(ask_price_list, bid_price_list, window_size, sigma_valiable, candle_width) # instrument, type, upper_sigma, lower_sigma, base_line, insert_time ind_type = "bollinger1m2" sql = "insert into INDICATOR_TABLE(instrument, type, upper_sigma, lower_sigma, base_line, insert_time) values(\'%s\', \'%s\', %s, %s, %s, \'%s\')" % ( self.instrument, ind_type, data_set["upper_sigmas"][-1], data_set["lower_sigmas"][-1], data_set["base_lines"][-1], base_time) self.mysql_connector.insert_sql(sql) logging.info(sql) # 2.5シグマボリンジャーバンドを取得する window_size = 28 candle_width = 60 sigma_valiable = 2.5 data_set = getBollingerDataSet(ask_price_list, bid_price_list, window_size, sigma_valiable, candle_width) # instrument, type, upper_sigma, lower_sigma, base_line, insert_time ind_type = "bollinger1m2.5" sql = "insert into INDICATOR_TABLE(instrument, type, upper_sigma, lower_sigma, base_line, insert_time) values(\'%s\', \'%s\', %s, %s, %s, \'%s\')" % ( self.instrument, ind_type, data_set["upper_sigmas"][-1], data_set["lower_sigmas"][-1], data_set["base_lines"][-1], base_time) self.mysql_connector.insert_sql(sql) logging.info(sql) # 3シグマボリンジャーバンドを取得する window_size = 28 candle_width = 60 sigma_valiable = 3 data_set = getBollingerDataSet(ask_price_list, bid_price_list, window_size, sigma_valiable, candle_width) # instrument, type, upper_sigma, lower_sigma, base_line, insert_time ind_type = "bollinger1m3" sql = "insert into INDICATOR_TABLE(instrument, type, upper_sigma, lower_sigma, base_line, insert_time) values(\'%s\', \'%s\', %s, %s, %s, \'%s\')" % ( self.instrument, ind_type, data_set["upper_sigmas"][-1], data_set["lower_sigmas"][-1], data_set["base_lines"][-1], base_time) self.mysql_connector.insert_sql(sql) logging.info(sql) # 移動平均の取得(WMA50 5m) wma_length = 50 candle_width = 60 ewma50 = getEWMA(ask_price_list, bid_price_list, wma_length, candle_width) # 短期トレンドの取得 slope_length = (10 * candle_width) * -1 slope_list = ewma50[slope_length:] slope = getSlope(slope_list) # instrument, type, ewma_value, insert_time ind_type = "ewma1m50" sql = "insert into INDICATOR_TABLE(instrument, type, ewma_value, slope, insert_time) values(\'%s\', \'%s\', %s, %s, \'%s\')" % ( self.instrument, ind_type, ewma50[-1], slope, base_time) self.mysql_connector.insert_sql(sql) logging.info(sql) # 移動平均の取得(WMA200 5m) wma_length = 200 candle_width = 60 ewma200 = getEWMA(ask_price_list, bid_price_list, wma_length, candle_width) # instrument, type, ewma_value, insert_time ind_type = "ewma1m200" sql = "insert into INDICATOR_TABLE(instrument, type, ewma_value, insert_time) values(\'%s\', \'%s\', %s, \'%s\')" % ( self.instrument, ind_type, ewma200[-1], base_time) self.mysql_connector.insert_sql(sql) logging.info(sql) except Exception as e: logging.info(traceback.format_exc())
def setReverseIndicator(self, base_time): ### get 5m dataset target_time = base_time - timedelta(minutes=5) dataset = getBollingerWrapper(target_time, self.instrument, table_type="5m", window_size=28, connector=self.mysql_connector, sigma_valiable=2.5, length=0) self.upper_sigma_5m25 = dataset["upper_sigmas"][-1] self.lower_sigma_5m25 = dataset["lower_sigmas"][-1] dataset = getBollingerWrapper(target_time, self.instrument, table_type="5m", window_size=20, connector=self.mysql_connector, sigma_valiable=2, length=5) self.sma5m20 = dataset["base_lines"][-1] self.sma5m20_before = dataset["base_lines"][-2] dataset = getBollingerWrapper(target_time, self.instrument, table_type="5m", window_size=40, connector=self.mysql_connector, sigma_valiable=2, length=5) self.sma5m40 = dataset["base_lines"][-1] self.sma5m40_before = dataset["base_lines"][-2] dataset = getBollingerWrapper(target_time, self.instrument, table_type="5m", window_size=80, connector=self.mysql_connector, sigma_valiable=2, length=5) self.sma5m80 = dataset["base_lines"][-1] self.sma5m80_before = dataset["base_lines"][-2] self.sma5m20_slope = getSlope([self.sma5m20_before, self.sma5m20]) self.sma5m40_slope = getSlope([self.sma5m40_before, self.sma5m40]) self.sma5m80_slope = getSlope([self.sma5m80_before, self.sma5m80]) ### get 1h dataset target_time = base_time - timedelta(hours=1) dataset = getBollingerWrapper(target_time, self.instrument, table_type="1h", window_size=100, connector=self.mysql_connector, sigma_valiable=2, length=0) self.sma1h100 = dataset["base_lines"][-1] self.upper_sigma_1h2 = dataset["upper_sigmas"][-1] self.lower_sigma_1h2 = dataset["lower_sigmas"][-1] dataset = getBollingerWrapper(target_time, self.instrument, table_type="1h", window_size=20, connector=self.mysql_connector, sigma_valiable=2, length=1) self.sma1h20 = dataset["base_lines"][-1] self.sma1h20_before = dataset["base_lines"][-2] self.sma1h20_slope = getSlope([self.sma1h20_before, self.sma1h20]) dataset = getBollingerWrapper(target_time, self.instrument, table_type="1h", window_size=40, connector=self.mysql_connector, sigma_valiable=2, length=1) self.sma1h40 = dataset["base_lines"][-1] self.sma1h40_before = dataset["base_lines"][-2] self.sma1h40_slope = getSlope([self.sma1h40_before, self.sma1h40]) dataset = getBollingerWrapper(target_time, self.instrument, table_type="1h", window_size=80, connector=self.mysql_connector, sigma_valiable=2, length=1) self.sma1h80 = dataset["base_lines"][-1] self.sma1h80_before = dataset["base_lines"][-2] self.sma1h80_slope = getSlope([self.sma1h80_before, self.sma1h80]) ### get daily dataset target_time = base_time - timedelta(days=1) sql = "select max_price, min_price, start_price, end_price from %s_%s_TABLE where insert_time < \'%s\' order by insert_time desc limit 1" % ( self.instrument, "day", target_time) response = self.mysql_connector.select_sql(sql) self.max_price_1d = response[0][0] self.min_price_1d = response[0][1] self.start_price_1d = response[0][2] self.end_price_1d = response[0][3] dataset = getBollingerWrapper(target_time, self.instrument, table_type="day", window_size=28, connector=self.mysql_connector, sigma_valiable=2, length=0) self.upper_sigma_1d2 = dataset["upper_sigmas"][-1] self.lower_sigma_1d2 = dataset["lower_sigmas"][-1] dataset = getBollingerWrapper(target_time, self.instrument, table_type="day", window_size=20, connector=self.mysql_connector, sigma_valiable=2, length=0) self.sma20_1d = dataset["base_lines"][-1]
def set1hIndicator(self, base_time): logging.info("set1hIndicator base_time = %s" % base_time) ask_price_list = self.indicator_object.getAskPriceList() bid_price_list = self.indicator_object.getBidPriceList() try: sql = "select insert_time from INDICATOR_TABLE where insert_time <= \'%s\' and type = \'bollinger1h3\' order by insert_time DESC limit 1" % base_time response = self.mysql_connector.select_sql(sql) polling_time = 3600 if self.calculatePollingTime(base_time, response, polling_time): # 1時間置きに実行 ind_type = "highlow" # 前日高値、安値の計算 if decideMarket(base_time - timedelta(hours=2)): high_price, low_price = self.getHiLowPrice(base_time) # instrument, type, high_price, low_price, insert_time sql = "insert into INDICATOR_TABLE(instrument, type, high_price, low_price, insert_time) values(\'%s\', \'%s\', %s, %s, \'%s\')" % ( self.instrument, ind_type, high_price, low_price, base_time) self.mysql_connector.insert_sql(sql) logging.info(sql) ind_type = "ewma1h200" wma_length = 200 candle_width = 3600 # 移動平均の取得(WMA200 1h) ewma200_1h = getEWMA(ask_price_list, bid_price_list, wma_length, candle_width) # instrument, type, ewma_value, insert_time sql = "insert into INDICATOR_TABLE(instrument, type, ewma_value, insert_time) values(\'%s\', \'%s\', %s, \'%s\')" % ( self.instrument, ind_type, ewma200_1h[-1], base_time) self.mysql_connector.insert_sql(sql) logging.info(sql) ind_type = "ewma1h50" wma_length = 50 candle_width = 3600 # 移動平均の取得(WMA50 1h) ewma50_1h = getEWMA(ask_price_list, bid_price_list, wma_length, candle_width) # 短期トレンドの取得 slope_length = (5 * candle_width) * -1 slope_list = ewma50_1h[slope_length:] slope = getSlope(slope_list) # instrument, type, ewma_value, insert_time sql = "insert into INDICATOR_TABLE(instrument, type, ewma_value, insert_time, slope) values(\'%s\', \'%s\', %s, \'%s\', %s)" % ( self.instrument, ind_type, ewma50_1h[-1], base_time, slope) self.mysql_connector.insert_sql(sql) logging.info(sql) ind_type = "bollinger1h1" window_size = 28 candle_width = 3600 sigma_valiable = 1 data_set = getBollingerDataSet(ask_price_list, bid_price_list, window_size, sigma_valiable, candle_width) sql = "insert into INDICATOR_TABLE(instrument, type, upper_sigma, lower_sigma, base_line, insert_time) values(\'%s\', \'%s\', %s, %s, %s, \'%s\')" % ( self.instrument, ind_type, data_set["upper_sigmas"][-1], data_set["lower_sigmas"][-1], data_set["base_lines"][-1], base_time) self.mysql_connector.insert_sql(sql) logging.info(sql) ind_type = "bollinger1h2.5" window_size = 28 candle_width = 3600 sigma_valiable = 2.5 data_set = getBollingerDataSet(ask_price_list, bid_price_list, window_size, sigma_valiable, candle_width) sql = "insert into INDICATOR_TABLE(instrument, type, upper_sigma, lower_sigma, base_line, insert_time) values(\'%s\', \'%s\', %s, %s, %s, \'%s\')" % ( self.instrument, ind_type, data_set["upper_sigmas"][-1], data_set["lower_sigmas"][-1], data_set["base_lines"][-1], base_time) self.mysql_connector.insert_sql(sql) logging.info(sql) ind_type = "bollinger1h3" window_size = 28 candle_width = 3600 sigma_valiable = 3 data_set = getBollingerDataSet(ask_price_list, bid_price_list, window_size, sigma_valiable, candle_width) sql = "insert into INDICATOR_TABLE(instrument, type, upper_sigma, lower_sigma, base_line, insert_time) values(\'%s\', \'%s\', %s, %s, %s, \'%s\')" % ( self.instrument, ind_type, data_set["upper_sigmas"][-1], data_set["lower_sigmas"][-1], data_set["base_lines"][-1], base_time) self.mysql_connector.insert_sql(sql) logging.info(sql) except Exception as e: logging.info(traceback.format_exc())