예제 #1
0
    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])
예제 #2
0
 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)
예제 #3
0
    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)
예제 #4
0
    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)
예제 #5
0
    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])
예제 #6
0
    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
예제 #7
0
    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]
예제 #10
0
    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]
예제 #11
0
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()
예제 #12
0
    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())