def long_short_signal_crosses(prices, short_period=DEFAULT_SHORT_PERIOD, long_period=DEFAULT_LONG_PERIOD):
    num_prices = len(prices)
    long_period = min(long_period, num_prices)
    if short_period == DEFAULT_SHORT_PERIOD:
        short_period = min(short_period, num_prices, int(round(.46*long_period)))
    long_ma  = ewmas(prices, long_period)
    short_ma = ewmas(prices, short_period)

    # lists must be the same length
    short_ma = short_ma[len(short_ma)-len(long_ma):len(short_ma)]

    return signal_crosses(short_ma, long_ma)
def ema_ma_signal_crosses(prices, ema_period=DEFAULT_EMA_PERIOD, ma_period=False):
    ma_period = ma_period or ema_period
    num_prices = len(prices)
    ma_period = min(ma_period, num_prices)
    if ema_period == DEFAULT_EMA_PERIOD:
        ema_period = min(ema_period, num_prices, int(round(.46*ma_period)))
    ma  = ewmas(prices, ma_period)
    ema = ewmas(prices, ema_period)

    # lists must be the same length
    ema = ema[len(ema)-len(ma):len(ema)]

    return signal_crosses(ema, ma)
def long_short_signal_crosses(prices,
                              short_period=DEFAULT_SHORT_PERIOD,
                              long_period=DEFAULT_LONG_PERIOD):
    num_prices = len(prices)
    long_period = min(long_period, num_prices)
    if short_period == DEFAULT_SHORT_PERIOD:
        short_period = min(short_period, num_prices,
                           int(round(.46 * long_period)))
    long_ma = ewmas(prices, long_period)
    short_ma = ewmas(prices, short_period)

    # lists must be the same length
    short_ma = short_ma[len(short_ma) - len(long_ma):len(short_ma)]

    return signal_crosses(short_ma, long_ma)