def __init__(self): ''' 应用初始化 ''' logger.init_logger(CONFIG.LOG_CONF, suffix=options.port) settings = { 'static_path': os.path.join(options.project_path, 'static'), 'template_path': os.path.join(options.project_path, 'tpl'), 'xsrf_cookies': False, 'site_title': 'demo', 'debug': options.debug, 'ui_modules': uimodules, 'ui_methods': uimethods, "session_mgr": TornadoSessionManager(CONFIG.COOKIE_NAME, CONFIG.COOKIE_SECRET, MClient(CONFIG.MC_SERVERS)), } handlers = [ (r"/", IndexHandler), ] tornado.web.Application.__init__(self, handlers, **settings)
def __init__(self, model: BaseRLModel = PPO2, policy: BasePolicy = MlpLnLstmPolicy, reward_strategy: BaseRewardStrategy = IncrementalProfit, exchange_args: Dict = {}, **kwargs): self.logger = kwargs.get( 'logger', init_logger(__name__, show_debug=kwargs.get('show_debug', True))) self.Model = model self.Policy = policy self.Reward_Strategy = reward_strategy self.exchange_args = exchange_args self.tensorboard_path = kwargs.get('tensorboard_path', None) self.input_data_path = kwargs.get('input_data_path', 'data/input/EURUSD60.csv') self.params_db_path = kwargs.get('params_db_path', 'sqlite:///data/params.db') self.date_format = kwargs.get('date_format', ProviderDateFormat.DATETIME_HOUR_24) self.model_verbose = kwargs.get('model_verbose', 1) self.n_envs = kwargs.get('n_envs', os.cpu_count()) self.n_minibatches = kwargs.get('n_minibatches', self.n_envs) self.train_split_percentage = kwargs.get('train_split_percentage', 0.8) self.data_provider = kwargs.get('data_provider', 'static') self.initialize_data() self.initialize_optuna() self.logger.debug(f'Initialize RLTrader: {self.study_name}')
def __init__(self, modelClass: BaseRLModel = PPO2, policyClass: BasePolicy = MlpPolicy, **kwargs): self.logger = init_logger(__name__, show_debug=kwargs.get('show_debug', True)) self.Model = modelClass self.Policy = policyClass self.tensorboard_path = kwargs.get('tensorboard_path', None) self.input_data_path = kwargs.get('input_data_path', None) self.params_db_path = kwargs.get('params_db_path', 'sqlite:///data/params.db') self.date_format = kwargs.get('date_format', ProviderDateFormat.DATETIME_HOUR_12) self.model_verbose = kwargs.get('model_verbose', 1) self.nminibatches = kwargs.get('nminibatches', 1) self.train_split_percentage = kwargs.get('train_split_percentage', 0.8) self.initialize_data() self.initialize_optuna() self.logger.debug(f'Initialize RLTrader: {self.study_name}')
def __init__(self, data_provider: BaseDataProvider, initial_balance=10000, commission=0.0025, **kwargs): super(TradingEnv, self).__init__() self.logger = init_logger(__name__, show_debug=kwargs.get('show_debug', True)) self.data_provider = data_provider self.initial_balance = initial_balance self.commission = commission self.reward_fn = kwargs.get('reward_fn', self._reward_incremental_profit) self.benchmarks = kwargs.get('benchmarks', []) self.enable_stationarization = kwargs.get('enable_stationarization', True) self.action_space = spaces.Discrete(3) n_features = 5 + len(self.data_provider.columns) self.obs_shape = (1, n_features) self.observation_space = spaces.Box(low=0, high=1, shape=self.obs_shape, dtype=np.float16) self.observations = pd.DataFrame(None, columns=self.data_provider.columns)
def __init__(self, data_provider: BaseDataProvider, reward_strategy: BaseRewardStrategy = IncrementalProfit, trade_strategy: BaseTradeStrategy = SimulatedTradeStrategy, initial_balance: int = 10000, commissionPercent: float = 0.25, maxSlippagePercent: float = 2.0, **kwargs): super(TradingEnv, self).__init__() self.logger = kwargs.get('logger', init_logger(__name__, show_debug=kwargs.get('show_debug', True))) self.base_precision: int = kwargs.get('base_precision', 2) self.asset_precision: int = kwargs.get('asset_precision', 8) self.min_cost_limit: float = kwargs.get('min_cost_limit', 1E-3) self.min_amount_limit: float = kwargs.get('min_amount_limit', 1E-3) self.initial_balance = round(initial_balance, self.base_precision) self.commissionPercent = commissionPercent self.maxSlippagePercent = maxSlippagePercent self.data_provider = data_provider self.reward_strategy = reward_strategy() self.trade_strategy = trade_strategy(commissionPercent=self.commissionPercent, maxSlippagePercent=self.maxSlippagePercent, base_precision=self.base_precision, asset_precision=self.asset_precision, min_cost_limit=self.min_cost_limit, min_amount_limit=self.min_amount_limit) self.render_benchmarks: List[Dict] = kwargs.get('render_benchmarks', []) self.render_benchmarks = [ { 'label': 'Buy and HODL', 'values': buy_and_hodl(self.data_provider.data_frame['Close'], initial_balance, commissionPercent) }, { 'label': 'RSI Divergence', 'values': rsi_divergence(self.data_provider.data_frame['Close'], initial_balance, commissionPercent) }, { 'label': 'SMA Crossover', 'values': sma_crossover(self.data_provider.data_frame['Close'], initial_balance, commissionPercent) }, ] self.normalize_obs: bool = kwargs.get('normalize_obs', True) self.stationarize_obs: bool = kwargs.get('stationarize_obs', True) self.normalize_rewards: bool = kwargs.get('normalize_rewards', False) self.stationarize_rewards: bool = kwargs.get('stationarize_rewards', True) self.n_discrete_actions: int = kwargs.get('n_discrete_actions', 24) self.action_space = spaces.Discrete(self.n_discrete_actions) self.n_features = 6 + len(self.data_provider.columns) self.obs_shape = (1, self.n_features) self.observation_space = spaces.Box(low=0, high=1, shape=self.obs_shape, dtype=np.float16) self.observations = pd.DataFrame(None, columns=self.data_provider.columns)
def __init__(self, data_provider: BaseDataProvider, reward_strategy: BaseRewardStrategy = IncrementalProfit, trade_strategy: BaseTradeStrategy = SimulatedTradeStrategy, initial_balance: int = 10000, commissionPercent: float = 0.25, maxSlippagePercent: float = 2.0, **kwargs): super(TradingEnv, self).__init__() self.logger = kwargs.get( 'logger', init_logger(__name__, show_debug=kwargs.get('show_debug', True))) self.base_precision: int = kwargs.get('base_precision', 2) self.asset_precision: int = kwargs.get('asset_precision', 8) self.min_cost_limit: float = kwargs.get('min_cost_limit', 1E-3) self.min_amount_limit: float = kwargs.get('min_amount_limit', 1E-3) self.initial_balance = round(initial_balance, self.base_precision) self.commissionPercent = commissionPercent self.maxSlippagePercent = maxSlippagePercent self.data_provider = data_provider self.reward_strategy = reward_strategy() self.trade_strategy = trade_strategy( commissionPercent=self.commissionPercent, maxSlippagePercent=self.maxSlippagePercent, base_precision=self.base_precision, asset_precision=self.asset_precision, min_cost_limit=self.min_cost_limit, min_amount_limit=self.min_amount_limit) self.render_benchmarks: List[Dict] = kwargs.get( 'render_benchmarks', []) self.normalize_obs: bool = kwargs.get('normalize_obs', True) self.stationarize_obs: bool = kwargs.get('stationarize_obs', True) self.normalize_rewards: bool = kwargs.get('normalize_rewards', False) self.stationarize_rewards: bool = kwargs.get('stationarize_rewards', True) self.n_discrete_actions: int = kwargs.get('n_discrete_actions', 24) self.action_space = spaces.Discrete(self.n_discrete_actions) self.n_features = 5 + len(self.data_provider.columns) self.obs_shape = (1, self.n_features) self.observation_space = spaces.Box(low=0, high=1, shape=self.obs_shape, dtype=np.float16) self.observations = pd.DataFrame(None, columns=self.data_provider.columns) self.fast_transform_observations = FastTransform() self.fast_transform_account_history = FastTransform() self.fast_log_observation = self.observations
def __init__(self, file_name: str = "database.db"): # Test if 'data' folder exists. If not, create it. directory = "data" self.create_directory_if_not_exists(directory) # All database files will be located at data folder self.conn = sqlite3.connect(f"{directory}/{file_name}") self.cursor = self.conn.cursor() self.logger = init_logger(self.__class__.__name__)
def __init__(self): ''' 应用初始化 ''' logger.init_logger(CONFIG.LOG_CONF, suffix=options.port) settings = { 'static_path': os.path.join(options.project_path, 'static'), 'template_path': os.path.join(options.project_path, 'tpl'), 'xsrf_cookies': False, 'site_title': 'demo', 'debug': options.debug, 'ui_modules':uimodules, 'ui_methods':uimethods, "session_mgr": TornadoSessionManager(CONFIG.COOKIE_NAME, CONFIG.COOKIE_SECRET, MClient(CONFIG.MC_SERVERS)), } handlers = [ (r"/", IndexHandler), ] tornado.web.Application.__init__(self, handlers, **settings)
def __init__( self, model_actor: BaseRLModel = PPO2, policy: BasePolicy = MlpLnLstmPolicy #(ActorCriticPolicy or str) The policy model to use (MlpPolicy, CnnPolicy, CnnLstmPolicy, ...) , reward_strategy: Reward_Strategy_BASE = RewardPnL #IncrementalProfit , exchange_args: Dict = {}, **kwargs): self.model_actor: BaseRLModel = model_actor self.policy = policy self.Reward_Strategy = reward_strategy self.exchange_args = exchange_args self.logger = kwargs.get( 'logger', init_logger(__name__, show_debug=kwargs.get('show_debug', True))) self.db_path = kwargs.get('db_path', 'sqlite:///data/params.db') self.date_format = kwargs.get('date_format', ProviderDateFormat.DATETIME_HOUR_24) self.data_path = kwargs.get('data_path', 'data/input/coinbase-1h-btc-usd.csv') self.data_train_split_pct = kwargs.get('train_split_percentage', 0.8) self.data_provider = kwargs.get('data_provider', 'static') #self.columns_map = kwargs.get('columns_map', {}) self.n_envs = kwargs.get('n_envs', os.cpu_count()) self.n_minibatches = kwargs.get('n_minibatches', self.n_envs) self.model_logs_tb = kwargs.get('tensorboard_path', os.path.join('data', 'logs_tb')) self.model_verbose = kwargs.get('model_verbose', 1) self.do_load_raw_data: bool = kwargs.get('do_load_raw_data', True) self.features_to_add: str = kwargs.get('features_to_add', 'none') self.initialize_data(self.do_load_raw_data, self.features_to_add) self.initialize_db_optuna() #optimization for hyper param search self.logger.info( f'sucsessfully Initialize RLTrader study name {self.study_name} , open terminal, tensorboard --logdir={self.model_logs_tb}, click to http://localhost:6006/' )
import numpy as np from lib.RLTrader import RLTrader from lib.TraderArgs import TraderArgs from lib.util.logger import init_logger np.warnings.filterwarnings('ignore') option_parser = TraderArgs() args = option_parser.get_args() if __name__ == '__main__': logger = init_logger(__name__, show_debug=args.debug) trader = RLTrader(**vars(args), logger=logger) if args.command == 'optimize': trader.optimize(n_trials=args.trials, n_parallel_jobs=args.parallel_jobs) elif args.command == 'train': trader.train(n_epochs=args.epochs) elif args.command == 'test': trader.test(model_epoch=args.model_epoch, should_render=args.no_render) elif args.command == 'opt-train-test': trader.optimize(args.trials, args.parallel_jobs) trader.train(n_epochs=args.train_epochs, test_trained_model=args.no_test, render_trained_model=args.no_render)