def __init__(self, dataset, rows=1, grid=True): # We need to handle a strategy being passed if isinstance(dataset, strategy.Strategy): self.strategy = dataset self.data_frame = self.strategy.dataset.data_frame self.realtime_data_frame = dataset.realtime_data_frame else: # Assume a dataset was passed self.strategy = None self.data_frame = dataset.data_frame self.realtime_data_frame = None self.data_frame.reset_index(inplace=True) date_conversion = lambda date: date2num(date.to_pydatetime()) self.data_frame['DATE'] = self.data_frame['Date'].apply(date_conversion) self.rows = rows if grid: plt.rc('axes', grid=True) plt.rc('grid', color='0.75', linestyle='-', linewidth='0.2') self.current_figure = None self.figure_first_ax = None self.figure_rows = 1 self.legend = [] self.legend_labels = [] self.add_figure(self.rows) self.logger = logger.Logger(self.__class__.__name__) self.logger.info('dataset: %s rows: %s grid: %s' %(dataset, rows, grid))
def __init__(self, strategy, trading_profile): self.strategy = strategy self.trading_profile = trading_profile self.trade_history = {} self.available_money = self.trading_profile.capital self.capital = self.trading_profile.capital self.available_money_history = pd.Series( index=self.strategy.dataset.data_frame.index) self.available_capital_history = pd.Series( index=self.strategy.dataset.data_frame.index) self.ongoing_trades = {} self.trades = 0 self.average_gain = 0.0 self.sharpe_ratio = 0.0 self.average_trading_amount = 0.0 self.average_bars = 0.0 self.total_fees = 0.0 self.average_fees = 0.0 self.total_slippage = 0.0 self.average_slippage = 0.0 self.winning_trades = 0 self.losing_trades = 0 self.average_winning_gain = 0.0 self.average_losing_gain = 0.0 self.percent_profitable = 0.0 self.gross_profit = 0.0 self.gross_loss = 0.0 self.net_profit = 0.0 self.lacking_capital = 0 self._require_finalize_calculations = False self.logger = logger.Logger(self.__class__.__name__) self.logger.info('strategy: %s trading_profile: %s' % (strategy, trading_profile))
def __init__(self, train_data, prediction_data, network_type=FEED_FORWARD_NETWORK, network_dataset_type=SUPERVISED_DATASET, trainer_type=BACKPROP_TRAINER): self.train_data = train_data self.prediction_data = prediction_data self.network_type = network_type self.network_dataset_type = network_dataset_type self.trainer_type = trainer_type self.network = None self.network_dataset = None self.dataset = None self.trainer = None self.trained_iterations = 0 self.momentum = None self.learning_rate = None self.hidden_layers = None self.prediction_window = None self.logger = logger.Logger(self.__class__.__name__) self.logger.info('train_data: %s prediction_data: %s, network_type: %s, \ network_dataset_type: %s, trainer_type: %s' %(train_data, prediction_data, network_type, \ network_dataset_type, trainer_type))
def __init__(self, train_data, prediction_data, ensemble_type=RANDOM_FOREST_REGRESSOR): self.train_data = train_data self.prediction_data = prediction_data self.ensemble_type = ensemble_type self.ensemble = None self.prediction_window = None self.look_back_window = None self.training_set = [] self.target_set = [] self.normalize = True self.number_of_estimators = 150 self.max_depth = None self.random_state = 0 self.min_samples_split = 2 self.number_of_jobs = 2 self.learning_rate = 1.0 # For Gradient Boosting self.rating = None self.feature_importances = None self.logger = logger.Logger(self.__class__.__name__) self.logger.info( 'train_data: %s prediction_data: %s ensemble_type: %s' % (train_data, prediction_data, ensemble_type))
def __init__(self, symbol_list, data_connection, start_datetime=None, \ end_datetime=None, periods=None, granularity=None): self.symbol_list = symbol_list # Either specify a start and end date or a number of periods since now assert periods != None or start_datetime != None self.start_datetime = start_datetime self.end_datetime = end_datetime self.periods = periods self.granularity = granularity self.data_connection = data_connection self.data_frame = pd.DataFrame() self.technical_indicators = [] self.logger = logger.Logger(self.__class__.__name__) self.logger.info('symbol_list: %s \ data_connection: %s \ start_datetime: %s \ end_datetime: %s \ periods: %s \ granularity: %s' %(symbol_list, \ data_connection, \ start_datetime, \ end_datetime, \ periods, \ granularity))
def __init__(self, capital, trading_amount, trading_fee, slippage=0.0): self.capital = capital self.trading_amount = trading_amount self.trading_fee = trading_fee self.slippage = slippage self.logger = logger.Logger(self.__class__.__name__) self.logger.info('Initialized - %s' %self)
def __init__(self, dataset, criteria_groups, trading_profile): self.dataset = dataset self.criteria_groups = criteria_groups self.trading_profile = trading_profile self.name = 'Strategy' self.report = report.Report(self, self.trading_profile) self.realtime_data_frame = pd.DataFrame() # Used for backtesting self.first_pass = True # Flag to execute certain actions on first bar of backtest self.upcoming_actions = {} self.logger = logger.Logger(self.__class__.__name__) self.logger.info('Initialized - %s' %self)
def __init__(self, datetime, action, symbol, price, shares, money, fee, slippage): self.datetime = datetime self.action = action self.symbol = symbol self.price = price self.shares = shares self.money = money self.fee = fee self.slippage = slippage self.logger = logger.Logger(self.__class__.__name__) self.logger.info('Initialized - %s' % self)
def __init__(self, username, password, recipient, server='smtp.gmail.com', port=587): self.username = username self.password = password self.recipient = recipient self.server = server self.port = port self.session = self._get_session() self.headers = None self.body = None self.logger = logger.Logger(self.__class__.__name__) self.logger.info( 'username: %s password: * recipient: %s server: %s port: %s' % (username, recipient, server, port))
def __init__(self, criteria_list, action, symbol): self.criteria_list = criteria_list self.action = action self._action = 0 self.symbol = str(symbol) # Add Actions Criteria Automatically if self.action == Long(): self.criteria_list.append(Not(InMarket(self.symbol))) self._action = LONG elif self.action == LongExit(): self.criteria_list.append(IsLong(self.symbol)) self._action = LONG_EXIT elif self.action == Short(): self.criteria_list.append(Not(InMarket(self.symbol))) self._action = SHORT elif self.action == ShortExit(): self.criteria_list.append(IsShort(self.symbol)) self._action = SHORT_EXIT else: raise InvalidAction() self.logger = logger.Logger(self.__class__.__name__) self.logger.info('New Criteria Group - %s for %s (%s)' \ %(str(action).upper(), symbol, criteria_list))
def __init__(self): self.logger = logger.Logger(self.__class__.__name__) self.logger.info('Initialized')
def __init__(self, name): self.name = name.replace(' ', '').replace('_', '').replace('-', '').lower() self.logger = logger.Logger(self.__class__.__name__)
def __init__(self, symbols): self.symbols = [Symbol(symbol) for symbol in symbols] self.logger = logger.Logger(self.__class__.__name__) self.logger.info(symbols)
def __init__(self): self.logger = logger.Logger(self.__class__.__name__)
def __init__(self): self.logger = logger.Logger(self.__class__.__name__) # Some TIs don't require the entire data_frame history. self.num_bars_required = None # Requires all history by default