Ejemplo n.º 1
0
def main(coin_name: str, mm1_name: str, mm2_name: str, start_time: str,
         end_time: str, slicing_interval: int):
    Global.configure_default_root_logging(should_log_to_file=False,
                                          log_level=logging.INFO)
    SharedMongoClient.initialize(should_use_localhost_db=False)

    logging.warning("Nohup conducting -> start_time: %s, end_time: %s" %
                    (start_time, end_time))
    # Global.send_to_slack_channel("IYO Initiated!! start_time: %s, end_time: %s" % (prev_time, cur_time))

    start_time = Global.convert_local_datetime_to_epoch(start_time,
                                                        timezone="kr")
    end_time = Global.convert_local_datetime_to_epoch(end_time, timezone="kr")

    # draw iyo_config for bal & factor_setting
    iyo_config = Global.read_sliced_iyo_setting_config(coin_name)

    logging.critical(
        "[%s-%s-%s] IYO conducting -> start_time: %s, end_time: %s" %
        (coin_name.upper(), mm1_name.upper(), mm2_name.upper(), start_time,
         end_time))

    # set settings, bal_fact_settings, factor_settings
    settings = TradeSettingConfig.get_settings(
        mm1_name=mm1_name,
        mm2_name=mm2_name,
        target_currency=coin_name,
        start_time=start_time,
        end_time=end_time,
        division=iyo_config["division"],
        depth=iyo_config["depth"],
        consecution_time=iyo_config["consecution_time"],
        is_virtual_mm=True)

    bal_factor_settings = TradeSettingConfig.get_bal_fact_settings(
        iyo_config["krw_seq_end"], iyo_config["coin_seq_end"])

    factor_settings = TradeSettingConfig.get_factor_settings(
        mm1_name, mm2_name, coin_name, iyo_config["max_trade_coin_end"],
        iyo_config["threshold_end"], iyo_config["appx_unit_coin_price"])

    iyo_result = IntegratedYieldOptimizer.run(
        settings,
        bal_factor_settings,
        factor_settings,
        is_stat_appender=False,
        is_slicing_dur=True,
        slicing_interval=slicing_interval)
    logging.critical("Final IYO result: %s" % iyo_result)
    return iyo_result
Ejemplo n.º 2
0
    def launch_oppty_sliced_iyo(self, anal_start_time: int,
                                rewinded_time: int):
        st_local = Global.convert_epoch_to_local_datetime(rewinded_time,
                                                          timezone="kr")
        et_local = Global.convert_epoch_to_local_datetime(anal_start_time,
                                                          timezone="kr")
        logging.critical(
            "[%s-%s-%s] Sliced IYO conducting -> , start_time: %s, end_time: %s"
            % (self.target_currency.upper(), self.mm1_name.upper(),
               self.mm2_name.upper(), st_local, et_local))

        # draw iyo_config for bal & factor_setting
        sliced_iyo_config = Global.read_sliced_iyo_setting_config(
            self.target_currency)
        # set settings, bal_fact_settings, factor_settings
        settings = TradeSettingConfig.get_settings(
            mm1_name=self.mm1_name,
            mm2_name=self.mm2_name,
            target_currency=self.target_currency,
            start_time=rewinded_time,
            end_time=anal_start_time,
            division=sliced_iyo_config["division"],
            depth=sliced_iyo_config["depth"],
            consecution_time=sliced_iyo_config["consecution_time"],
            is_virtual_mm=True)

        bal_factor_settings = TradeSettingConfig.get_bal_fact_settings(
            sliced_iyo_config["krw_seq_end"],
            sliced_iyo_config["coin_seq_end"])

        factor_settings = TradeSettingConfig.get_factor_settings(
            self.mm1_name, self.mm2_name, self.target_currency,
            sliced_iyo_config["max_trade_coin_end"],
            sliced_iyo_config["threshold_end"],
            sliced_iyo_config["appx_unit_coin_price"])
        try:
            slicied_iyo_result = IntegratedYieldOptimizer.run(
                settings,
                bal_factor_settings,
                factor_settings,
                is_stat_appender=False,
                is_slicing_dur=True,
                slicing_interval=sliced_iyo_config["slicing_interval"])
        # FIXME: type error는 커서 에러때문에...
        except IndexError or TypeError:
            slicied_iyo_result = None

        return slicied_iyo_result
