def analyze_moving_averages(self, coin_pair, period_count=20, time_unit='5m'): ma_analyzer = MovingAverages() historical_data = self.exchange_aggregator.get_historical_data( coin_pair=coin_pair, period_count=period_count, time_unit=time_unit ) sma_value = ma_analyzer.calculate_sma(period_count, historical_data) ema_value = ma_analyzer.calculate_ema(period_count, historical_data) return sma_value, ema_value
def analyze_moving_averages(self, market_pair, period_count=20, time_unit='5m'): ma_analyzer = MovingAverages() historical_data = self.exchange_interface.get_historical_data( market_pair=market_pair, period_count=period_count, time_unit=time_unit ) sma_value = ma_analyzer.calculate_sma(period_count, historical_data) ema_value = ma_analyzer.calculate_ema(period_count, historical_data) return sma_value, ema_value
class BollingerBands(object): """ Bollinger Bands """ def __init__(self): self.logger = structlog.get_logger() self.utils = Utils() self.sma = MovingAverages() ''' Retrieves the upper and lower bollinger bands for the given parameters: :param historical_data: A list of historical data points for a coin pair :param period: The period of the moving average to be used in bollinger calculation (defaults to 21) :param k: The number of standard deviations away from the 'period'-length moving average to place the upper and lower band (defaults to 2) :returns A 2-element tuple containing the upper and lower band, respectively. ''' def get_bollinger_bands(self, historical_data, period=21, k=2): sma = self.sma.calculate_sma(period, historical_data) closing_prices = self.utils.get_closing_prices(historical_data) std_dev = np.std(closing_prices[-period:]) return sma + k * std_dev, sma - k * std_dev
def analyze_ema(self, market_pair, exchange, hot_thresh=0, cold_thresh=0): ma_analyzer = MovingAverages() period_count = 15 historical_data = self.day_historical_data[0:period_count] ema_value = ma_analyzer.get_ema_value(period_count, historical_data) is_ema_trending = ma_analyzer.is_ema_trending(ema_value, hot_thresh) ema_data = { 'values': (ema_value,), 'is_hot': is_ema_trending, 'is_cold': False } return ema_data
def analyze_sma(self, historial_data, hot_thresh=0, cold_thresh=0): ma_analyzer = MovingAverages() period_count = 15 sma_historical_data = historial_data[0:period_count] sma_value = ma_analyzer.get_sma_value(period_count, sma_historical_data) is_sma_trending = ma_analyzer.is_sma_trending(sma_value, hot_thresh) sma_data = { 'values': (sma_value, ), 'is_hot': is_sma_trending, 'is_cold': False } return sma_data
def analyze_moving_averages(self, market_pair, exchange): ma_analyzer = MovingAverages() period_count = self.ma_config["period_count"] historical_data = self.__exchange_interface.get_historical_data( market_pair=market_pair, exchange=exchange, period_count=period_count, time_unit=self.ma_config["time_unit"]) sma_value = ma_analyzer.get_sma_value(period_count, historical_data) ema_value = ma_analyzer.get_ema_value(period_count, historical_data) is_sma_trending = ma_analyzer.is_sma_trending( sma_value, self.ma_config["sma_threshold"]) is_ema_trending = ma_analyzer.is_ema_trending( ema_value, self.ma_config["ema_threshold"]) ma_data = { 'sma_value': sma_value, 'ema_value': ema_value, 'is_sma_trending': is_sma_trending, 'is_ema_trending': is_ema_trending } return ma_data
def __init__(self): self.logger = structlog.get_logger() self.utils = Utils() self.sma = MovingAverages()