def insert_table(base_time, currency, con, table_type): length = 20 sma20 = get_sma(currency, base_time, table_type, length, con) length = 40 sma40 = get_sma(currency, base_time, table_type, length, con) length = 80 sma80 = get_sma(currency, base_time, table_type, length, con) length = 21 sigma = 2 data = get_original_data(base_time, currency, con, table_type, length) dataset_sigma2 = getBollingerDataSet(data, length, sigma) upper_sigma2 = dataset_sigma2["upper_sigmas"][-1] lower_sigma2 = dataset_sigma2["lower_sigmas"][-1] sigma = 3 dataset_sigma3 = getBollingerDataSet(data, length, sigma) upper_sigma3 = dataset_sigma3["upper_sigmas"][-1] lower_sigma3 = dataset_sigma3["lower_sigmas"][-1] sql = "select insert_time from %s_%s_TABLE where insert_time < \'%s\' order by insert_time desc limit 1" % ( currency, table_type, base_time) response = con.select_sql(sql) insert_time = response[0][0] sql = "insert into INDICATOR_TABLE(table_type, currency, sma20, sma40, sma80, upper_sigma2, lower_sigma2, upper_sigma3, lower_sigma3, insert_time) values(\'%s\', \'%s\', %s, %s, %s, %s, %s, %s, %s, \'%s\')" % ( table_type, currency, sma20, sma40, sma80, upper_sigma2, lower_sigma2, upper_sigma3, lower_sigma3, insert_time) con.insert_sql(sql)
def getBollingerWrapper(base_time, instrument, table_type, window_size, connector, sigma_valiable, length): sql = "select end_price from %s_%s_TABLE where insert_time < \'%s\' order by insert_time DESC limit %s" % ( instrument, table_type, base_time, (window_size + length)) response = connector.select_sql(sql) price_list = [] for res in response: price_list.append(res[0]) price_list.reverse() data_set = getBollingerDataSet(price_list, window_size=window_size, sigma_valiable=sigma_valiable) return data_set
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 getBollingerDataset(ask_price_list, bid_price_list): window_size = 28 # candle_width = 600 candle_width = 1 sigma_valiable = 2 data_set2 = getBollingerDataSet(ask_price_list, bid_price_list, window_size, sigma_valiable, candle_width) print(data_set2) upper_sigmas = data_set2["upper_sigmas"] lower_sigmas = data_set2["lower_sigmas"] base_lines = data_set2["base_lines"] for i in range(0, len(upper_sigmas)): if math.isnan(upper_sigmas[i]): upper_sigmas[i] = None lower_sigmas[i] = None base_lines[i] = None return upper_sigmas, lower_sigmas, base_lines
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 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 = "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" window_size = 28 candle_width = 3600 sigma_valiable = 2 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())