Ejemplo n.º 3
0
    def run_iyo_by_sliced_oppty(coin_name: str, mm1_name: str, mm2_name: str,
                                local_st: str, local_et):
        start_time = Global.convert_local_datetime_to_epoch(local_st,
                                                            timezone="kr")
        end_time = Global.convert_local_datetime_to_epoch(local_et,
                                                          timezone="kr")

        # draw iyo_config for bal & factor_setting
        sliced_iyo_config = Global.read_sliced_iyo_setting_config(coin_name)

        logging.critical(
            "[%s-%s-%s] Sliced IYO conducting -> start_time: %s, end_time: %s"
            % (coin_name.upper(), mm1_name.upper(), mm2_name.upper(),
               start_time, end_time))

        # set settings, bal_fact_settings, factor_settings
        settings = TradeSettingConfig.get_settings(
            mm1_name=mm1_name,
            mm2_name=mm2_name,
            target_currency=coin_name,
            start_time=start_time,
            end_time=end_time,
            division=sliced_iyo_config["division"],
            depth=sliced_iyo_config["depth"],
            consecution_time=sliced_iyo_config["consecution_time"],
            is_virtual_mm=True)

        bal_factor_settings = TradeSettingConfig.get_bal_fact_settings(
            sliced_iyo_config["krw_seq_end"],
            sliced_iyo_config["coin_seq_end"])

        factor_settings = TradeSettingConfig.get_factor_settings(
            mm1_name, mm2_name, coin_name,
            sliced_iyo_config["max_trade_coin_end"],
            sliced_iyo_config["threshold_end"],
            sliced_iyo_config["appx_unit_coin_price"])

        sliced_iyo_list = IntegratedYieldOptimizer.run(settings,
                                                       bal_factor_settings,
                                                       factor_settings,
                                                       is_stat_appender=False,
                                                       is_slicing_dur=True)
        logging.critical("Final IYO result: %s" % sliced_iyo_list)
        return sliced_iyo_list, settings
Ejemplo n.º 4
0
    def __init__(self, target_currency: str, mm1: MarketManager,
                 mm2: MarketManager, is_initiation_mode: bool,
                 is_trading_mode: bool):

        self.streamer_db = SharedMongoClient.get_streamer_db()

        self.is_initiation_mode = is_initiation_mode
        self.is_trading_mode = is_trading_mode

        self.ocat_final_result = None

        self.mm1 = mm1
        self.mm2 = mm2
        self.mm1_name = self.mm1.get_market_name().lower()
        self.mm2_name = self.mm2.get_market_name().lower()
        self.mm1_krw_bal = float(self.mm1.balance.get_available_coin("krw"))
        self.mm2_krw_bal = float(self.mm2.balance.get_available_coin("krw"))
        self.mm1_coin_bal = float(
            self.mm1.balance.get_available_coin(target_currency))
        self.mm2_coin_bal = float(
            self.mm2.balance.get_available_coin(target_currency))
        self.target_currency = target_currency

        self.slicing_interval = Global.read_sliced_iyo_setting_config(
            self.target_currency)["slicing_interval"]

        self.streamer_start_time = int(time.time())
        self.init_s_iyo_rewined_time = int(self.streamer_start_time -
                                           self.INITIATION_REWEIND_TIME)

        self.trading_mode_start_time = None
        self.trading_mode_s_iyo_rewined_time = None

        self._settlement_time = None

        self.cur_exhaust_ctrl_stage = 0
        self.init_exhaust_ctrl_currency_bal = None
        self.cur_exhaust_ctrl_currency_bal = None