def ich(): ica = ta.ichimoku_a(high, low, n1=9, n2=26, visual=False, fillna=False) icb = ta.ichimoku_b(high, low, n2=26, n3=52, visual=False, fillna=False) if ica[-1] > icb[-1]: trn_ich_status = "ICH Signal is: Buy" elif ica[-1] < icb[-1]: trn_ich_status = "ICH Signal is: Sell" else: trn_ich_status = "ICH Signal is: Hold" return trn_ich_status
def process_data(data): data['BB_5'] = ta.bollinger_mavg( data['CLOSE'], 5) #bollinger_moving average 5 trading periods data['BB_10'] = ta.bollinger_mavg( data['CLOSE'], 10) #bollinger_moving average 10 trading periods data['BB_20'] = ta.bollinger_mavg( data['CLOSE'], 20) # bollinger_moving average 20 periods data['ADX'] = ta.adx(data['HIGH'], data['LOW'], data['CLOSE'], 14) #Average Directional Index data['ATR'] = ta.average_true_range(data['HIGH'], data['LOW'], data['CLOSE'], 14) #Average True Range data['CCI'] = ta.cci(data['HIGH'], data['LOW'], data['CLOSE'], 14) #Commodity Channel Index data['DCH'] = ta.donchian_channel_hband( data['CLOSE']) #Donchian Channel High Band data['DCL'] = ta.donchian_channel_lband( data['CLOSE']) #Donchian Channel Low Band data['DPO'] = ta.dpo(data['CLOSE']) #Detrend Price Oscilator data['EMAf'] = ta.ema_fast( data['CLOSE']) #Expornential Moving Average fast data['EMAs'] = ta.ema_slow( data['CLOSE']) #Expornential Moving Average slow data['FI'] = ta.force_index( data['CLOSE'], data['VOLUME']) # Force Index(reveals the value of a trend) data['ICHa'] = ta.ichimoku_a(data['HIGH'], data['LOW']) #Ichimoku A data['ICHb'] = ta.ichimoku_b(data['HIGH'], data['LOW']) #Ichimoku B data['KC'] = ta.keltner_channel_central( data['HIGH'], data['LOW'], data['CLOSE']) #Keltner channel(KC) Central data['KST'] = ta.kst( data['CLOSE'] ) #KST Oscillator (KST) identify major stock market cycle junctures data['MACD'] = ta.macd( data['CLOSE']) # Moving Average convergence divergence data['OBV'] = ta.on_balance_volume_mean( data['CLOSE'], data['VOLUME']) # on_balance_volume_mean data['RSI'] = ta.rsi(data['CLOSE']) # Relative Strength Index (RSI) data['TRIX'] = ta.trix( data['CLOSE'] ) #Shows the percent rate of change of a triple exponentially smoothed moving average data['TSI'] = ta.tsi(data['CLOSE']) #True strength index (TSI) data['ROC1'] = (data['CLOSE'] - data['OPEN']) / data['OPEN'] data['RET'] = data['CLOSE'].pct_change() data['y'] = np.where(data['OPEN'] <= data['CLOSE'], 1, -1) data = data.dropna() return data
def plot(symbol, grouping_range, ts_start=0, ts_end=0, skip_orders=False): if not ts_start: d = datetime.date(2018, 1, 11) ts_start = mktime(d.timetuple()) if not ts_end: d2 = datetime.date(2018, 12, 18) ts_end = mktime(d2.timetuple()) df = get_dataframe_from_timerange(db, symbol, grouping_range, ts_start=ts_start, ts_end=ts_end) df['ema_fast'] = ta.ema_fast(df['close'], 32) df['ema_slow'] = ta.ema_slow(df['close'], 9) df['bollinger_hband'] = ta.bollinger_hband(df['close'], 26, 1.9) df['bollinger_lband'] = ta.bollinger_lband(df['close'], 26, 1.9) df['ichimoku_a'] = ta.ichimoku_a(df['high'], df['low']) df['ichimoku_b'] = ta.ichimoku_b(df['high'], df['low']) # df['keltner_low'] = ta.keltner_channel_lband(df['high'], df['low'], df['close']) # df['keltner_high'] = ta.keltner_channel_hband(df['high'], df['low'], df['close']) # df['mkl'] = multiplied_keltner_channel_lband(df['high'], df['low'], df['close'], n=14, m=2) # df['atr'] = ta.average_true_range(df['high'], df['low'], df['close'], n=14) # df['ema'] = ta.ema_slow(df['close'], 14) # df['mkh'] = multiplied_keltner_channel_hband(df['high'], df['low'], df['close'], n=14, m=2) # df['mkh'] = multiplied_keltner_channel_hband(df['high'], df['low'], df['close'], n=14, m=2) # plotly_candles(df, 'test_plot', ['ichimoku_a', 'ichimoku_b']) if not skip_orders: orders = get_orders(symbol, ts_start=ts_start, ts_end=ts_end) else: orders = None plotly_candles(df, 'test_plot', orders=orders, indicators=['bollinger_hband', 'bollinger_lband'])
df["High"], df["Low"], df["Close"]) ta_df['Vortex_neg'] = ta.vortex_indicator_neg( df["High"], df["Low"], df["Close"]) ta_df['Vortex_diff'] = abs( ta_df['Vortex_pos'] - ta_df['Vortex_neg']) ta_df['Trix'] = ta.trix(df["Close"]) ta_df['Mass_index'] = ta.mass_index(df["High"], df["Low"]) ta_df['CCI'] = ta.cci(df["High"], df["Low"], df["Close"]) ta_df['DPO'] = ta.dpo(df["Close"]) ta_df['KST'] = ta.kst(df["Close"]) ta_df['KST_sig'] = ta.kst_sig(df["Close"]) ta_df['KST_diff'] = ( ta_df['KST'] - ta_df['KST_sig']) ta_df['Ichimoku_a'] = ta.ichimoku_a(df["High"], df["Low"], visual=True) ta_df['Ichimoku_b'] = ta.ichimoku_b(df["High"], df["Low"], visual=True) ta_df['Aroon_up'] = ta.aroon_up(df["Close"]) ta_df['Aroon_down'] = ta.aroon_down(df["Close"]) ta_df['Aroon_ind'] = ( ta_df['Aroon_up'] - ta_df['Aroon_down'] ) ta_df['ATR'] = ta.average_true_range( df["High"], df["Low"], df["Close"]) ta_df['BBH'] = ta.bollinger_hband(df["Close"]) ta_df['BBL'] = ta.bollinger_lband(df["Close"]) ta_df['BBM'] = ta.bollinger_mavg(df["Close"])
def get_data(context, data_, window): # Crear ventana de datos. h1 = data_.history( context.symbols, context.row_features, bar_count=window, frequency=str(context.bar_period) + "T", ) h1 = h1.swapaxes(2, 0) norm_data = [] close_prices = [] for i, asset in enumerate(context.assets): data = h1.iloc[i] close = h1.iloc[i].close if context.include_ha: ha = heikenashi(data) data = pd.concat((data, ha), axis=1) for period in [3, 6, 8, 10, 15, 20]: data["rsi" + str(period)] = ta.rsi(data.close, n=period, fillna=True) data["stoch" + str(period)] = ta.stoch(data.high, data.low, data.close, n=period, fillna=True) data["stoch_signal" + str(period)] = ta.stoch_signal( high=data.high, low=data.low, close=data.close, n=period, d_n=3, fillna=True) data["dpo" + str(period)] = ta.dpo(close=data.close, n=period, fillna=True) data["atr" + str(period)] = ta.average_true_range(high=data.high, low=data.low, close=data.close, n=period, fillna=True) for period in [6, 7, 8, 9, 10]: data["williams" + str(period)] = ta.wr(high=data.high, low=data.low, close=data.close, lbp=period, fillna=True) for period in [12, 13, 14, 15]: data["proc" + str(period)] = ta.trix(close=data.close, n=period, fillna=True) data["macd_diff"] = ta.macd_diff(close=data.close, n_fast=15, n_slow=30, n_sign=9, fillna=True) data["macd_signal"] = ta.macd_signal(close=data.close, n_fast=15, n_slow=30, n_sign=9, fillna=True) data["bb_high_indicator"] = ta.bollinger_hband_indicator( close=data.close, n=15, ndev=2, fillna=True) data["bb_low_indicator"] = ta.bollinger_lband_indicator( close=data.close, n=15, ndev=2, fillna=True) data["dc_high_indicator"] = ta.donchian_channel_hband_indicator( close=data.close, n=20, fillna=True) data["dc_low_indicator"] = ta.donchian_channel_lband_indicator( close=data.close, n=20, fillna=True) data["ichimoku_a"] = ta.ichimoku_a(high=data.high, low=data.low, n1=9, n2=26, fillna=True) data.fillna(method="bfill") # Normalizar los valores for feature in data.columns: norm_feature = preprocessing.normalize( data[feature].values.reshape(-1, 1), axis=0) data[feature] = pd.DataFrame(data=norm_feature, index=data.index, columns=[feature]) norm_data.append(data.values) close_prices.append(close) context.features = data.columns return np.array(norm_data), np.array(close_prices)
fillna=True) X['dpo'] = ta.dpo(price['Adj. Close'], n=20, fillna=True) X['kst_sig'] = ta.kst_sig(price['Adj. Close'], r1=10, r2=15, r3=20, r4=30, n1=10, n2=10, n3=10, n4=15, nsig=9, fillna=True) X['ichimoku_a'] = ta.ichimoku_a(price['High'], price['Low'], n1=9, n2=26, fillna=True) X['ichimoku_b'] = ta.ichimoku_b(price['High'], price['Low'], n2=26, n3=52, fillna=True) X['money_flow_index'] = ta.money_flow_index(price['High'], price['Low'], price['Adj. Close'], price['Volume'], n=14, fillna=True) X['rsi'] = ta.rsi(price['Adj. Close'], n=14, fillna=True) X['tsi'] = ta.tsi(price['Adj. Close'], r=25, s=13, fillna=True)
def get_trayectory(self, t_intervals): """ :param t_intervals: número de intervalos en cada trayectoria :return: Datos con características de la trayectoria sintética y precios de cierre en bruto de al misma """ trayectories = [] closes = [] p = True for i, asset in enumerate(self.context.assets): synthetic_return = np.exp( self.drift[i] + self.stdev[i] * norm.ppf(np.random.rand((t_intervals * self.frequency) + self.frequency, 1))) initial_close = self.close[i, -1] synthetic_close = np.zeros_like(synthetic_return) synthetic_close[0] = initial_close for t in range(1, synthetic_return.shape[0]): synthetic_close[t] = synthetic_close[t - 1] * synthetic_return[t] OHLC = [] for t in range(synthetic_return.shape[0]): if t % self.frequency == 0 and t > 0: open = synthetic_close[t - self.frequency] high = np.max(synthetic_close[t - self.frequency: t]) low = np.min(synthetic_close[t - self.frequency: t]) close = synthetic_close[t] OHLC.append([open, high, close, low]) data = pd.DataFrame(data=OHLC, columns=["open", "high", "low", "close"]) close = data.close if self.context.include_ha: ha = heikenashi(data) data = pd.concat((data, ha), axis=1) for period in [3, 6, 8, 10, 15, 20]: data["rsi" + str(period)] = ta.rsi(data.close, n=period, fillna=True) data["stoch" + str(period)] = ta.stoch(data.high, data.low, data.close, n=period, fillna=True) data["stoch_signal" + str(period)] = ta.stoch_signal(high=data.high, low=data.low, close=data.close, n=period, d_n=3, fillna=True) data["dpo" + str(period)] = ta.dpo(close=data.close, n=period, fillna=True) data["atr" + str(period)] = ta.average_true_range(high=data.high, low=data.low, close=data.close, n=period, fillna=True) for period in [6, 7, 8, 9, 10]: data["williams" + str(period)] = ta.wr(high=data.high, low=data.low, close=data.close, lbp=period, fillna=True) for period in [12, 13, 14, 15]: data["proc" + str(period)] = ta.trix(close=data.close, n=period, fillna=True) data["macd_diff"] = ta.macd_diff(close=data.close, n_fast=15, n_slow=30, n_sign=9, fillna=True) data["macd_signal"] = ta.macd_signal(close=data.close, n_fast=15, n_slow=30, n_sign=9, fillna=True) data["bb_high_indicator"] = ta.bollinger_hband_indicator(close=data.close, n=15, ndev=2, fillna=True) data["bb_low_indicator"] = ta.bollinger_lband_indicator(close=data.close, n=15, ndev=2, fillna=True) data["dc_high_indicator"] = ta.donchian_channel_hband_indicator(close=data.close, n=20, fillna=True) data["dc_low_indicator"] = ta.donchian_channel_lband_indicator(close=data.close, n=20, fillna=True) data["ichimoku_a"] = ta.ichimoku_a(high=data.high, low=data.low, n1=9, n2=26, fillna=True) data.fillna(method="bfill") # Normalizar los valores for feature in data.columns: norm_feature = preprocessing.normalize(data[feature].values.reshape(-1, 1), axis=0) data[feature] = pd.DataFrame(data=norm_feature, index=data.index, columns=[feature]) self.assets = data.columns trayectories.append(data.values) closes.append(close) return np.array(trayectories), np.array(closes)