Exemple #1
0
 def price_acc_ema(self):
 # Finally let's smooth out the acceleration by taking its ema:
     asset_pct = self.ticker_close.pct_change()
     asset_pct_ema = series_ema(asset_pct, self.velocity_ema_window)
     asset_pct_ema_pct = asset_pct_ema.pct_change()
     asset_pct_ema_pct_ema = series_ema(asset_pct_ema_pct, self.acc_ema_window)
     return asset_pct_ema_pct_ema
Exemple #2
0
 def plot_(self):
     asset_pct = self.ticker_close.pct_change()
     asset_pct_ema = series_ema(asset_pct, self.velocity_ema_window)
     asset_pct_ema_pct = asset_pct_ema.pct_change()
     asset_pct_ema_pct_ema = series_ema(asset_pct_ema_pct,
                                        self.acc_ema_window)
     two_separate_graphs(asset_pct_ema_pct_ema, self.ticker_close)
Exemple #3
0
 def stats(self):
     asset_pct = self.ticker_close.pct_change()
     asset_pct_ema = series_ema(asset_pct, self.velocity_ema_window)
     asset_pct_ema_pct = asset_pct_ema.pct_change()
     asset_pct_ema_pct_ema = series_ema(asset_pct_ema_pct, self.acc_ema_window).dropna(0)
     plt.hist(asset_pct_ema_pct_ema)
     plt.title("Price EMA Acc Distribution")
     plt.xlabel("Value")
     plt.ylabel("Frequency")
     print (asset_pct_ema_pct_ema.describe())
Exemple #4
0
    def current_level_acc(self):
        asset_pct = self.ticker_close.pct_change()
        asset_pct_ema = series_ema(asset_pct, self.velocity_ema_window)
        asset_pct_ema_pct = asset_pct_ema.pct_change()
        asset_pct_ema_pct_ema = series_ema(asset_pct_ema_pct,
                                           self.acc_ema_window).dropna(0)
        p_stats_20 = asset_pct_ema_pct_ema.rolling(
            window=self.acc_ema_window).quantile(0.2).values[-1]
        p_stats_40 = asset_pct_ema_pct_ema.rolling(
            window=self.acc_ema_window).quantile(0.4).values[-1]
        p_stats_60 = asset_pct_ema_pct_ema.rolling(
            window=self.acc_ema_window).quantile(0.6).values[-1]
        p_stats_80 = asset_pct_ema_pct_ema.rolling(
            window=self.acc_ema_window).quantile(0.8).values[-1]
        p_stats_100 = asset_pct_ema_pct_ema.rolling(
            window=self.acc_ema_window).quantile(1.0).values[-1]

        if p_stats_80 < asset_pct_ema_pct_ema.values[-1] <= p_stats_100:
            current_level = '80-100. Decrease or Exit Position.'
        elif p_stats_60 < asset_pct_ema_pct_ema.values[
                -1] <= p_stats_80 and asset_pct_ema_pct_ema.values[
                    -1] > asset_pct_ema_pct_ema.values[-2]:
            current_level = '60-80. Prep to Unload...'
        elif p_stats_60 < asset_pct_ema_pct_ema.values[
                -1] <= p_stats_80 and asset_pct_ema_pct_ema.values[
                    -1] < asset_pct_ema_pct_ema.values[-2]:
            current_level = '60-80. Momentum Acc Reducing, Decrease or Exit Position.'
        elif p_stats_20 < asset_pct_ema_pct_ema.values[
                -1] <= p_stats_40 and asset_pct_ema_pct_ema.values[
                    -1] > asset_pct_ema_pct_ema.values[-2]:
            current_level = '20-40. Up-ward Momentum Still strong'
        elif asset_pct_ema_pct_ema.values[
                -2] <= p_stats_20 and asset_pct_ema_pct_ema.values[
                    -1] > asset_pct_ema_pct_ema.values[-2]:
            current_level = '0-20. Momentum Bouncing Back after Big Mkt Drop.'
        elif asset_pct_ema_pct_ema.values[
                -2] <= p_stats_20 and asset_pct_ema_pct_ema.values[
                    -1] < asset_pct_ema_pct_ema.values[-2]:
            current_level = '0-20. Market Dropping, Panicking.'
        else:
            current_level = 'Normal Level'
        # what's the current level?
        # print ("p_stats_20:{}".format(p_stats_20))
        # print ("-"*60)
        # print ("p_stats_40:{}".format(p_stats_40))
        # print ("-"*60)
        # print ("p_stats_60:{}".format(p_stats_60))
        # print ("-"*60)
        # print ("p_stats_80:{}".format(p_stats_80))
        # print ("-"*60)
        # print ("p_stats_100:{}".format(p_stats_100))
        # print ("-"*60)
        print("Current Acc signal level by {}: Acc_Signal_Level: {:0.02f}; {}".
              format(self.end, asset_pct_ema_pct_ema.values[-1],
                     current_level))
Exemple #5
0
def rsi(series, window, upper_threshold, lower_shreshold):

    window_length = window

    delta = series.diff()

    # Get rid of the first row, which is NaN since it did not have a previous
    # row to calculate the differences
    delta = delta[1:]

    # Make the positive gains (up) and negative gains (down) Series
    up, down = delta.copy(), delta.copy()
    up[up < 0] = 0
    down[down > 0] = 0

    # Calculate the EWMA
    roll_up1 = series_ema(up, window_length)
    roll_down1 = series_ema(down.abs(), window_length)

    # Calculate the RSI based on EWMA
    RS1 = roll_up1 / roll_down1
    RSI1 = 100.0 - (100.0 / (1.0 + RS1))

    return RSI1
Exemple #6
0
 def price_acc(self):
     # Second to last step, let's calculate velocity ema's momentum velocity, which means price moving average's acceleration:
     asset_pct = self.ticker_close.pct_change()
     asset_pct_ema = series_ema(asset_pct, self.velocity_ema_window)
     asset_pct_ema_pct = asset_pct_ema.pct_change()
     return asset_pct_ema_pct
Exemple #7
0
 def price_vlcty_ema(self):
     asset_pct = self.ticker_close.pct_change()
     asset_pct_ema = series_ema(asset_pct, self.velocity_ema_window)
     return asset_pct_ema
Exemple #8
0
 def price_ema(self):
     asset_ema = series_ema(self.ticker_close, self.close_ema_window)
     return asset_ema