Exemplo n.º 1
0
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]
Exemplo n.º 4
0
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