def get_directory_store_backtests(): # eg '/home/rob/data/backtests/' key_name = "backtest_store_directory" production_config = get_production_config() store_directory = getattr(production_config, key_name) return store_directory
def ib_defaults(**kwargs): """ Returns ib configuration with following precedence 1- if passed in arguments: ipaddress, port, idoffset - use that 2- if defined in private_config file, use that. ib_ipaddress, ib_port, ib_idoffset 3 - if defined in system defaults file, use that :return: mongo db, hostname, port """ # this will include defaults.yaml if not defined in private passed_param_names = list(kwargs.keys()) output_dict = {} config = get_production_config() for param_name in LIST_OF_IB_PARAMS: if param_name in passed_param_names: param_value = kwargs[param_name] else: param_value = arg_not_supplied if param_value is arg_not_supplied: param_value = getattr(config, param_name) output_dict[param_name] = param_value # Get from dictionary ipaddress = output_dict["ib_ipaddress"] port = output_dict["ib_port"] idoffset = output_dict["ib_idoffset"] return ipaddress, port, idoffset
def mongo_defaults(**kwargs): """ Returns mongo configuration with following precedence 1- if passed in arguments: mongo_db, mongo_host, mongo_port - use that 2- if defined in private_config file, use that. mongo_db, mongo_host, mongo_port 3- if defined in system defaults file, use that: mongo_db, mongo_host :return: mongo db, hostname, port """ # this will include defaults.yaml if not defined in private passed_param_names = list(kwargs.keys()) production_config = get_production_config() output_dict = {} for param_name in LIST_OF_MONGO_PARAMS: if param_name in passed_param_names: param_value = kwargs[param_name] else: param_value = arg_not_supplied if param_value is arg_not_supplied: param_value = getattr(production_config, param_name) output_dict[param_name] = param_value # Get from dictionary mongo_db = output_dict["mongo_db"] hostname = output_dict["mongo_host"] port = output_dict["mongo_port"] return mongo_db, hostname, port
def get_directory_store_backtests(): # eg '/home/rob/data/backtests/' production_config = get_production_config() store_directory = production_config.get_element_or_missing_data("backtest_store_directory") if store_directory is missing_data: raise Exception("Need to specify backtest_store_directory in config file") return store_directory
def dump_mongo_data(data): host = get_production_config().get_element_or_arg_not_supplied("mongo_host") path = get_mongo_dump_directory() data.log.msg("Dumping mongo data to %s NOT TESTED IN WINDOWS" % path) if host.startswith("mongodb://"): os.system("mongodump --uri='%s' -o=%s" % (host, path)) else: os.system("mongodump --host='%s' -o=%s" % (host, path)) data.log.msg("Dumped")
def get_trading_server_login_data(): production_config = get_production_config() trading_server_ip = production_config.get_element_or_missing_data( "trading_server_ip") if trading_server_ip is missing_data: return missing_data trading_server_username = production_config.trading_server_username trading_server_ssh_port = production_config.trading_server_ssh_port return trading_server_username, trading_server_ip, trading_server_ssh_port
def get_existing_bad_markets(): production_config = get_production_config() excluded_markets_config_element = production_config.get_element_or_missing_data( "exclude_instrument_lists") if excluded_markets_config_element is missing_data: print("NO BAD MARKETS IN CONFIG!") existing_bad_markets = [] else: existing_bad_markets = \ excluded_markets_config_element.get('bad_markets', []) return existing_bad_markets
def get_email_details(): # FIXME DON'T LIKE RETURNING ALL THESE VALUES - return CONFIG or subset? try: production_config = get_production_config() email_address = production_config.email_address email_pwd = production_config.email_pwd email_server = production_config.email_server email_to = production_config.email_to email_port = production_config.email_port except: raise Exception( "Need to have all of these for email to work in private config: email_address, email_pwd, email_server, email_to", "email_port") return email_server, email_address, email_pwd, email_to, email_port
def display_bad_market_info(bad_markets: list): print("Add the following to yaml .config under bad_markets heading:\n") print("bad_markets:") __ = [print(" - %s" % instrument) for instrument in bad_markets] production_config = get_production_config() ## this should be a function existing_bad_markets = production_config.get_element_or_missing_data( "bad_markets") if existing_bad_markets is missing_data: existing_bad_markets = [] existing_bad_markets.sort() new_bad_markets = list( set(bad_markets).difference(set(existing_bad_markets))) removed_bad_markets = list( set(existing_bad_markets).difference(set(bad_markets))) print("New bad markets %s" % new_bad_markets) print("Removed bad markets %s" % removed_bad_markets)
def _get_change_in_avg_units_to_check(change_in_avg_units: pd.Series, first_date_in_new_data=None): if first_date_in_new_data is None: # No merged data so we check it all change_in_avg_units_to_check = change_in_avg_units else: # just check more recent data change_in_avg_units_to_check = change_in_avg_units[ first_date_in_new_data:] return change_in_avg_units_to_check production_config = get_production_config() max_spike = production_config.max_price_spike def _check_for_spikes_in_change_in_avg_units( change_in_avg_units_to_check: pd.Series): if any(change_in_avg_units_to_check > max_spike): first_spike = change_in_avg_units_to_check.index[ change_in_avg_units_to_check > max_spike][0] else: first_spike = no_spike return first_spike
def get_broker_account() -> str: production_config = get_production_config() account_id = production_config.get_element_or_missing_data( "broker_account") return account_id
def config(self) -> Config: config = getattr(self, "_config", None) if config is None: config = self._config = get_production_config() return config