MichaelJMath
10/3/2017 - 3:01 AM

ShowMe Study

Create a showme study on plot given a price series and a signals series. The signals series is a series containing values of -1 for short signal, 0 for neutral, and 1 for long signal.

def plot_showme_study(price_series, signals,  
                      fixed_price=None, pct_adjust=None, size=40):
    """Plot a showme study given a series of signals and 
    a series of prices. 
    """
    plot_series = price_series * signals
    abs_plot_series = plot_series.apply(abs)
    abs_plot_series = abs_plot_series.apply(
                                      lambda x: np.nan if x==0 else x).dropna()
    y_values = [fixed_price] * len(abs_plot_series) if fixed_price else abs_plot_series
    if pct_adjust:
        if pct_adjust >= 1:
            pct_adjust = pct_adjust * 0.01
        y_values = ((1. + pct_adjust * signals ) * y_values ).dropna()
    plt.scatter(abs_plot_series.index, y_values, 
                c=signals[abs_plot_series.index], s=size, cmap="RdYlGn")