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)
Beispiel #4
0
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
Beispiel #5
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())
Beispiel #6
0
    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())