def test_SMA_single_parameter(self): clien_yahoo = Robo_Data(API="yahoo") df = clien_yahoo.yahoo_historical_data(start_date="2019-01-01") backtesting = Robo_Strategy_BackTesting(df) result = backtesting.SMA_single_parameter() self.assertIsInstance(result, pd.DataFrame)
def test_simfin_Derived_Ratios(self): client_simfin = Robo_Data(API="simfin") result = client_simfin.simfin_Derived_Ratios() self.assertIsInstance(result, pd.DataFrame)
def test_yahoo_historical_data(self): clien_yahoo = Robo_Data(API="yahoo") result = clien_yahoo.yahoo_historical_data() self.assertIsInstance(result, pd.DataFrame)
def test_simfin_cashflow_statment(self): client_simfin = Robo_Data(API="simfin") result = client_simfin.simfin_cashflow_statment() self.assertIsInstance(result, pd.DataFrame)
def test_simfin_balance_sheet(self): client_simfin = Robo_Data(API="simfin") result = client_simfin.simfin_balance_sheet() self.assertIsInstance(result, pd.DataFrame)
def test_simfin_historical_data(self): client_simfin = Robo_Data(API="simfin") result = client_simfin.simfin_historical_data() self.assertIsInstance(result, pd.DataFrame)
def __init__(self, email_add=None, email_pwd=None): self.email_add = email_add self.alert = Robo_Alert(email_add, email_pwd) self.data = Robo_Data(API="yahoo") self.backtesting = None
class Robo_Monitor: def __init__(self, email_add=None, email_pwd=None): self.email_add = email_add self.alert = Robo_Alert(email_add, email_pwd) self.data = Robo_Data(API="yahoo") self.backtesting = None def Monitor_SMA(self, sec_id='AAPL', sma_short=20, sma_long=50, start_date="2018-10-30"): # Get real time data from Interactive Broker df = self.data.yahoo_historical_data(sec_id=sec_id, start_date=start_date) # Check the signal # -- sma -- self.backtesting = Robo_Strategy_BackTesting(df) df = self.backtesting.SMA_single_parameter(sma_short=sma_short, sma_long=sma_long) print('signal: {}'.format(df.loc[df.shape[0] - 1, 'signal'])) if df.loc[df.shape[0] - 1, 'signal'] == "buy": self.alert.send_buy_notification(self.email_add, sec_id, "SMA") elif df.loc[df.shape[0] - 1, 'signal'] == "sell": self.alert.send_sell_notification(self.email_add, sec_id, "SMA") else: self.alert.send_hold_notification(self.email_add, sec_id, "SMA") return None def Monitor_RSI(self, sec_id='AAPL', period=14, start_date="2018-10-30"): # Get real time data from Interactive Broker df = self.data.yahoo_historical_data(sec_id=sec_id, start_date=start_date) # Check the signal # -- sma -- self.backtesting = Robo_Strategy_BackTesting(df) df = self.backtesting.RSI_single_parameter(period=period) print('signal: {}'.format(df.loc[df.shape[0] - 1, 'signal'])) if df.loc[df.shape[0] - 1, 'signal'] == "buy": self.alert.send_buy_notification(self.email_add, sec_id, "RSI") elif df.loc[df.shape[0] - 1, 'signal'] == "sell": self.alert.send_sell_notification(self.email_add, sec_id, "RSI") else: self.alert.send_hold_notification(self.email_add, sec_id, "RSI") return None def Monitor_BOLLBands(self, sec_id='AAPL', sma_period=30, std_period=20, start_date="2018-10-30"): # Get real time data from Interactive Broker df = self.data.yahoo_historical_data(sec_id=sec_id, start_date=start_date) # Check the signal # -- sma -- self.backtesting = Robo_Strategy_BackTesting(df) df = self.backtesting.Bollinger_single_parameter(sma_period=sma_period, std_period=std_period) print('signal: {}'.format(df.loc[df.shape[0] - 1, 'signal'])) if df.loc[df.shape[0] - 1, 'signal'] == "buy": self.alert.send_buy_notification(self.email_add, sec_id, "BOLLBands") elif df.loc[df.shape[0] - 1, 'signal'] == "sell": self.alert.send_sell_notification(self.email_add, sec_id, "BOLLBands") else: self.alert.send_hold_notification(self.email_add, sec_id, "BOLLBands") return None