def shooting_star(key, dataList, time_frame): price_action = pd.DataFrame( dataList, columns=[id.time, id.open, id.close, id.high, id.low, id.volume]) if price_action.empty: return window_size = constants.strategy_params[id.window_size] uptrend = utils.__uptrend( price_action.iloc[-window_size - 1:-1][id.close].values, window_size) shooting_star = utils.__is_wick_len(utils.__body(price_action.iloc[-1][id.open], price_action.iloc[-1][id.close]), utils.__body(min(price_action.iloc[-1][id.open], price_action.iloc[-1][id.close]), price_action.iloc[-1][id.low])) \ and utils.__small_lower_wick(price_action.iloc[-1][id.open], price_action.iloc[-1][id.close], price_action.iloc[-1][id.low]) \ and utils.__percentage_change(price_action.iloc[-1][id.open], price_action.iloc[-1][id.close]) < \ constants.strategy_params[id.small_body_percentage] if uptrend and shooting_star: try: #db.insert_strategy(key, time_frame, values.shooting_star, price_action.iloc[-1][id.time]) return { id.name: id.shooting_star, id.key: key, id.price_action: dataList } except: print('Unable to add to database') return {}
def evening_star(data, w_start, window_size, ratio): evening_star = utils.__is_bull(data['open'].values[w_start + window_size], data['close'].values[w_start + window_size]) \ and utils.__is_gap_down(data['close'].values[w_start + window_size], data['open'].values[w_start + window_size + 1], data['close'].values[w_start + window_size + 1]) \ and utils.__body(data['open'].values[w_start + window_size + 1], data['close'].values[w_start + window_size + 1]) < ratio * \ utils.__body(data['open'].values[w_start + window_size], data['close'].values[w_start + window_size]) \ and utils.__body(data['open'].values[w_start + window_size + 1], data['close'].values[w_start + window_size + 1]) < ratio * \ utils.__body(data['open'].values[w_start + window_size + 2], data['close'].values[w_start + window_size + 2]) \ and utils.__is_gap_down(data['open'].values[w_start + window_size + 2], data['open'].values[w_start + window_size + 1], data['close'].values[w_start + window_size + 1]) \ and utils.__is_bear(data['open'].values[w_start + window_size + 2], data['close'].values[w_start + window_size + 2]) \ and utils.__threshold_up(data['open'].values[w_start + window_size], data['close'].values[w_start + window_size], data['close'].values[w_start + window_size + 2]) return evening_star
def __small_lower_wick(price): return utils.__body(price[id.close], price[id.low]) / utils.__body(price[id.open], price[id.close]) \ < constants.strategy_params[id.wick_percentage]
def __small_upper_wick(price): if utils.__body(price[id.open], price[id.close]) > 0: return utils.__body(price[id.close], price[id.high]) / utils.__body(price[id.open], price[id.close]) \ < constants.strategy_params[id.wick_percentage] return True