def get_cdlhighwave(ohlc): cdlhighwave = ta.CDLHIGHWAVE(ohlc['1_open'], ohlc['2_high'], ohlc['3_low'], ohlc['4_close']) ohlc['cdlhighwave'] = cdlhighwave return ohlc
def CDLHIGHWAVE(open, high, low, close): ''' High-Wave Candle 风高浪大线 分组: Pattern Recognition 形态识别 简介: 三日K线模式,具有极长的上/下影线与短的实体,预示着趋势反转。 integer = CDLHIGHWAVE(open, high, low, close) ''' return talib.CDLHIGHWAVE(open, high, low, close)
def high_wave(self): """ 名称:High-Wave Candle 风高浪大线 简介:三日K线模式,具有极长的上/下影线与短的实体,预示着趋势反转。 """ result = talib.CDLHIGHWAVE(open=np.array(self.dataframe['open']), high=np.array(self.dataframe['high']), low=np.array(self.dataframe['low']), close=np.array(self.dataframe['close'])) self.dataframe['high_wave'] = result
def high_wave(self, sym, frequency): if not self.kbars_ready(sym, frequency): return [] opens = self.open(sym, frequency) highs = self.high(sym, frequency) lows = self.low(sym, frequency) closes = self.close(sym, frequency) cdl = ta.CDLHIGHWAVE(opens, highs, lows, closes) return cdl
def get_rates(codes, data, start, end): rate = {} code = codes['code'].get_values() for i in code: close = data[i]['close'] high = data[i]['high'] low = data[i]['low'] open = data[i]['open'] # 用CDLBELTHO/D进行测试 t1 = np.array(tl.CDLHIGHWAVE(open, high, low, close)) t2 = np.array(tl.CDLHANGINGMAN(open, high, low, close)) t3 = np.array(tl.CDLDRAGONFLYDOJI(open, high, low, close)) t4 = np.array(tl.CDLHARAMICROSS(open, high, low, close)) # t4 = np.minimum(t4,0) t5 = np.array(tl.CDLDARKCLOUDCOVER(open, high, low, close)) test = t1 + t2 + t3 + t5 + t4 rate[i] = get_rate(close, test) return rate
def _extract_feature(candle, params, candle_type, target_dt): ''' 前に余分に必要なデータ量: {(stockf_fastk_period_l + stockf_fastk_period_l) * 最大分足 (min)} + window_size = (12 + 12) * 5 + 5 = 125 (min) ''' o = candle.open h = candle.high l = candle.low c = candle.close v = candle.volume # OHLCV features = pd.DataFrame() features['open'] = o features['high'] = h features['low'] = l features['close'] = c features['volume'] = v #################################### # # Momentum Indicator Functions # #################################### # ADX = SUM((+DI - (-DI)) / (+DI + (-DI)), N) / N # N — 計算期間 # SUM (..., N) — N期間の合計 # +DI — プラスの価格変動の値(positive directional index) # -DI — マイナスの価格変動の値(negative directional index) # rsi_timeperiod_l=30の場合、30分足で、(30 * 30 / 60(min)) = 15時間必要 features['adx_s'] = ta.ADX(h, l, c, timeperiod=params['adx_timeperiod_s']) features['adx_m'] = ta.ADX(h, l, c, timeperiod=params['adx_timeperiod_m']) features['adx_l'] = ta.ADX(h, l, c, timeperiod=params['adx_timeperiod_l']) features['adxr_s'] = ta.ADXR(h, l, c, timeperiod=params['adxr_timeperiod_s']) features['adxr_m'] = ta.ADXR(h, l, c, timeperiod=params['adxr_timeperiod_m']) features['adxr_l'] = ta.ADXR(h, l, c, timeperiod=params['adxr_timeperiod_l']) # APO = Shorter Period EMA – Longer Period EMA features['apo_s'] = ta.APO(c, fastperiod=params['apo_fastperiod_s'], slowperiod=params['apo_slowperiod_s'], matype=ta.MA_Type.EMA) features['apo_m'] = ta.APO(c, fastperiod=params['apo_fastperiod_m'], slowperiod=params['apo_slowperiod_m'], matype=ta.MA_Type.EMA) # AroonUp = (N - 過去N日間の最高値からの経過期間) ÷ N × 100 # AroonDown = (N - 過去N日間の最安値からの経過期間) ÷ N × 100 # aroon_timeperiod_l=30の場合、30分足で、(30 * 30 / 60(min)) = 15時間必要 #features['aroondown_s'], features['aroonup_s'] = ta.AROON(h, l, timeperiod=params['aroon_timeperiod_s']) #features['aroondown_m'], features['aroonup_m'] = ta.AROON(h, l, timeperiod=params['aroon_timeperiod_m']) #features['aroondown_l'], features['aroonup_l'] = ta.AROON(h, l, timeperiod=params['aroon_timeperiod_l']) # Aronnオシレーター = AroonUp - AroonDown # aroonosc_timeperiod_l=30の場合、30分足で、(30 * 30 / 60(min)) = 15時間必要 features['aroonosc_s'] = ta.AROONOSC(h, l, timeperiod=params['aroonosc_timeperiod_s']) features['aroonosc_m'] = ta.AROONOSC(h, l, timeperiod=params['aroonosc_timeperiod_m']) features['aroonosc_l'] = ta.AROONOSC(h, l, timeperiod=params['aroonosc_timeperiod_l']) # BOP = (close - open) / (high - low) features['bop'] = ta.BOP(o, h, l, c) # CCI = (TP - MA) / (0.015 * MD) # TP: (高値+安値+終値) / 3 # MA: TPの移動平均 # MD: 平均偏差 = ((MA - TP1) + (MA - TP2) + ...) / N features['cci_s'] = ta.CCI(h, l, c, timeperiod=params['cci_timeperiod_s']) features['cci_m'] = ta.CCI(h, l, c, timeperiod=params['cci_timeperiod_m']) features['cci_l'] = ta.CCI(h, l, c, timeperiod=params['cci_timeperiod_l']) # CMO - Chande Momentum Oscillator #features['cmo_s'] = ta.CMO(c, timeperiod=params['cmo_timeperiod_s']) #features['cmo_m'] = ta.CMO(c, timeperiod=params['cmo_timeperiod_m']) #features['cmo_l'] = ta.CMO(c, timeperiod=params['cmo_timeperiod_l']) # DX - Directional Movement Index features['dx_s'] = ta.DX(h, l, c, timeperiod=params['dx_timeperiod_s']) features['dx_m'] = ta.DX(h, l, c, timeperiod=params['dx_timeperiod_m']) features['dx_l'] = ta.DX(h, l, c, timeperiod=params['dx_timeperiod_l']) # MACD=基準線-相対線 # 基準線(EMA):過去12日(週・月)間の終値指数平滑平均 # 相対線(EMA):過去26日(週・月)間の終値指数平滑平均 # https://www.sevendata.co.jp/shihyou/technical/macd.html # macd_slowperiod_m = 30 の場合30分足で((30 + macd_signalperiod_m) * 30)/ 60 = 16.5時間必要(macd_signalperiod_m=3の時) macd, macdsignal, macdhist = ta.MACDEXT(c, fastperiod=params['macd_fastperiod_s'], slowperiod=params['macd_slowperiod_s'], signalperiod=params['macd_signalperiod_s'], fastmatype=ta.MA_Type.EMA, slowmatype=ta.MA_Type.EMA, signalmatype=ta.MA_Type.EMA) change_macd = calc_change(macd, macdsignal) change_macd.index = macd.index features['macd_s'] = macd features['macdsignal_s'] = macdsignal features['macdhist_s'] = macdhist features['change_macd_s'] = change_macd macd, macdsignal, macdhist = ta.MACDEXT(c, fastperiod=params['macd_fastperiod_m'], slowperiod=params['macd_slowperiod_m'], signalperiod=params['macd_signalperiod_m'], fastmatype=ta.MA_Type.EMA, slowmatype=ta.MA_Type.EMA, signalmatype=ta.MA_Type.EMA) change_macd = calc_change(macd, macdsignal) change_macd.index = macd.index features['macd_m'] = macd features['macdsignal_m'] = macdsignal features['macdhist_m'] = macdhist features['change_macd_m'] = change_macd # MFI - Money Flow Index features['mfi_s'] = ta.MFI(h, l, c, v, timeperiod=params['mfi_timeperiod_s']) features['mfi_m'] = ta.MFI(h, l, c, v, timeperiod=params['mfi_timeperiod_m']) features['mfi_l'] = ta.MFI(h, l, c, v, timeperiod=params['mfi_timeperiod_l']) # MINUS_DI - Minus Directional Indicator features['minus_di_s'] = ta.MINUS_DI(h, l, c, timeperiod=params['minus_di_timeperiod_s']) features['minus_di_m'] = ta.MINUS_DI(h, l, c, timeperiod=params['minus_di_timeperiod_m']) features['minus_di_l'] = ta.MINUS_DI(h, l, c, timeperiod=params['minus_di_timeperiod_l']) # MINUS_DM - Minus Directional Movement features['minus_dm_s'] = ta.MINUS_DM(h, l, timeperiod=params['minus_dm_timeperiod_s']) features['minus_dm_m'] = ta.MINUS_DM(h, l, timeperiod=params['minus_dm_timeperiod_m']) features['minus_dm_l'] = ta.MINUS_DM(h, l, timeperiod=params['minus_dm_timeperiod_l']) # MOM - Momentum features['mom_s'] = ta.MOM(c, timeperiod=params['mom_timeperiod_s']) features['mom_m'] = ta.MOM(c, timeperiod=params['mom_timeperiod_m']) features['mom_l'] = ta.MOM(c, timeperiod=params['mom_timeperiod_l']) # PLUS_DI - Minus Directional Indicator features['plus_di_s'] = ta.PLUS_DI(h, l, c, timeperiod=params['plus_di_timeperiod_s']) features['plus_di_m'] = ta.PLUS_DI(h, l, c, timeperiod=params['plus_di_timeperiod_m']) features['plus_di_l'] = ta.PLUS_DI(h, l, c, timeperiod=params['plus_di_timeperiod_l']) # PLUS_DM - Minus Directional Movement features['plus_dm_s'] = ta.PLUS_DM(h, l, timeperiod=params['plus_dm_timeperiod_s']) features['plus_dm_m'] = ta.PLUS_DM(h, l, timeperiod=params['plus_dm_timeperiod_m']) features['plus_dm_l'] = ta.PLUS_DM(h, l, timeperiod=params['plus_dm_timeperiod_l']) # PPO - Percentage Price Oscillator #features['ppo_s'] = ta.PPO(c, fastperiod=params['ppo_fastperiod_s'], slowperiod=params['ppo_slowperiod_s'], matype=ta.MA_Type.EMA) #features['ppo_m'] = ta.PPO(c, fastperiod=params['ppo_fastperiod_m'], slowperiod=params['ppo_slowperiod_m'], matype=ta.MA_Type.EMA) # ROC - Rate of change : ((price/prevPrice)-1)*100 features['roc_s'] = ta.ROC(c, timeperiod=params['roc_timeperiod_s']) features['roc_m'] = ta.ROC(c, timeperiod=params['roc_timeperiod_m']) features['roc_l'] = ta.ROC(c, timeperiod=params['roc_timeperiod_l']) # ROCP = (price-prevPrice) / prevPrice # http://www.tadoc.org/indicator/ROCP.htm # rocp_timeperiod_l = 30 の場合、30分足で(30 * 30) / 60 = 15時間必要 rocp = ta.ROCP(c, timeperiod=params['rocp_timeperiod_s']) change_rocp = calc_change(rocp, pd.Series(np.zeros(len(candle)), index=candle.index)) change_rocp.index = rocp.index features['rocp_s'] = rocp features['change_rocp_s'] = change_rocp rocp = ta.ROCP(c, timeperiod=params['rocp_timeperiod_m']) change_rocp = calc_change(rocp, pd.Series(np.zeros(len(candle)), index=candle.index)) change_rocp.index = rocp.index features['rocp_m'] = rocp features['change_rocp_m'] = change_rocp rocp = ta.ROCP(c, timeperiod=params['rocp_timeperiod_l']) change_rocp = calc_change(rocp, pd.Series(np.zeros(len(candle)), index=candle.index)) change_rocp.index = rocp.index features['rocp_l'] = rocp features['change_rocp_l'] = change_rocp # ROCR - Rate of change ratio: (price/prevPrice) features['rocr_s'] = ta.ROCR(c, timeperiod=params['rocr_timeperiod_s']) features['rocr_m'] = ta.ROCR(c, timeperiod=params['rocr_timeperiod_m']) features['rocr_l'] = ta.ROCR(c, timeperiod=params['rocr_timeperiod_l']) # ROCR100 - Rate of change ratio 100 scale: (price/prevPrice)*100 features['rocr100_s'] = ta.ROCR100(c, timeperiod=params['rocr100_timeperiod_s']) features['rocr100_m'] = ta.ROCR100(c, timeperiod=params['rocr100_timeperiod_m']) features['rocr100_l'] = ta.ROCR100(c, timeperiod=params['rocr100_timeperiod_l']) # RSI = (100 * a) / (a + b) (a: x日間の値上がり幅の合計, b: x日間の値下がり幅の合計) # https://www.sevendata.co.jp/shihyou/technical/rsi.html # rsi_timeperiod_l=30の場合、30分足で、(30 * 30 / 60(min)) = 15時間必要 #features['rsi_s'] = ta.RSI(c, timeperiod=params['rsi_timeperiod_s']) #features['rsi_m'] = ta.RSI(c, timeperiod=params['rsi_timeperiod_m']) #features['rsi_l'] = ta.RSI(c, timeperiod=params['rsi_timeperiod_l']) # FASTK(KPeriod) = 100 * (Today's Close - LowestLow) / (HighestHigh - LowestLow) # FASTD(FastDperiod) = MA Smoothed FASTK over FastDperiod # http://www.tadoc.org/indicator/STOCHF.htm # stockf_fastk_period_l=30の場合30分足で、(((30 + 30) * 30) / 60(min)) = 30時間必要 (LowestLowが移動平均の30分余分に必要なので60period余分に計算する) fastk, fastd = ta.STOCHF(h, l, c, fastk_period=params['stockf_fastk_period_s'], fastd_period=params['stockf_fastd_period_s'], fastd_matype=ta.MA_Type.EMA) change_stockf = calc_change(fastk, fastd) change_stockf.index = fastk.index features['fastk_s'] = fastk features['fastd_s'] = fastd features['fast_change_s'] = change_stockf fastk, fastd = ta.STOCHF(h, l, c, fastk_period=params['stockf_fastk_period_m'], fastd_period=params['stockf_fastd_period_m'], fastd_matype=ta.MA_Type.EMA) change_stockf = calc_change(fastk, fastd) change_stockf.index = fastk.index features['fastk_m'] = fastk features['fastd_m'] = fastd features['fast_change_m'] = change_stockf fastk, fastd = ta.STOCHF(h, l, c, fastk_period=params['stockf_fastk_period_l'], fastd_period=params['stockf_fastk_period_l'], fastd_matype=ta.MA_Type.EMA) change_stockf = calc_change(fastk, fastd) change_stockf.index = fastk.index features['fastk_l'] = fastk features['fastd_l'] = fastd features['fast_change_l'] = change_stockf # TRIX - 1-day Rate-Of-Change (ROC) of a Triple Smooth EMA features['trix_s'] = ta.TRIX(c, timeperiod=params['trix_timeperiod_s']) features['trix_m'] = ta.TRIX(c, timeperiod=params['trix_timeperiod_m']) features['trix_l'] = ta.TRIX(c, timeperiod=params['trix_timeperiod_l']) # ULTOSC - Ultimate Oscillator features['ultosc_s'] = ta.ULTOSC(h, l, c, timeperiod1=params['ultosc_timeperiod_s1'], timeperiod2=params['ultosc_timeperiod_s2'], timeperiod3=params['ultosc_timeperiod_s3']) # WILLR = (当日終値 - N日間の最高値) / (N日間の最高値 - N日間の最安値)× 100 # https://inet-sec.co.jp/study/technical-manual/williamsr/ # willr_timeperiod_l=30の場合30分足で、(30 * 30 / 60) = 15時間必要 features['willr_s'] = ta.WILLR(h, l, c, timeperiod=params['willr_timeperiod_s']) features['willr_m'] = ta.WILLR(h, l, c, timeperiod=params['willr_timeperiod_m']) features['willr_l'] = ta.WILLR(h, l, c, timeperiod=params['willr_timeperiod_l']) #################################### # # Volume Indicator Functions # #################################### # Volume Indicator Functions # slowperiod_adosc_s = 10の場合、30分足で(10 * 30) / 60 = 5時間必要 features['ad'] = ta.AD(h, l, c, v) features['adosc_s'] = ta.ADOSC(h, l, c, v, fastperiod=params['fastperiod_adosc_s'], slowperiod=params['slowperiod_adosc_s']) features['obv'] = ta.OBV(c, v) #################################### # # Volatility Indicator Functions # #################################### # ATR - Average True Range features['atr_s'] = ta.ATR(h, l, c, timeperiod=params['atr_timeperiod_s']) features['atr_m'] = ta.ATR(h, l, c, timeperiod=params['atr_timeperiod_m']) features['atr_l'] = ta.ATR(h, l, c, timeperiod=params['atr_timeperiod_l']) # NATR - Normalized Average True Range #features['natr_s'] = ta.NATR(h, l, c, timeperiod=params['natr_timeperiod_s']) #features['natr_m'] = ta.NATR(h, l, c, timeperiod=params['natr_timeperiod_m']) #features['natr_l'] = ta.NATR(h, l, c, timeperiod=params['natr_timeperiod_l']) # TRANGE - True Range features['trange'] = ta.TRANGE(h, l, c) #################################### # # Price Transform Functions # #################################### features['avgprice'] = ta.AVGPRICE(o, h, l, c) features['medprice'] = ta.MEDPRICE(h, l) #features['typprice'] = ta.TYPPRICE(h, l, c) #features['wclprice'] = ta.WCLPRICE(h, l, c) #################################### # # Cycle Indicator Functions # #################################### #features['ht_dcperiod'] = ta.HT_DCPERIOD(c) #features['ht_dcphase'] = ta.HT_DCPHASE(c) #features['inphase'], features['quadrature'] = ta.HT_PHASOR(c) #features['sine'], features['leadsine'] = ta.HT_SINE(c) features['integer'] = ta.HT_TRENDMODE(c) #################################### # # Statistic Functions # #################################### # BETA - Beta features['beta_s'] = ta.BETA(h, l, timeperiod=params['beta_timeperiod_s']) features['beta_m'] = ta.BETA(h, l, timeperiod=params['beta_timeperiod_m']) features['beta_l'] = ta.BETA(h, l, timeperiod=params['beta_timeperiod_l']) # CORREL - Pearson's Correlation Coefficient (r) #features['correl_s'] = ta.CORREL(h, l, timeperiod=params['correl_timeperiod_s']) #features['correl_m'] = ta.CORREL(h, l, timeperiod=params['correl_timeperiod_m']) #features['correl_l'] = ta.CORREL(h, l, timeperiod=params['correl_timeperiod_l']) # LINEARREG - Linear Regression #features['linearreg_s'] = ta.LINEARREG(c, timeperiod=params['linearreg_timeperiod_s']) #features['linearreg_m'] = ta.LINEARREG(c, timeperiod=params['linearreg_timeperiod_m']) #features['linearreg_l'] = ta.LINEARREG(c, timeperiod=params['linearreg_timeperiod_l']) # LINEARREG_ANGLE - Linear Regression Angle features['linearreg_angle_s'] = ta.LINEARREG_ANGLE(c, timeperiod=params['linearreg_angle_timeperiod_s']) features['linearreg_angle_m'] = ta.LINEARREG_ANGLE(c, timeperiod=params['linearreg_angle_timeperiod_m']) features['linearreg_angle_l'] = ta.LINEARREG_ANGLE(c, timeperiod=params['linearreg_angle_timeperiod_l']) # LINEARREG_INTERCEPT - Linear Regression Intercept features['linearreg_intercept_s'] = ta.LINEARREG_INTERCEPT(c, timeperiod=params['linearreg_intercept_timeperiod_s']) features['linearreg_intercept_m'] = ta.LINEARREG_INTERCEPT(c, timeperiod=params['linearreg_intercept_timeperiod_m']) features['linearreg_intercept_l'] = ta.LINEARREG_INTERCEPT(c, timeperiod=params['linearreg_intercept_timeperiod_l']) # LINEARREG_SLOPE - Linear Regression Slope features['linearreg_slope_s'] = ta.LINEARREG_SLOPE(c, timeperiod=params['linearreg_slope_timeperiod_s']) features['linearreg_slope_m'] = ta.LINEARREG_SLOPE(c, timeperiod=params['linearreg_slope_timeperiod_m']) features['linearreg_slope_l'] = ta.LINEARREG_SLOPE(c, timeperiod=params['linearreg_slope_timeperiod_l']) # STDDEV - Standard Deviation features['stddev_s'] = ta.STDDEV(c, timeperiod=params['stddev_timeperiod_s'], nbdev=1) features['stddev_m'] = ta.STDDEV(c, timeperiod=params['stddev_timeperiod_m'], nbdev=1) features['stddev_l'] = ta.STDDEV(c, timeperiod=params['stddev_timeperiod_l'], nbdev=1) # TSF - Time Series Forecast features['tsf_s'] = ta.TSF(c, timeperiod=params['tsf_timeperiod_s']) features['tsf_m'] = ta.TSF(c, timeperiod=params['tsf_timeperiod_m']) features['tsf_l'] = ta.TSF(c, timeperiod=params['tsf_timeperiod_l']) # VAR - Variance #features['var_s'] = ta.VAR(c, timeperiod=params['var_timeperiod_s'], nbdev=1) #features['var_m'] = ta.VAR(c, timeperiod=params['var_timeperiod_m'], nbdev=1) #features['var_l'] = ta.VAR(c, timeperiod=params['var_timeperiod_l'], nbdev=1) # ボリンジャーバンド # bbands_timeperiod_l = 30の場合、30分足で(30 * 30) / 60 = 15時間必要 bb_upper, bb_middle, bb_lower = ta.BBANDS(c, timeperiod=params['bbands_timeperiod_s'], nbdevup=params['bbands_nbdevup_s'], nbdevdn=params['bbands_nbdevdn_s'], matype=ta.MA_Type.EMA) bb_trend1 = pd.Series(np.zeros(len(candle)), index=candle.index) bb_trend1[c > bb_upper] = 1 bb_trend1[c < bb_lower] = -1 bb_trend2 = pd.Series(np.zeros(len(candle)), index=candle.index) bb_trend2[c > bb_middle] = 1 bb_trend2[c < bb_middle] = -1 features['bb_upper_s'] = bb_upper features['bb_middle_s'] = bb_middle features['bb_lower_s'] = bb_lower features['bb_trend1_s'] = bb_trend1 features['bb_trend2_s'] = bb_trend2 bb_upper, bb_middle, bb_lower = ta.BBANDS(c, timeperiod=params['bbands_timeperiod_m'], nbdevup=params['bbands_nbdevup_m'], nbdevdn=params['bbands_nbdevdn_m'], matype=ta.MA_Type.EMA) bb_trend1 = pd.Series(np.zeros(len(candle)), index=candle.index) bb_trend1[c > bb_upper] = 1 bb_trend1[c < bb_lower] = -1 bb_trend2 = pd.Series(np.zeros(len(candle)), index=candle.index) bb_trend2[c > bb_middle] = 1 bb_trend2[c < bb_middle] = -1 features['bb_upper_m'] = bb_upper features['bb_middle_m'] = bb_middle features['bb_lower_m'] = bb_lower features['bb_trend1_m'] = bb_trend1 features['bb_trend2_m'] = bb_trend2 bb_upper, bb_middle, bb_lower = ta.BBANDS(c, timeperiod=params['bbands_timeperiod_l'], nbdevup=params['bbands_nbdevup_l'], nbdevdn=params['bbands_nbdevdn_l'], matype=ta.MA_Type.EMA) bb_trend1 = pd.Series(np.zeros(len(candle)), index=candle.index) bb_trend1[c > bb_upper] = 1 bb_trend1[c < bb_lower] = -1 bb_trend2 = pd.Series(np.zeros(len(candle)), index=candle.index) bb_trend2[c > bb_middle] = 1 bb_trend2[c < bb_middle] = -1 features['bb_upper_l'] = bb_upper features['bb_middle_l'] = bb_middle features['bb_lower_l'] = bb_lower features['bb_trend1_l'] = bb_trend1 features['bb_trend2_l'] = bb_trend2 # ローソク足 features['CDL2CROWS'] = ta.CDL2CROWS(o, h, l, c) features['CDL3BLACKCROWS'] = ta.CDL3BLACKCROWS(o, h, l, c) features['CDL3INSIDE'] = ta.CDL3INSIDE(o, h, l, c) features['CDL3LINESTRIKE'] = ta.CDL3LINESTRIKE(o, h, l, c) features['CDL3OUTSIDE'] = ta.CDL3OUTSIDE(o, h, l, c) features['CDL3STARSINSOUTH'] = ta.CDL3STARSINSOUTH(o, h, l, c) features['CDL3WHITESOLDIERS'] = ta.CDL3WHITESOLDIERS(o, h, l, c) features['CDLABANDONEDBABY'] = ta.CDLABANDONEDBABY(o, h, l, c, penetration=0) features['CDLADVANCEBLOCK'] = ta.CDLADVANCEBLOCK(o, h, l, c) features['CDLBELTHOLD'] = ta.CDLBELTHOLD(o, h, l, c) features['CDLBREAKAWAY'] = ta.CDLBREAKAWAY(o, h, l, c) features['CDLCLOSINGMARUBOZU'] = ta.CDLCLOSINGMARUBOZU(o, h, l, c) features['CDLCONCEALBABYSWALL'] = ta.CDLCONCEALBABYSWALL(o, h, l, c) features['CDLCOUNTERATTACK'] = ta.CDLCOUNTERATTACK(o, h, l, c) features['CDLDARKCLOUDCOVER'] = ta.CDLDARKCLOUDCOVER(o, h, l, c, penetration=0) #features['CDLDOJI'] = ta.CDLDOJI(o, h, l, c) features['CDLDOJISTAR'] = ta.CDLDOJISTAR(o, h, l, c) features['CDLDRAGONFLYDOJI'] = ta.CDLDRAGONFLYDOJI(o, h, l, c) features['CDLENGULFING'] = ta.CDLENGULFING(o, h, l, c) features['CDLEVENINGDOJISTAR'] = ta.CDLEVENINGDOJISTAR(o, h, l, c, penetration=0) features['CDLEVENINGSTAR'] = ta.CDLEVENINGSTAR(o, h, l, c, penetration=0) #features['CDLGAPSIDESIDEWHITE'] = ta.CDLGAPSIDESIDEWHITE(o, h, l, c) features['CDLGRAVESTONEDOJI'] = ta.CDLGRAVESTONEDOJI(o, h, l, c) features['CDLHAMMER'] = ta.CDLHAMMER(o, h, l, c) #features['CDLHANGINGMAN'] = ta.CDLHANGINGMAN(o, h, l, c) features['CDLHARAMI'] = ta.CDLHARAMI(o, h, l, c) features['CDLHARAMICROSS'] = ta.CDLHARAMICROSS(o, h, l, c) features['CDLHIGHWAVE'] = ta.CDLHIGHWAVE(o, h, l, c) #features['CDLHIKKAKE'] = ta.CDLHIKKAKE(o, h, l, c) features['CDLHIKKAKEMOD'] = ta.CDLHIKKAKEMOD(o, h, l, c) features['CDLHOMINGPIGEON'] = ta.CDLHOMINGPIGEON(o, h, l, c) #features['CDLIDENTICAL3CROWS'] = ta.CDLIDENTICAL3CROWS(o, h, l, c) features['CDLINNECK'] = ta.CDLINNECK(o, h, l, c) #features['CDLINVERTEDHAMMER'] = ta.CDLINVERTEDHAMMER(o, h, l, c) features['CDLKICKING'] = ta.CDLKICKING(o, h, l, c) features['CDLKICKINGBYLENGTH'] = ta.CDLKICKINGBYLENGTH(o, h, l, c) features['CDLLADDERBOTTOM'] = ta.CDLLADDERBOTTOM(o, h, l, c) #features['CDLLONGLEGGEDDOJI'] = ta.CDLLONGLEGGEDDOJI(o, h, l, c) features['CDLMARUBOZU'] = ta.CDLMARUBOZU(o, h, l, c) #features['CDLMATCHINGLOW'] = ta.CDLMATCHINGLOW(o, h, l, c) features['CDLMATHOLD'] = ta.CDLMATHOLD(o, h, l, c, penetration=0) features['CDLMORNINGDOJISTAR'] = ta.CDLMORNINGDOJISTAR(o, h, l, c, penetration=0) features['CDLMORNINGSTAR'] = ta.CDLMORNINGSTAR(o, h, l, c, penetration=0) features['CDLONNECK'] = ta.CDLONNECK(o, h, l, c) features['CDLPIERCING'] = ta.CDLPIERCING(o, h, l, c) features['CDLRICKSHAWMAN'] = ta.CDLRICKSHAWMAN(o, h, l, c) features['CDLRISEFALL3METHODS'] = ta.CDLRISEFALL3METHODS(o, h, l, c) features['CDLSEPARATINGLINES'] = ta.CDLSEPARATINGLINES(o, h, l, c) #features['CDLSHOOTINGSTAR'] = ta.CDLSHOOTINGSTAR(o, h, l, c) features['CDLSHORTLINE'] = ta.CDLSHORTLINE(o, h, l, c) #features['CDLSPINNINGTOP'] = ta.CDLSPINNINGTOP(o, h, l, c) features['CDLSTALLEDPATTERN'] = ta.CDLSTALLEDPATTERN(o, h, l, c) features['CDLSTICKSANDWICH'] = ta.CDLSTICKSANDWICH(o, h, l, c) features['CDLTAKURI'] = ta.CDLTAKURI(o, h, l, c) features['CDLTASUKIGAP'] = ta.CDLTASUKIGAP(o, h, l, c) features['CDLTHRUSTING'] = ta.CDLTHRUSTING(o, h, l, c) features['CDLTRISTAR'] = ta.CDLTRISTAR(o, h, l, c) features['CDLUNIQUE3RIVER'] = ta.CDLUNIQUE3RIVER(o, h, l, c) features['CDLUPSIDEGAP2CROWS'] = ta.CDLUPSIDEGAP2CROWS(o, h, l, c) features['CDLXSIDEGAP3METHODS'] = ta.CDLXSIDEGAP3METHODS(o, h, l, c) ''' # トレンドライン for dt in datetimerange(candle.index[0], candle.index[-1] + timedelta(minutes=1)): start_dt = (dt - timedelta(minutes=130)).strftime('%Y-%m-%d %H:%M:%S') end_dt = dt.strftime('%Y-%m-%d %H:%M:%S') tmp = candle.loc[(start_dt <= candle.index) & (candle.index <= end_dt)] for w_size, stride in [(15, 5), (30, 10), (60, 10), (120, 10)]: # for w_size, stride in [(120, 10)]: trendlines = calc_trendlines(tmp, w_size, stride) if len(trendlines) == 0: continue trendline_feature = calc_trendline_feature(tmp, trendlines) print('{}-{} {} {} {}'.format(dt - timedelta(minutes=130), dt, trendline_feature['high_a'], trendline_feature['high_b'], trendline_feature['high_diff'])) features.loc[features.index == end_dt, 'trendline_high_a_{}'.format(w_size)] = trendline_feature['high_a'] features.loc[features.index == end_dt, 'trendline_high_b_{}'.format(w_size)] = trendline_feature['high_b'] features.loc[features.index == end_dt, 'trendline_high_diff_{}'.format(w_size)] = trendline_feature['high_diff'] features.loc[features.index == end_dt, 'trendline_low_a_{}'.format(w_size)] = trendline_feature['low_a'] features.loc[features.index == end_dt, 'trendline_low_b_{}'.format(w_size)] = trendline_feature['low_b'] features.loc[features.index == end_dt, 'trendline_low_diff_{}'.format(w_size)] = trendline_feature['low_diff'] ''' window = 5 features_ext = features for w in range(window): tmp = features.shift(periods=60 * (w + 1), freq='S') tmp.columns = [c + '_' + str(w + 1) + 'w' for c in features.columns] features_ext = pd.concat([features_ext, tmp], axis=1) if candle_type == '5min': features_ext = features_ext.shift(periods=300, freq='S') features_ext = features_ext.fillna(method='ffill') features_ext = features_ext[features_ext.index == target_dt] return features_ext
def technical(df): open = df['open'].values close = df['close'].values high = df['high'].values low = df['low'].values volume = df['volume'].values # define the technical analysis matrix retn = np.array([ tb.MA(close, timeperiod=60), # 1 tb.MA(close, timeperiod=120), # 2 tb.ADX(high, low, close, timeperiod=14), # 3 tb.ADXR(high, low, close, timeperiod=14), # 4 tb.MACD(close, fastperiod=12, slowperiod=26, signalperiod=9)[0], # 5 tb.RSI(close, timeperiod=14), # 6 tb.BBANDS(close, timeperiod=5, nbdevup=2, nbdevdn=2, matype=0)[0], # 7 tb.BBANDS(close, timeperiod=5, nbdevup=2, nbdevdn=2, matype=0)[1], # 8 tb.BBANDS(close, timeperiod=5, nbdevup=2, nbdevdn=2, matype=0)[2], # 9 tb.AD(high, low, close, volume), # 10 tb.ATR(high, low, close, timeperiod=14), # 11 tb.HT_DCPERIOD(close), # 12 tb.CDL2CROWS(open, high, low, close), # 13 tb.CDL3BLACKCROWS(open, high, low, close), # 14 tb.CDL3INSIDE(open, high, low, close), # 15 tb.CDL3LINESTRIKE(open, high, low, close), # 16 tb.CDL3OUTSIDE(open, high, low, close), # 17 tb.CDL3STARSINSOUTH(open, high, low, close), # 18 tb.CDL3WHITESOLDIERS(open, high, low, close), # 19 tb.CDLABANDONEDBABY(open, high, low, close, penetration=0), # 20 tb.CDLADVANCEBLOCK(open, high, low, close), # 21 tb.CDLBELTHOLD(open, high, low, close), # 22 tb.CDLBREAKAWAY(open, high, low, close), # 23 tb.CDLCLOSINGMARUBOZU(open, high, low, close), # 24 tb.CDLCONCEALBABYSWALL(open, high, low, close), # 25 tb.CDLCOUNTERATTACK(open, high, low, close), # 26 tb.CDLDARKCLOUDCOVER(open, high, low, close, penetration=0), # 27 tb.CDLDOJI(open, high, low, close), # 28 tb.CDLDOJISTAR(open, high, low, close), # 29 tb.CDLDRAGONFLYDOJI(open, high, low, close), # 30 tb.CDLENGULFING(open, high, low, close), # 31 tb.CDLEVENINGDOJISTAR(open, high, low, close, penetration=0), # 32 tb.CDLEVENINGSTAR(open, high, low, close, penetration=0), # 33 tb.CDLGAPSIDESIDEWHITE(open, high, low, close), # 34 tb.CDLGRAVESTONEDOJI(open, high, low, close), # 35 tb.CDLHAMMER(open, high, low, close), # 36 tb.CDLHANGINGMAN(open, high, low, close), # 37 tb.CDLHARAMI(open, high, low, close), # 38 tb.CDLHARAMICROSS(open, high, low, close), # 39 tb.CDLHIGHWAVE(open, high, low, close), # 40 tb.CDLHIKKAKE(open, high, low, close), # 41 tb.CDLHIKKAKEMOD(open, high, low, close), # 42 tb.CDLHOMINGPIGEON(open, high, low, close), # 43 tb.CDLIDENTICAL3CROWS(open, high, low, close), # 44 tb.CDLINNECK(open, high, low, close), # 45 tb.CDLINVERTEDHAMMER(open, high, low, close), # 46 tb.CDLKICKING(open, high, low, close), # 47 tb.CDLKICKINGBYLENGTH(open, high, low, close), # 48 tb.CDLLADDERBOTTOM(open, high, low, close), # 49 tb.CDLLONGLEGGEDDOJI(open, high, low, close), # 50 tb.CDLLONGLINE(open, high, low, close), # 51 tb.CDLMARUBOZU(open, high, low, close), # 52 tb.CDLMATCHINGLOW(open, high, low, close), # 53 tb.CDLMATHOLD(open, high, low, close, penetration=0), # 54 tb.CDLMORNINGDOJISTAR(open, high, low, close, penetration=0), # 55 tb.CDLMORNINGSTAR(open, high, low, close, penetration=0), # 56 tb.CDLONNECK(open, high, low, close), # 57 tb.CDLPIERCING(open, high, low, close), # 58 tb.CDLRICKSHAWMAN(open, high, low, close), # 59 tb.CDLRISEFALL3METHODS(open, high, low, close), # 60 tb.CDLSEPARATINGLINES(open, high, low, close), # 61 tb.CDLSHOOTINGSTAR(open, high, low, close), # 62 tb.CDLSHORTLINE(open, high, low, close), # 63 tb.CDLSPINNINGTOP(open, high, low, close), # 64 tb.CDLSTALLEDPATTERN(open, high, low, close), # 65 tb.CDLSTICKSANDWICH(open, high, low, close), # 66 tb.CDLTAKURI(open, high, low, close), # 67 tb.CDLTASUKIGAP(open, high, low, close), # 68 tb.CDLTHRUSTING(open, high, low, close), # 69 tb.CDLTRISTAR(open, high, low, close), # 70 tb.CDLUNIQUE3RIVER(open, high, low, close), # 71 tb.CDLUPSIDEGAP2CROWS(open, high, low, close), # 72 tb.CDLXSIDEGAP3METHODS(open, high, low, close) # 73 ]).T return retn
def built_in_scanners(ticker="SPY"): data = yf.download(ticker, start="2020-01-01", end=datetime.today().strftime('%Y-%m-%d')) open = data['Open'] high = data['High'] low = data['Low'] close = data['Close'] # The library's functions runs on yesterday's date, so subtract 1 from today's date. current_date = datetime.today() - timedelta(days=1) current_date_formatted = current_date.strftime('%Y-%m-%d') two_crows = talib.CDL2CROWS(open, high, low, close)[current_date_formatted] three_black_crows = talib.CDL3BLACKCROWS(open, high, low, close)[current_date_formatted] three_inside = talib.CDL3INSIDE(open, high, low, close)[current_date_formatted] three_line_strike = talib.CDL3LINESTRIKE(open, high, low, close)[current_date_formatted] three_outside = talib.CDL3OUTSIDE(open, high, low, close)[current_date_formatted] three_stars_in_south = talib.CDL3STARSINSOUTH( open, high, low, close)[current_date_formatted] three_white_soldiers = talib.CDL3WHITESOLDIERS( open, high, low, close)[current_date_formatted] abandoned_baby = talib.CDLABANDONEDBABY(open, high, low, close)[current_date_formatted] advance_block = talib.CDLADVANCEBLOCK(open, high, low, close)[current_date_formatted] belt_hold = talib.CDLBELTHOLD(open, high, low, close)[current_date_formatted] breakaway = talib.CDLBREAKAWAY(open, high, low, close)[current_date_formatted] closing_marubozu = talib.CDLCLOSINGMARUBOZU(open, high, low, close)[current_date_formatted] concealing_baby_swallow = talib.CDLCONCEALBABYSWALL( open, high, low, close)[current_date_formatted] talib.CDLCOUNTERATTACK(open, high, low, close)[current_date_formatted] dark_cloud_cover = talib.CDLDARKCLOUDCOVER( open, high, low, close, penetration=0)[current_date_formatted] doji = talib.CDLDOJI(open, high, low, close)[current_date_formatted] doji_star = talib.CDLDOJISTAR(open, high, low, close)[current_date_formatted] dragonfly_doji = talib.CDLDRAGONFLYDOJI(open, high, low, close)[current_date_formatted] engulfing_candle = talib.CDLENGULFING(open, high, low, close)[current_date_formatted] evening_doji_star = talib.CDLEVENINGDOJISTAR( open, high, low, close, penetration=0)[current_date_formatted] evening_star = talib.CDLEVENINGSTAR(open, high, low, close, penetration=0)[current_date_formatted] gaps = talib.CDLGAPSIDESIDEWHITE(open, high, low, close)[current_date_formatted] gravestone_doji = talib.CDLGRAVESTONEDOJI(open, high, low, close)[current_date_formatted] hammer = talib.CDLHAMMER(open, high, low, close)[current_date_formatted] hanging_man = talib.CDLHANGINGMAN(open, high, low, close)[current_date_formatted] harami = talib.CDLHARAMI(open, high, low, close)[current_date_formatted] harami_cross = talib.CDLHARAMICROSS(open, high, low, close)[current_date_formatted] high_wave = talib.CDLHIGHWAVE( open, high, low, close)[current_date_formatted][talib.CDLHIGHWAVE != 0] hikkake = talib.CDLHIKKAKE(open, high, low, close)[current_date_formatted] hikkakemod = talib.CDLHIKKAKEMOD(open, high, low, close)[current_date_formatted] homing_pigeon = talib.CDLHOMINGPIGEON(open, high, low, close)[current_date_formatted] identical_three_crows = talib.CDLIDENTICAL3CROWS( open, high, low, close)[current_date_formatted] in_neck = talib.CDLINNECK(open, high, low, close)[current_date_formatted] inverted_hammer = talib.CDLINVERTEDHAMMER(open, high, low, close)[current_date_formatted] kicking = talib.CDLKICKING(open, high, low, close)[current_date_formatted] kicking_by_length = talib.CDLKICKINGBYLENGTH(open, high, low, close)[current_date_formatted] ladder_bottom = talib.CDLLADDERBOTTOM(open, high, low, close)[current_date_formatted] long_legged_doji = talib.CDLLONGLEGGEDDOJI(open, high, low, close)[current_date_formatted] long_line = talib.CDLLONGLINE(open, high, low, close)[current_date_formatted] marubozu = talib.CDLMARUBOZU(open, high, low, close)[current_date_formatted] matching_low = talib.CDLMATCHINGLOW(open, high, low, close)[current_date_formatted] mat_hold = talib.CDLMATHOLD(open, high, low, close, penetration=0)[current_date_formatted] morning_doji_star = talib.CDLMORNINGDOJISTAR( open, high, low, close, penetration=0)[current_date_formatted] morning_star = talib.CDLMORNINGSTAR(open, high, low, close, penetration=0)[current_date_formatted] on_neck = talib.CDLONNECK(open, high, low, close)[current_date_formatted] piercing = talib.CDLPIERCING(open, high, low, close)[current_date_formatted] rickshawman = talib.CDLRICKSHAWMAN(open, high, low, close)[current_date_formatted] rise_fall_3_methods = talib.CDLRISEFALL3METHODS( open, high, low, close)[current_date_formatted] separating_lines = talib.CDLSEPARATINGLINES(open, high, low, close)[current_date_formatted] shooting_star = talib.CDLSHOOTINGSTAR(open, high, low, close)[current_date_formatted] shortline = talib.CDLSHORTLINE(open, high, low, close)[current_date_formatted] spinning_top = talib.CDLSPINNINGTOP(open, high, low, close)[current_date_formatted] stalled_pattern = talib.CDLSTALLEDPATTERN(open, high, low, close)[current_date_formatted] stick_sandwich = talib.CDLSTICKSANDWICH(open, high, low, close)[current_date_formatted] takuri = talib.CDLTAKURI(open, high, low, close)[current_date_formatted] tasuki_gap = talib.CDLTASUKIGAP(open, high, low, close)[current_date_formatted] thrusting = talib.CDLTHRUSTING(open, high, low, close)[current_date_formatted] tristar = talib.CDLTRISTAR(open, high, low, close)[current_date_formatted] unique_three_river = talib.CDLUNIQUE3RIVER(open, high, low, close)[current_date_formatted] upside_gap_two_crows = talib.CDLUPSIDEGAP2CROWS( open, high, low, close)[current_date_formatted] upside_downside_gap_three_methods = talib.CDLXSIDEGAP3METHODS( open, high, low, close)[current_date_formatted] patterns = list(vars().keys())[7:] values = list(vars().values())[7:] for index in range(0, len(patterns)): if (values[index] != 0): print(patterns[index]) print(values[index])
def CDLHIGHWAVE(data, **kwargs): _check_talib_presence() popen, phigh, plow, pclose, pvolume = _extract_ohlc(data) return talib.CDLHIGHWAVE(popen, phigh, plow, pclose, **kwargs)
ohlc_df['CDLHAMMER'] = ta.CDLHAMMER(ohlc_df['open'], ohlc_df['high'], ohlc_df['low'], ohlc_df['close']) ohlc_df['CDLHANGINGMAN'] = ta.CDLHANGINGMAN( ohlc_df['open'], ohlc_df['high'], ohlc_df['low'], ohlc_df['close']) ohlc_df['CDLHARAMI'] = ta.CDLHARAMI(ohlc_df['open'], ohlc_df['high'], ohlc_df['low'], ohlc_df['close']) ohlc_df['CDLHARAMICROSS'] = ta.CDLHARAMICROSS( ohlc_df['open'], ohlc_df['high'], ohlc_df['low'], ohlc_df['close']) ohlc_df['CDLHIGHWAVE'] = ta.CDLHIGHWAVE(ohlc_df['open'], ohlc_df['high'], ohlc_df['low'], ohlc_df['close']) ohlc_df['CDLHIKKAKE'] = ta.CDLHIKKAKE(ohlc_df['open'], ohlc_df['high'], ohlc_df['low'], ohlc_df['close']) ohlc_df['CDLHIKKAKEMOD'] = ta.CDLHIKKAKEMOD( ohlc_df['open'], ohlc_df['high'], ohlc_df['low'], ohlc_df['close']) ohlc_df['CDLHOMINGPIGEON'] = ta.CDLHOMINGPIGEON( ohlc_df['open'], ohlc_df['high'], ohlc_df['low'], ohlc_df['close']) ohlc_df['CDLIDENTICAL3CROWS'] = ta.CDLIDENTICAL3CROWS( ohlc_df['open'], ohlc_df['high'], ohlc_df['low'], ohlc_df['close']) ohlc_df['CDLINNECK'] = ta.CDLINNECK(ohlc_df['open'],
CDLHAMMER_real = talib.CDLHAMMER(resorted['open'], resorted['high'], resorted['low'], resorted['close']) CDLHANGINGMAN_real = talib.CDLHANGINGMAN( resorted['open'], resorted['high'], resorted['low'], resorted['close']) CDLHARAMI_real = talib.CDLHARAMI(resorted['open'], resorted['high'], resorted['low'], resorted['close']) CDLHARAMICROSS_real = talib.CDLHARAMICROSS( resorted['open'], resorted['high'], resorted['low'], resorted['close']) CDLHIGHWAVE_real = talib.CDLHIGHWAVE(resorted['open'], resorted['high'], resorted['low'], resorted['close']) CDLHIKKAKE_real = talib.CDLHIKKAKE(resorted['open'], resorted['high'], resorted['low'], resorted['close']) CDLHIKKAKEMOD_real = talib.CDLHIKKAKEMOD( resorted['open'], resorted['high'], resorted['low'], resorted['close']) CDLHOMINGPIGEON_real = talib.CDLHOMINGPIGEON( resorted['open'], resorted['high'], resorted['low'], resorted['close']) CDLIDENTICAL3CROWS_real = talib.CDLIDENTICAL3CROWS( resorted['open'], resorted['high'], resorted['low'], resorted['close']) CDLINNECK_real = talib.CDLINNECK(resorted['open'],
def create_signal_dataframe(df_): o = np.array(df_['始値']) c = np.array(df_['終値']) l = np.array(df_['安値']) h = np.array(df_['高値']) df = df_.copy() df['CDL2CROWS'] = ta.CDL2CROWS(o, h, l, c) df['CDL3BLACKCROWS'] = ta.CDL3BLACKCROWS(o, h, l, c) df['CDL3INSIDE'] = ta.CDL3INSIDE(o, h, l, c) df['CDL3LINESTRIKE'] = ta.CDL3LINESTRIKE(o, h, l, c) df['CDL3OUTSIDE'] = ta.CDL3OUTSIDE(o, h, l, c) df['CDL3STARSINSOUTH'] = ta.CDL3STARSINSOUTH(o, h, l, c) df['CDL3WHITESOLDIERS'] = ta.CDL3WHITESOLDIERS(o, h, l, c) df['CDLABANDONEDBABY'] = ta.CDLABANDONEDBABY(o, h, l, c) df['CDLADVANCEBLOCK'] = ta.CDLADVANCEBLOCK(o, h, l, c) df['CDLBELTHOLD'] = ta.CDLBELTHOLD(o, h, l, c) df['CDLBREAKAWAY'] = ta.CDLBREAKAWAY(o, h, l, c) df['CDLCLOSINGMARUBOZU'] = ta.CDLCLOSINGMARUBOZU(o, h, l, c) df['CDLCONCEALBABYSWALL'] = ta.CDLCONCEALBABYSWALL(o, h, l, c) df['CDLCOUNTERATTACK'] = ta.CDLCOUNTERATTACK(o, h, l, c) df['CDLDARKCLOUDCOVER'] = ta.CDLDARKCLOUDCOVER(o, h, l, c) df['CDLDOJI'] = ta.CDLDOJI(o, h, l, c) df['CDLDOJISTAR'] = ta.CDLDOJISTAR(o, h, l, c) df['CDLDRAGONFLYDOJI'] = ta.CDLDRAGONFLYDOJI(o, h, l, c) df['CDLENGULFING'] = ta.CDLENGULFING(o, h, l, c) df['CDLEVENINGDOJISTAR'] = ta.CDLEVENINGDOJISTAR(o, h, l, c) df['CDLEVENINGSTAR'] = ta.CDLEVENINGSTAR(o, h, l, c) df['CDLGAPSIDESIDEWHITE'] = ta.CDLGAPSIDESIDEWHITE(o, h, l, c) df['CDLGRAVESTONEDOJI'] = ta.CDLGRAVESTONEDOJI(o, h, l, c) df['CDLHAMMER'] = ta.CDLHAMMER(o, h, l, c) df['CDLHANGINGMAN'] = ta.CDLHANGINGMAN(o, h, l, c) df['CDLHARAMI'] = ta.CDLHARAMI(o, h, l, c) df['CDLHARAMICROSS'] = ta.CDLHARAMICROSS(o, h, l, c) df['CDLHIGHWAVE'] = ta.CDLHIGHWAVE(o, h, l, c) df['CDLHIKKAKE'] = ta.CDLHIKKAKE(o, h, l, c) df['CDLHIKKAKEMOD'] = ta.CDLHIKKAKEMOD(o, h, l, c) df['CDLHOMINGPIGEON'] = ta.CDLHOMINGPIGEON(o, h, l, c) df['CDLIDENTICAL3CROWS'] = ta.CDLIDENTICAL3CROWS(o, h, l, c) df['CDLINNECK'] = ta.CDLINNECK(o, h, l, c) df['CDLINVERTEDHAMMER'] = ta.CDLINVERTEDHAMMER(o, h, l, c) df['CDLKICKING'] = ta.CDLKICKING(o, h, l, c) df['CDLKICKINGBYLENGTH'] = ta.CDLKICKINGBYLENGTH(o, h, l, c) df['CDLLADDERBOTTOM'] = ta.CDLLADDERBOTTOM(o, h, l, c) df['CDLLONGLEGGEDDOJI'] = ta.CDLLONGLEGGEDDOJI(o, h, l, c) df['CDLLONGLINE'] = ta.CDLLONGLINE(o, h, l, c) df['CDLMARUBOZU'] = ta.CDLMARUBOZU(o, h, l, c) df['CDLMATCHINGLOW'] = ta.CDLMATCHINGLOW(o, h, l, c) df['CDLMATHOLD'] = ta.CDLMATHOLD(o, h, l, c) df['CDLMORNINGDOJISTAR'] = ta.CDLMORNINGDOJISTAR(o, h, l, c) df['CDLMORNINGSTAR'] = ta.CDLMORNINGSTAR(o, h, l, c) df['CDLONNECK'] = ta.CDLONNECK(o, h, l, c) df['CDLPIERCING'] = ta.CDLPIERCING(o, h, l, c) df['CDLRICKSHAWMAN'] = ta.CDLRICKSHAWMAN(o, h, l, c) df['CDLRISEFALL3METHODS'] = ta.CDLRISEFALL3METHODS(o, h, l, c) df['CDLSEPARATINGLINES'] = ta.CDLSEPARATINGLINES(o, h, l, c) df['CDLSHOOTINGSTAR'] = ta.CDLSHOOTINGSTAR(o, h, l, c) df['CDLSHORTLINE'] = ta.CDLSHORTLINE(o, h, l, c) df['CDLSPINNINGTOP'] = ta.CDLSPINNINGTOP(o, h, l, c) df['CDLSTALLEDPATTERN'] = ta.CDLSTALLEDPATTERN(o, h, l, c) df['CDLSTICKSANDWICH'] = ta.CDLSTICKSANDWICH(o, h, l, c) df['CDLTAKURI'] = ta.CDLTAKURI(o, h, l, c) df['CDLTASUKIGAP'] = ta.CDLTASUKIGAP(o, h, l, c) df['CDLTHRUSTING'] = ta.CDLTHRUSTING(o, h, l, c) df['CDLTRISTAR'] = ta.CDLTRISTAR(o, h, l, c) df['CDLUNIQUE3RIVER'] = ta.CDLUNIQUE3RIVER(o, h, l, c) df['CDLUPSIDEGAP2CROWS'] = ta.CDLUPSIDEGAP2CROWS(o, h, l, c) df['CDLXSIDEGAP3METHODS'] = ta.CDLXSIDEGAP3METHODS(o, h, l, c) return df
def collectDATA(self, start_dt, end_dt, para_min, threshold): # 建立数据库连接,剔除已入库的部分 db = pymysql.connect(host='127.0.0.1', user='******', passwd='admin', db='stock', charset='utf8') cursor = db.cursor() if para_min == 'day': sql_done_set = "SELECT * FROM btc_day a where state_dt >= '%s' and state_dt <= '%s' order by state_dt asc" % ( start_dt, end_dt) else: sql_done_set = "SELECT * FROM btc_%smin a where state_dt >= '%s' and state_dt <= '%s' order by state_dt asc" % ( str(para_min), start_dt, end_dt) cursor.execute(sql_done_set) done_set = cursor.fetchall() if len(done_set) == 0: raise Exception self.date_seq = [] self.open_list = [] self.close_list = [] self.high_list = [] self.low_list = [] self.vol_list = [] self.amount_list = [] self.tor_list = [] self.vr_list = [] self.ma5_list = [] self.ma10_list = [] self.ma20_list = [] self.ma30_list = [] self.ma60_list = [] for i in range(len(done_set)): self.date_seq.append(done_set[i][0]) self.open_list.append(float(done_set[i][1])) self.close_list.append(float(done_set[i][2])) self.high_list.append(float(done_set[i][3])) self.low_list.append(float(done_set[i][4])) self.vol_list.append(float(done_set[i][6])) self.amount_list.append(float(done_set[i][5])) db.close() cdl_2crows = ta.CDL2CROWS(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_3blackcrows = ta.CDL3BLACKCROWS(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_3inside = ta.CDL3INSIDE(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_3linestrike = ta.CDL3LINESTRIKE(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_3outside = ta.CDL3OUTSIDE(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_3starsinsouth = ta.CDL3STARSINSOUTH(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_3whitesoldiers = ta.CDL3WHITESOLDIERS(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_abandonedbaby = ta.CDLABANDONEDBABY(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_advancedblock = ta.CDLADVANCEBLOCK(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_belthold = ta.CDLBELTHOLD(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_breakaway = ta.CDLBREAKAWAY(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_closing = ta.CDLCLOSINGMARUBOZU(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_conbaby = ta.CDLCONCEALBABYSWALL(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_counterattack = ta.CDLCOUNTERATTACK(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_darkcloud = ta.CDLDARKCLOUDCOVER(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_doji = ta.CDLDOJI(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_dojistar = ta.CDLDOJISTAR(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_dragondoji = ta.CDLDRAGONFLYDOJI(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_eng = ta.CDLENGULFING(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_evedoji = ta.CDLEVENINGDOJISTAR(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_evestar = ta.CDLEVENINGSTAR(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_gapside = ta.CDLGAPSIDESIDEWHITE(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_gravedoji = ta.CDLGRAVESTONEDOJI(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_hammer = ta.CDLHAMMER(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_hanging = ta.CDLHANGINGMAN(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_hara = ta.CDLHARAMI(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_haracross = ta.CDLHARAMICROSS(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_highwave = ta.CDLHIGHWAVE(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_hikk = ta.CDLHIKKAKE(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_hikkmod = ta.CDLHIKKAKEMOD(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_homing = ta.CDLHOMINGPIGEON(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_i3crows = ta.CDLIDENTICAL3CROWS(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_inneck = ta.CDLINNECK(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_inverhammer = ta.CDLINVERTEDHAMMER(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_kicking = ta.CDLKICKING(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_kicking2 = ta.CDLKICKINGBYLENGTH(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_ladder = ta.CDLLADDERBOTTOM(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_longdoji = ta.CDLLONGLEGGEDDOJI(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_longline = ta.CDLLONGLINE(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_marubo = ta.CDLMARUBOZU(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_matchinglow = ta.CDLMATCHINGLOW(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_mathold = ta.CDLMATHOLD(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_morningdoji = ta.CDLMORNINGDOJISTAR(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_morningstar = ta.CDLMORNINGSTAR(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_onneck = ta.CDLONNECK(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_pier = ta.CDLPIERCING(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_rick = ta.CDLRICKSHAWMAN(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_3methords = ta.CDLRISEFALL3METHODS(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_seprate = ta.CDLSEPARATINGLINES(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_shoot = ta.CDLSHOOTINGSTAR(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_shortcandle = ta.CDLSHORTLINE(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_spin = ta.CDLSPINNINGTOP(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_stalled = ta.CDLSTALLEDPATTERN(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_sandwich = ta.CDLSTICKSANDWICH(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_taku = ta.CDLTAKURI(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_takugap = ta.CDLTASUKIGAP(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_thrust = ta.CDLTHRUSTING(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_tristar = ta.CDLTRISTAR(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_uni = ta.CDLUNIQUE3RIVER(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_upgap = ta.CDLUPSIDEGAP2CROWS(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) cdl_xside = ta.CDLXSIDEGAP3METHODS(np.array(self.open_list), np.array(self.high_list), np.array(self.low_list), np.array(self.close_list)) self.data_train = [] self.data_target = [] self.data_target_onehot = [] for i in range(len(self.close_list) - 5): train = [ cdl_2crows[i], cdl_3blackcrows[i], cdl_3inside[i], cdl_3linestrike[i], cdl_3outside[i], cdl_3starsinsouth[i], cdl_3whitesoldiers[i], cdl_abandonedbaby[i], cdl_advancedblock[i], cdl_belthold[i], cdl_breakaway[i], cdl_closing[i], cdl_conbaby[i], cdl_counterattack[i], cdl_darkcloud[i], cdl_doji[i], cdl_dojistar[i], cdl_dragondoji[i], cdl_eng[i], cdl_evedoji[i], cdl_evestar[i], cdl_gapside[i], cdl_gravedoji[i], cdl_hammer[i], cdl_hanging[i], cdl_hara[i], cdl_haracross[i], cdl_highwave[i], cdl_hikk[i], cdl_hikkmod[i], cdl_homing[i], cdl_i3crows[i], cdl_inneck[i], cdl_inverhammer[i], cdl_kicking[i], cdl_kicking2[i], cdl_ladder[i], cdl_longdoji[i], cdl_longline[i], cdl_marubo[i], cdl_matchinglow[i], cdl_mathold[i], cdl_morningdoji[i], cdl_morningstar[i], cdl_onneck[i], cdl_pier[i], cdl_rick[i], cdl_3methords[i], cdl_seprate[i], cdl_shoot[i], cdl_shortcandle[i], cdl_spin[i], cdl_stalled[i], cdl_sandwich[i], cdl_taku[i], cdl_takugap[i], cdl_thrust[i], cdl_tristar[i], cdl_uni[i], cdl_upgap[i], cdl_xside[i] ] self.data_train.append(np.array(train)) # after_max_price = max(self.close_list[i+1:i + 5]) # after_min_price = min(self.close_list[i+1:i+5]) # if after_max_price / self.close_list[i] >= 1.01: # self.data_target.append(float(1.00)) # self.data_target_onehot.append([1,0,0]) # elif after_min_price / self.close_list[i] < 0.99: # self.data_target.append(float(-1.00)) # self.data_target_onehot.append([0,1,0]) # else: # self.data_target.append(float(0.00)) # self.data_target_onehot.append([0,0,1]) after_mean_price = np.array(self.close_list[i + 1:i + 5]).mean() if after_mean_price / self.close_list[i] > threshold: self.data_target.append(float(1.00)) self.data_target_onehot.append([1, 0, 0]) else: self.data_target.append(float(-1.00)) self.data_target_onehot.append([0, 1, 0]) self.cnt_pos = 0 self.cnt_pos = len([x for x in self.data_target if x == 1.00]) self.test_case = [] self.test_case = np.array([ cdl_2crows[-1], cdl_3blackcrows[-1], cdl_3inside[-1], cdl_3linestrike[-1], cdl_3outside[-1], cdl_3starsinsouth[-1], cdl_3whitesoldiers[-1], cdl_abandonedbaby[-1], cdl_advancedblock[-1], cdl_belthold[-1], cdl_breakaway[-1], cdl_closing[-1], cdl_conbaby[-1], cdl_counterattack[-1], cdl_darkcloud[-1], cdl_doji[-1], cdl_dojistar[-1], cdl_dragondoji[-1], cdl_eng[-1], cdl_evedoji[-1], cdl_evestar[-1], cdl_gapside[-1], cdl_gravedoji[-1], cdl_hammer[-1], cdl_hanging[-1], cdl_hara[-1], cdl_haracross[-1], cdl_highwave[-1], cdl_hikk[-1], cdl_hikkmod[-1], cdl_homing[-1], cdl_i3crows[-1], cdl_inneck[-1], cdl_inverhammer[-1], cdl_kicking[-1], cdl_kicking2[-1], cdl_ladder[-1], cdl_longdoji[-1], cdl_longline[-1], cdl_marubo[-1], cdl_matchinglow[-1], cdl_mathold[-1], cdl_morningdoji[-1], cdl_morningstar[-1], cdl_onneck[-1], cdl_pier[-1], cdl_rick[-1], cdl_3methords[-1], cdl_seprate[-1], cdl_shoot[-1], cdl_shortcandle[-1], cdl_spin[-1], cdl_stalled[-1], cdl_sandwich[-1], cdl_taku[-1], cdl_takugap[-1], cdl_thrust[-1], cdl_tristar[-1], cdl_uni[-1], cdl_upgap[-1], cdl_xside[-1] ]) self.data_train = np.array(self.data_train) self.data_target = np.array(self.data_target)
def add_indicator(data): open = data.Open high = data.High low = data.Low close = data.Close volume = data.Volume data['CDL2CROWS'] = talib.CDL2CROWS(open, high, low, close) data['CDL3BLACKCROWS'] = talib.CDL3BLACKCROWS(open, high, low, close) data['CDL3INSIDE'] = talib.CDL3INSIDE(open, high, low, close) data['CDL3LINESTRIKE'] = talib.CDL3LINESTRIKE(open, high, low, close) data['CDL3OUTSIDE'] = talib.CDL3OUTSIDE(open, high, low, close) data['CDL3STARSINSOUTH'] = talib.CDL3STARSINSOUTH(open, high, low, close) data['CDL3WHITESOLDIERS'] = talib.CDL3WHITESOLDIERS(open, high, low, close) data['CDLABANDONEDBABY'] = talib.CDLABANDONEDBABY(open, high, low, close, penetration=0) data['CDLADVANCEBLOCK'] = talib.CDLADVANCEBLOCK(open, high, low, close) data['CDLBELTHOLD'] = talib.CDLBELTHOLD(open, high, low, close) data['CDLBREAKAWAY'] = talib.CDLBREAKAWAY(open, high, low, close) data['CDLCLOSINGMARUBOZU'] = talib.CDLCLOSINGMARUBOZU( open, high, low, close) data['CDLCONCEALBABYSWALL'] = talib.CDLCONCEALBABYSWALL( open, high, low, close) data['CDLCOUNTERATTACK'] = talib.CDLCOUNTERATTACK(open, high, low, close) data['CDLDARKCLOUDCOVER'] = talib.CDLDARKCLOUDCOVER(open, high, low, close, penetration=0) data['CDLDOJI'] = talib.CDLDOJI(open, high, low, close) data['CDLDOJISTAR'] = talib.CDLDOJISTAR(open, high, low, close) data['CDLDRAGONFLYDOJI'] = talib.CDLDRAGONFLYDOJI(open, high, low, close) data['CDLENGULFING'] = talib.CDLENGULFING(open, high, low, close) data['CDLEVENINGDOJISTAR'] = talib.CDLEVENINGDOJISTAR(open, high, low, close, penetration=0) data['CDLEVENINGSTAR'] = talib.CDLEVENINGSTAR(open, high, low, close, penetration=0) data['CDLGAPSIDESIDEWHITE'] = talib.CDLGAPSIDESIDEWHITE( open, high, low, close) data['CDLGRAVESTONEDOJI'] = talib.CDLGRAVESTONEDOJI(open, high, low, close) data['CDLHAMMER'] = talib.CDLHAMMER(open, high, low, close) data['CDLHANGINGMAN'] = talib.CDLHANGINGMAN(open, high, low, close) data['CDLHARAMI'] = talib.CDLHARAMI(open, high, low, close) data['CDLHARAMICROSS'] = talib.CDLHARAMICROSS(open, high, low, close) data['CDLHIGHWAVE'] = talib.CDLHIGHWAVE(open, high, low, close) data['CDLHIKKAKE'] = talib.CDLHIKKAKE(open, high, low, close) data['CDLHIKKAKEMOD'] = talib.CDLHIKKAKEMOD(open, high, low, close) data['CDLHOMINGPIGEON'] = talib.CDLHOMINGPIGEON(open, high, low, close) data['CDLIDENTICAL3CROWS'] = talib.CDLIDENTICAL3CROWS( open, high, low, close) data['CDLINNECK'] = talib.CDLINNECK(open, high, low, close) data['CDLINVERTEDHAMMER'] = talib.CDLINVERTEDHAMMER(open, high, low, close) data['CDLKICKING'] = talib.CDLKICKING(open, high, low, close) data['CDLKICKINGBYLENGTH'] = talib.CDLKICKINGBYLENGTH( open, high, low, close) data['CDLLADDERBOTTOM'] = talib.CDLLADDERBOTTOM(open, high, low, close) data['CDLLONGLEGGEDDOJI'] = talib.CDLLONGLEGGEDDOJI(open, high, low, close) data['CDLLONGLINE'] = talib.CDLLONGLINE(open, high, low, close) data['CDLMARUBOZU'] = talib.CDLMARUBOZU(open, high, low, close) data['CDLMATCHINGLOW'] = talib.CDLMATCHINGLOW(open, high, low, close) data['CDLMATHOLD'] = talib.CDLMATHOLD(open, high, low, close, penetration=0) data['CDLMORNINGDOJISTAR'] = talib.CDLMORNINGDOJISTAR(open, high, low, close, penetration=0) data['CDLMORNINGSTAR'] = talib.CDLMORNINGSTAR(open, high, low, close, penetration=0) data['CDLONNECK'] = talib.CDLONNECK(open, high, low, close) data['CDLPIERCING'] = talib.CDLPIERCING(open, high, low, close) data['CDLRICKSHAWMAN'] = talib.CDLRICKSHAWMAN(open, high, low, close) data['CDLRISEFALL3METHODS'] = talib.CDLRISEFALL3METHODS( open, high, low, close) data['CDLSEPARATINGLINES'] = talib.CDLSEPARATINGLINES( open, high, low, close) data['CDLSHOOTINGSTAR'] = talib.CDLSHOOTINGSTAR(open, high, low, close) data['CDLSHORTLINE'] = talib.CDLSHORTLINE(open, high, low, close) data['CDLSPINNINGTOP'] = talib.CDLSPINNINGTOP(open, high, low, close) data['CDLSTALLEDPATTERN'] = talib.CDLSTALLEDPATTERN(open, high, low, close) data['CDLSTICKSANDWICH'] = talib.CDLSTICKSANDWICH(open, high, low, close) data['CDLTAKURI'] = talib.CDLTAKURI(open, high, low, close) data['CDLTASUKIGAP'] = talib.CDLTASUKIGAP(open, high, low, close) data['CDLTHRUSTING'] = talib.CDLTHRUSTING(open, high, low, close) data['CDLTRISTAR'] = talib.CDLTRISTAR(open, high, low, close) data['CDLUNIQUE3RIVER'] = talib.CDLUNIQUE3RIVER(open, high, low, close) data['CDLUPSIDEGAP2CROWS'] = talib.CDLUPSIDEGAP2CROWS( open, high, low, close) data['CDLXSIDEGAP3METHODS'] = talib.CDLXSIDEGAP3METHODS( open, high, low, close) # data['ADX'] = talib.ADX(high, low, close, timeperiod=14) data['MACDFAS'], data['MACDSLO'], data['MACDSIGNA'] = talib.MACD( close, fastperiod=12, slowperiod=26, signalperiod=9) data['3day MA'] = close.shift(1).rolling(window=3).mean() data['10day MA'] = close.shift(1).rolling(window=10).mean() data['30day MA'] = close.shift(1).rolling(window=30).mean() data['RSI_9'] = talib.RSI(close.values, timeperiod=9) data['S_10'] = close.rolling(window=10).mean() data['Corr'] = close.rolling(window=10).corr(data['S_10']) data['Williams %R'] = talib.WILLR(data['High'].values, data['Low'].values, data['Close'].values, 7) return data
def CDLHIGHWAVE(self): integer = talib.CDLHIGHWAVE(self.open, self.high, self.low, self.close) return integer
cdlgravestonedoji = ta.CDLGRAVESTONEDOJI(openp, high, low, close) #CDLHAMMER - Hammer cdlhammer = ta.CDLHAMMER(openp, high, low, close) #CDLHANGINGMAN - Hanging Man cdlhangman = ta.CDLHANGINGMAN(openp, high, low, close) #CDLHARAMI - Harami Pattern cdlharami = ta.CDLHARAMI(openp, high, low, close) #CDLHARAMICROSS - Harami Cross Pattern cdlharamicross = ta.CDLHARAMICROSS(openp, high, low, close) #CDLHIGHWAVE - High-Wave Candle cdlhighwave = ta.CDLHIGHWAVE(openp, high, low, close) #CDLHIKKAKE - Hikkake Pattern cdlhikakke = ta.CDLHIKKAKE(openp, high, low, close) #CDLHIKKAKEMOD - Modified Hikkake Pattern cdlhikkakemod = ta.CDLHIKKAKEMOD(openp, high, low, close) #CDLHOMINGPIGEON - Homing Pigeon cdlhomingpigeon = ta.CDLHOMINGPIGEON(openp, high, low, close) #CDLIDENTICAL3CROWS - Identical Three Crows cdlidentical3crows = ta.CDLIDENTICAL3CROWS(openp, high, low, close) #CDLINNECK - In-Neck Pattern cdlinneck = ta.CDLINNECK(openp, high, low, close)
def ta(name, price_h, price_l, price_c, price_v, price_o): # function 'MAX'/'MAXINDEX'/'MIN'/'MININDEX'/'MINMAX'/'MINMAXINDEX'/'SUM' is missing if name == 'AD': return talib.AD(np.array(price_h), np.array(price_l), np.array(price_c), np.asarray(price_v, dtype='float')) if name == 'ADOSC': return talib.ADOSC(np.array(price_h), np.array(price_l), np.array(price_c), np.asarray(price_v, dtype='float'), fastperiod=2, slowperiod=10) if name == 'ADX': return talib.ADX(np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float'), timeperiod=14) if name == 'ADXR': return talib.ADXR(np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float'), timeperiod=14) if name == 'APO': return talib.APO(np.asarray(price_c, dtype='float'), fastperiod=12, slowperiod=26, matype=0) if name == 'AROON': AROON_DWON, AROON2_UP = talib.AROON(np.array(price_h), np.asarray(price_l, dtype='float'), timeperiod=90) return (AROON_DWON, AROON2_UP) if name == 'AROONOSC': return talib.AROONOSC(np.array(price_h), np.asarray(price_l, dtype='float'), timeperiod=14) if name == 'ATR': return talib.ATR(np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float'), timeperiod=14) if name == 'AVGPRICE': return talib.AVGPRICE(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'BBANDS': BBANDS1, BBANDS2, BBANDS3 = talib.BBANDS(np.asarray(price_c, dtype='float'), matype=MA_Type.T3) return BBANDS1 if name == 'BETA': return talib.BETA(np.array(price_h), np.asarray(price_l, dtype='float'), timeperiod=5) if name == 'BOP': return talib.BOP(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CCI': return talib.CCI(np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float'), timeperiod=14) if name == 'CDL2CROWS': return talib.CDL2CROWS(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDL3BLACKCROWS': return talib.CDL3BLACKCROWS(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDL3INSIDE': return talib.CDL3INSIDE(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDL3LINESTRIKE': return talib.CDL3LINESTRIKE(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDL3OUTSIDE': return talib.CDL3OUTSIDE(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDL3STARSINSOUTH': return talib.CDL3STARSINSOUTH(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDL3WHITESOLDIERS': return talib.CDL3WHITESOLDIERS(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLABANDONEDBABY': return talib.CDLABANDONEDBABY(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float'), penetration=0) if name == 'CDLADVANCEBLOCK': return talib.CDLADVANCEBLOCK(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLBELTHOLD': return talib.CDLBELTHOLD(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLBREAKAWAY': return talib.CDLBREAKAWAY(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLCLOSINGMARUBOZU': return talib.CDLCLOSINGMARUBOZU(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLCONCEALBABYSWALL': return talib.CDLCONCEALBABYSWALL(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLCOUNTERATTACK': return talib.CDLCOUNTERATTACK(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLDARKCLOUDCOVER': return talib.CDLDARKCLOUDCOVER(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float'), penetration=0) if name == 'CDLDOJI': return talib.CDLDOJI(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLDOJISTAR': return talib.CDLDOJISTAR(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLDRAGONFLYDOJI': return talib.CDLDRAGONFLYDOJI(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLENGULFING': return talib.CDLENGULFING(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLEVENINGDOJISTAR': return talib.CDLEVENINGDOJISTAR(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float'), penetration=0) if name == 'CDLEVENINGSTAR': return talib.CDLEVENINGSTAR(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float'), penetration=0) if name == 'CDLGAPSIDESIDEWHITE': return talib.CDLGAPSIDESIDEWHITE(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLGRAVESTONEDOJI': return talib.CDLGRAVESTONEDOJI(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLHAMMER': return talib.CDLHAMMER(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLHANGINGMAN': return talib.CDLHANGINGMAN(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLHARAMI': return talib.CDLHARAMI(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLHARAMICROSS': return talib.CDLHARAMICROSS(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLHIGHWAVE': return talib.CDLHIGHWAVE(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLHIKKAKE': return talib.CDLHIKKAKE(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLHIKKAKEMOD': return talib.CDLHIKKAKEMOD(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLHOMINGPIGEON': return talib.CDLHOMINGPIGEON(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLIDENTICAL3CROWS': return talib.CDLIDENTICAL3CROWS(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLINNECK': return talib.CDLINNECK(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLINVERTEDHAMMER': return talib.CDLINVERTEDHAMMER(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLKICKING': return talib.CDLKICKING(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLKICKINGBYLENGTH': return talib.CDLKICKINGBYLENGTH(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLLADDERBOTTOM': return talib.CDLLADDERBOTTOM(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLLONGLEGGEDDOJI': return talib.CDLLONGLEGGEDDOJI(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLLONGLINE': return talib.CDLLONGLINE(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLMARUBOZU': return talib.CDLMARUBOZU(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLMATCHINGLOW': return talib.CDLMATCHINGLOW(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLMATHOLD': return talib.CDLMATHOLD(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLMORNINGDOJISTAR': return talib.CDLMORNINGDOJISTAR(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float'), penetration=0) if name == 'CDLMORNINGSTAR': return talib.CDLMORNINGSTAR(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float'), penetration=0) if name == 'CDLONNECK': return talib.CDLONNECK(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLPIERCING': return talib.CDLPIERCING(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLRICKSHAWMAN': return talib.CDLRICKSHAWMAN(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLRISEFALL3METHODS': return talib.CDLRISEFALL3METHODS(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLSEPARATINGLINES': return talib.CDLSEPARATINGLINES(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLSHOOTINGSTAR': return talib.CDLSHOOTINGSTAR(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLSHORTLINE': return talib.CDLSHORTLINE(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLSPINNINGTOP': return talib.CDLSPINNINGTOP(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLSTALLEDPATTERN': return talib.CDLSTALLEDPATTERN(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLSTICKSANDWICH': return talib.CDLSTICKSANDWICH(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLTAKURI': return talib.CDLTAKURI(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLTASUKIGAP': return talib.CDLTASUKIGAP(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLTHRUSTING': return talib.CDLTHRUSTING(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLTRISTAR': return talib.CDLTRISTAR(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLUNIQUE3RIVER': return talib.CDLUNIQUE3RIVER(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLUPSIDEGAP2CROWS': return talib.CDLUPSIDEGAP2CROWS(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CDLXSIDEGAP3METHODS': return talib.CDLXSIDEGAP3METHODS(np.array(price_o), np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'CMO': return talib.CMO(np.asarray(price_c, dtype='float'), timeperiod=14) if name == 'CORREL': return talib.CORREL(np.array(price_h), np.asarray(price_l, dtype='float'), timeperiod=30) if name == 'DEMA': return talib.DEMA(np.asarray(price_c, dtype='float'), timeperiod=30) if name == 'DX': return talib.DX(np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float'), timeperiod=14) if name == 'EMA': return talib.EMA(np.asarray(price_c, dtype='float'), timeperiod=30) if name == 'HT_DCPERIOD': return talib.HT_DCPERIOD(np.asarray(price_c, dtype='float')) if name == 'HT_DCPHASE': return talib.HT_DCPHASE(np.asarray(price_c, dtype='float')) if name == 'HT_PHASOR': HT_PHASOR1, HT_PHASOR2 = talib.HT_PHASOR( np.asarray(price_c, dtype='float') ) # use HT_PHASOR1 for the indication of up and down return HT_PHASOR1 if name == 'HT_SINE': HT_SINE1, HT_SINE2 = talib.HT_SINE(np.asarray(price_c, dtype='float')) return HT_SINE1 if name == 'HT_TRENDLINE': return talib.HT_TRENDLINE(np.asarray(price_c, dtype='float')) if name == 'HT_TRENDMODE': return talib.HT_TRENDMODE(np.asarray(price_c, dtype='float')) if name == 'KAMA': return talib.KAMA(np.asarray(price_c, dtype='float'), timeperiod=30) if name == 'LINEARREG': return talib.LINEARREG(np.asarray(price_c, dtype='float'), timeperiod=14) if name == 'LINEARREG_ANGLE': return talib.LINEARREG_ANGLE(np.asarray(price_c, dtype='float'), timeperiod=14) if name == 'LINEARREG_INTERCEPT': return talib.LINEARREG_INTERCEPT(np.asarray(price_c, dtype='float'), timeperiod=14) if name == 'LINEARREG_SLOPE': return talib.LINEARREG_SLOPE(np.asarray(price_c, dtype='float'), timeperiod=14) if name == 'MA': return talib.MA(np.asarray(price_c, dtype='float'), timeperiod=30, matype=0) if name == 'MACD': MACD1, MACD2, MACD3 = talib.MACD(np.asarray(price_c, dtype='float'), fastperiod=12, slowperiod=26, signalperiod=9) return MACD1 if nam == 'MACDEXT': return talib.MACDEXT(np.asarray(price_c, dtype='float'), fastperiod=12, fastmatype=0, slowperiod=26, slowmatype=0, signalperiod=9, signalmatype=0) if name == 'MACDFIX': MACDFIX1, MACDFIX2, MACDFIX3 = talib.MACDFIX(np.asarray(price_c, dtype='float'), signalperiod=9) return MACDFIX1 if name == 'MAMA': MAMA1, MAMA2 = talib.MAMA(np.asarray(price_c, dtype='float'), fastlimit=0, slowlimit=0) return MAMA1 if name == 'MEDPRICE': return talib.MEDPRICE(np.array(price_h), np.asarray(price_l, dtype='float')) if name == 'MINUS_DI': return talib.MINUS_DI(np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float'), timeperiod=14) if name == 'MINUS_DM': return talib.MINUS_DM(np.array(price_h), np.asarray(price_l, dtype='float'), timeperiod=14) if name == 'MOM': return talib.MOM(np.asarray(price_c, dtype='float'), timeperiod=10) if name == 'NATR': return talib.NATR(np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float'), timeperiod=14) if name == 'OBV': return talib.OBV(np.array(price_c), np.asarray(price_v, dtype='float')) if name == 'PLUS_DI': return talib.PLUS_DI(np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float'), timeperiod=14) if name == 'PLUS_DM': return talib.PLUS_DM(np.array(price_h), np.asarray(price_l, dtype='float'), timeperiod=14) if name == 'PPO': return talib.PPO(np.asarray(price_c, dtype='float'), fastperiod=12, slowperiod=26, matype=0) if name == 'ROC': return talib.ROC(np.asarray(price_c, dtype='float'), timeperiod=10) if name == 'ROCP': return talib.ROCP(np.asarray(price_c, dtype='float'), timeperiod=10) if name == 'ROCR100': return talib.ROCR100(np.asarray(price_c, dtype='float'), timeperiod=10) if name == 'RSI': return talib.RSI(np.asarray(price_c, dtype='float'), timeperiod=14) if name == 'SAR': return talib.SAR(np.array(price_h), np.asarray(price_l, dtype='float'), acceleration=0, maximum=0) if name == 'SAREXT': return talib.SAREXT(np.array(price_h), np.asarray(price_l, dtype='float'), startvalue=0, offsetonreverse=0, accelerationinitlong=0, accelerationlong=0, accelerationmaxlong=0, accelerationinitshort=0, accelerationshort=0, accelerationmaxshort=0) if name == 'SMA': return talib.SMA(np.asarray(price_c, dtype='float'), timeperiod=30) if name == 'STDDEV': return talib.STDDEV(np.asarray(price_c, dtype='float'), timeperiod=5, nbdev=1) if name == 'STOCH': STOCH1, STOCH2 = talib.STOCH(np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float'), fastk_period=5, slowk_period=3, slowk_matype=0, slowd_period=3, slowd_matype=0) return STOCH1 if name == 'STOCHF': STOCHF1, STOCHF2 = talib.STOCHF(np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float'), fastk_period=5, fastd_period=3, fastd_matype=0) return STOCHF1 if name == 'STOCHRSI': STOCHRSI1, STOCHRSI2 = talib.STOCHRSI(np.asarray(price_c, dtype='float'), timeperiod=14, fastk_period=5, fastd_period=3, fastd_matype=0) return STOCHRSI1 if name == 'T3': return talib.T3(np.asarray(price_c, dtype='float'), timeperiod=5, vfactor=0) if name == 'TEMA': return talib.TEMA(np.asarray(price_c, dtype='float'), timeperiod=30) if name == 'TRANGE': return talib.TRANGE(np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'TRIMA': return talib.TRIMA(np.asarray(price_c, dtype='float'), timeperiod=30) if name == 'TRIX': return talib.TRIX(np.asarray(price_c, dtype='float'), timeperiod=30) if name == 'TSF': return talib.TSF(np.asarray(price_c, dtype='float'), timeperiod=14) if name == 'TYPPRICE': return talib.TYPPRICE(np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'ULTOSC': return talib.ULTOSC(np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float'), timeperiod1=7, timeperiod2=14, timeperiod3=28) if name == 'VAR': return talib.VAR(np.asarray(price_c, dtype='float'), timeperiod=5, nbdev=1) if name == 'WCLPRICE': return talib.WCLPRICE(np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float')) if name == 'WILLR': return talib.WILLR(np.array(price_h), np.array(price_l), np.asarray(price_c, dtype='float'), timeperiod=14) if name == 'WMA': return talib.WMA(np.asarray(price_c, dtype='float'), timeperiod=30)
def add_ta_features(df, ta_settings): """Add technial analysis features from typical financial dataset that typically include columns such as "open", "high", "low", "price" and "volume". http://mrjbq7.github.io/ta-lib/ Args: df(pandas.DataFrame): original DataFrame. ta_settings(dict): configuration. Returns: pandas.DataFrame: DataFrame with new features included. """ open = df['open'] high = df['high'] low = df['low'] close = df['price'] volume = df['volume'] if ta_settings['overlap']: df['ta_overlap_bbands_upper'], df['ta_overlap_bbands_middle'], df[ 'ta_overlap_bbands_lower'] = ta.BBANDS(close, timeperiod=5, nbdevup=2, nbdevdn=2, matype=0) df['ta_overlap_dema'] = ta.DEMA( close, timeperiod=15) # NOTE: Changed to avoid a lot of Nan values df['ta_overlap_ema'] = ta.EMA(close, timeperiod=30) df['ta_overlap_kama'] = ta.KAMA(close, timeperiod=30) df['ta_overlap_ma'] = ta.MA(close, timeperiod=30, matype=0) df['ta_overlap_mama_mama'], df['ta_overlap_mama_fama'] = ta.MAMA(close) period = np.random.randint(10, 20, size=len(close)).astype(float) df['ta_overlap_mavp'] = ta.MAVP(close, period, minperiod=2, maxperiod=30, matype=0) df['ta_overlap_midpoint'] = ta.MIDPOINT(close, timeperiod=14) df['ta_overlap_midprice'] = ta.MIDPRICE(high, low, timeperiod=14) df['ta_overlap_sar'] = ta.SAR(high, low, acceleration=0, maximum=0) df['ta_overlap_sarext'] = ta.SAREXT(high, low, startvalue=0, offsetonreverse=0, accelerationinitlong=0, accelerationlong=0, accelerationmaxlong=0, accelerationinitshort=0, accelerationshort=0, accelerationmaxshort=0) df['ta_overlap_sma'] = ta.SMA(close, timeperiod=30) df['ta_overlap_t3'] = ta.T3(close, timeperiod=5, vfactor=0) df['ta_overlap_tema'] = ta.TEMA( close, timeperiod=12) # NOTE: Changed to avoid a lot of Nan values df['ta_overlap_trima'] = ta.TRIMA(close, timeperiod=30) df['ta_overlap_wma'] = ta.WMA(close, timeperiod=30) # NOTE: Commented to avoid a lot of Nan values # df['ta_overlap_ht_trendline'] = ta.HT_TRENDLINE(close) if ta_settings['momentum']: df['ta_momentum_adx'] = ta.ADX(high, low, close, timeperiod=14) df['ta_momentum_adxr'] = ta.ADXR(high, low, close, timeperiod=14) df['ta_momentum_apo'] = ta.APO(close, fastperiod=12, slowperiod=26, matype=0) df['ta_momentum_aroondown'], df['ta_momentum_aroonup'] = ta.AROON( high, low, timeperiod=14) df['ta_momentum_aroonosc'] = ta.AROONOSC(high, low, timeperiod=14) df['ta_momentum_bop'] = ta.BOP(open, high, low, close) df['ta_momentum_cci'] = ta.CCI(high, low, close, timeperiod=14) df['ta_momentum_cmo'] = ta.CMO(close, timeperiod=14) df['ta_momentum_dx'] = ta.DX(high, low, close, timeperiod=14) df['ta_momentum_macd_macd'], df['ta_momentum_macd_signal'], df[ 'ta_momentum_macd_hist'] = ta.MACD(close, fastperiod=12, slowperiod=26, signalperiod=9) df['ta_momentum_macdext_macd'], df['ta_momentum_macdext_signal'], df[ 'ta_momentum_macdext_hist'] = ta.MACDEXT(close, fastperiod=12, fastmatype=0, slowperiod=26, slowmatype=0, signalperiod=9, signalmatype=0) df['ta_momentum_macdfix_macd'], df['ta_momentum_macdfix_signal'], df[ 'ta_momentum_macdfix_hist'] = ta.MACDFIX(close, signalperiod=9) df['ta_momentum_mfi'] = ta.MFI(high, low, close, volume, timeperiod=14) df['ta_momentum_minus_di'] = ta.MINUS_DI(high, low, close, timeperiod=14) df['ta_momentum_minus_dm'] = ta.MINUS_DM(high, low, timeperiod=14) df['ta_momentum_mom'] = ta.MOM(close, timeperiod=10) df['ta_momentum_plus_di'] = ta.PLUS_DI(high, low, close, timeperiod=14) df['ta_momentum_plus_dm'] = ta.PLUS_DM(high, low, timeperiod=14) df['ta_momentum_ppo'] = ta.PPO(close, fastperiod=12, slowperiod=26, matype=0) df['ta_momentum_roc'] = ta.ROC(close, timeperiod=10) df['ta_momentum_rocp'] = ta.ROCP(close, timeperiod=10) df['ta_momentum_rocr'] = ta.ROCR(close, timeperiod=10) df['ta_momentum_rocr100'] = ta.ROCR100(close, timeperiod=10) df['ta_momentum_rsi'] = ta.RSI(close, timeperiod=14) df['ta_momentum_slowk'], df['ta_momentum_slowd'] = ta.STOCH( high, low, close, fastk_period=5, slowk_period=3, slowk_matype=0, slowd_period=3, slowd_matype=0) df['ta_momentum_fastk'], df['ta_momentum_fastd'] = ta.STOCHF( high, low, close, fastk_period=5, fastd_period=3, fastd_matype=0) df['ta_momentum_fastk'], df['ta_momentum_fastd'] = ta.STOCHRSI( close, timeperiod=14, fastk_period=5, fastd_period=3, fastd_matype=0) df['ta_momentum_trix'] = ta.TRIX( close, timeperiod=12) # NOTE: Changed to avoid a lot of Nan values df['ta_momentum_ultosc'] = ta.ULTOSC(high, low, close, timeperiod1=7, timeperiod2=14, timeperiod3=28) df['ta_momentum_willr'] = ta.WILLR(high, low, close, timeperiod=14) if ta_settings['volume']: df['ta_volume_ad'] = ta.AD(high, low, close, volume) df['ta_volume_adosc'] = ta.ADOSC(high, low, close, volume, fastperiod=3, slowperiod=10) df['ta_volume_obv'] = ta.OBV(close, volume) if ta_settings['volatility']: df['ta_volatility_atr'] = ta.ATR(high, low, close, timeperiod=14) df['ta_volatility_natr'] = ta.NATR(high, low, close, timeperiod=14) df['ta_volatility_trange'] = ta.TRANGE(high, low, close) if ta_settings['price']: df['ta_price_avgprice'] = ta.AVGPRICE(open, high, low, close) df['ta_price_medprice'] = ta.MEDPRICE(high, low) df['ta_price_typprice'] = ta.TYPPRICE(high, low, close) df['ta_price_wclprice'] = ta.WCLPRICE(high, low, close) if ta_settings['cycle']: df['ta_cycle_ht_dcperiod'] = ta.HT_DCPERIOD(close) df['ta_cycle_ht_phasor_inphase'], df[ 'ta_cycle_ht_phasor_quadrature'] = ta.HT_PHASOR(close) df['ta_cycle_ht_trendmode'] = ta.HT_TRENDMODE(close) # NOTE: Commented to avoid a lot of Nan values # df['ta_cycle_ht_dcphase'] = ta.HT_DCPHASE(close) # df['ta_cycle_ht_sine_sine'], df['ta_cycle_ht_sine_leadsine'] = ta.HT_SINE(close) if ta_settings['pattern']: df['ta_pattern_cdl2crows'] = ta.CDL2CROWS(open, high, low, close) df['ta_pattern_cdl3blackrows'] = ta.CDL3BLACKCROWS( open, high, low, close) df['ta_pattern_cdl3inside'] = ta.CDL3INSIDE(open, high, low, close) df['ta_pattern_cdl3linestrike'] = ta.CDL3LINESTRIKE( open, high, low, close) df['ta_pattern_cdl3outside'] = ta.CDL3OUTSIDE(open, high, low, close) df['ta_pattern_cdl3starsinsouth'] = ta.CDL3STARSINSOUTH( open, high, low, close) df['ta_pattern_cdl3whitesoldiers'] = ta.CDL3WHITESOLDIERS( open, high, low, close) df['ta_pattern_cdlabandonedbaby'] = ta.CDLABANDONEDBABY(open, high, low, close, penetration=0) df['ta_pattern_cdladvanceblock'] = ta.CDLADVANCEBLOCK( open, high, low, close) df['ta_pattern_cdlbelthold'] = ta.CDLBELTHOLD(open, high, low, close) df['ta_pattern_cdlbreakaway'] = ta.CDLBREAKAWAY(open, high, low, close) df['ta_pattern_cdlclosingmarubozu'] = ta.CDLCLOSINGMARUBOZU( open, high, low, close) df['ta_pattern_cdlconcealbabyswall'] = ta.CDLCONCEALBABYSWALL( open, high, low, close) df['ta_pattern_cdlcounterattack'] = ta.CDLCOUNTERATTACK( open, high, low, close) df['ta_pattern_cdldarkcloudcover'] = ta.CDLDARKCLOUDCOVER( open, high, low, close, penetration=0) df['ta_pattern_cdldoji'] = ta.CDLDOJI(open, high, low, close) df['ta_pattern_cdldojistar'] = ta.CDLDOJISTAR(open, high, low, close) df['ta_pattern_cdldragonflydoji'] = ta.CDLDRAGONFLYDOJI( open, high, low, close) df['ta_pattern_cdlengulfing'] = ta.CDLENGULFING(open, high, low, close) df['ta_pattern_cdleveningdojistar'] = ta.CDLEVENINGDOJISTAR( open, high, low, close, penetration=0) df['ta_pattern_cdleveningstar'] = ta.CDLEVENINGSTAR(open, high, low, close, penetration=0) df['ta_pattern_cdlgapsidesidewhite'] = ta.CDLGAPSIDESIDEWHITE( open, high, low, close) df['ta_pattern_cdlgravestonedoji'] = ta.CDLGRAVESTONEDOJI( open, high, low, close) df['ta_pattern_cdlhammer'] = ta.CDLHAMMER(open, high, low, close) df['ta_pattern_cdlhangingman'] = ta.CDLHANGINGMAN( open, high, low, close) df['ta_pattern_cdlharami'] = ta.CDLHARAMI(open, high, low, close) df['ta_pattern_cdlharamicross'] = ta.CDLHARAMICROSS( open, high, low, close) df['ta_pattern_cdlhighwave'] = ta.CDLHIGHWAVE(open, high, low, close) df['ta_pattern_cdlhikkake'] = ta.CDLHIKKAKE(open, high, low, close) df['ta_pattern_cdlhikkakemod'] = ta.CDLHIKKAKEMOD( open, high, low, close) df['ta_pattern_cdlhomingpigeon'] = ta.CDLHOMINGPIGEON( open, high, low, close) df['ta_pattern_cdlidentical3crows'] = ta.CDLIDENTICAL3CROWS( open, high, low, close) df['ta_pattern_cdlinneck'] = ta.CDLINNECK(open, high, low, close) df['ta_pattern_cdlinvertedhammer'] = ta.CDLINVERTEDHAMMER( open, high, low, close) df['ta_pattern_cdlkicking'] = ta.CDLKICKING(open, high, low, close) df['ta_pattern_cdlkickingbylength'] = ta.CDLKICKINGBYLENGTH( open, high, low, close) df['ta_pattern_cdlladderbottom'] = ta.CDLLADDERBOTTOM( open, high, low, close) df['ta_pattern_cdllongleggeddoji'] = ta.CDLLONGLEGGEDDOJI( open, high, low, close) df['ta_pattern_cdllongline'] = ta.CDLLONGLINE(open, high, low, close) df['ta_pattern_cdlmarubozu'] = ta.CDLMARUBOZU(open, high, low, close) df['ta_pattern_cdlmatchinglow'] = ta.CDLMATCHINGLOW( open, high, low, close) df['ta_pattern_cdlmathold'] = ta.CDLMATHOLD(open, high, low, close, penetration=0) df['ta_pattern_cdlmorningdojistar'] = ta.CDLMORNINGDOJISTAR( open, high, low, close, penetration=0) df['ta_pattern_cdlmorningstar'] = ta.CDLMORNINGSTAR(open, high, low, close, penetration=0) df['ta_pattern_cdllonneck'] = ta.CDLONNECK(open, high, low, close) df['ta_pattern_cdlpiercing'] = ta.CDLPIERCING(open, high, low, close) df['ta_pattern_cdlrickshawman'] = ta.CDLRICKSHAWMAN( open, high, low, close) df['ta_pattern_cdlrisefall3methods'] = ta.CDLRISEFALL3METHODS( open, high, low, close) df['ta_pattern_cdlseparatinglines'] = ta.CDLSEPARATINGLINES( open, high, low, close) df['ta_pattern_cdlshootingstar'] = ta.CDLSHOOTINGSTAR( open, high, low, close) df['ta_pattern_cdlshortline'] = ta.CDLSHORTLINE(open, high, low, close) df['ta_pattern_cdlspinningtop'] = ta.CDLSPINNINGTOP( open, high, low, close) df['ta_pattern_cdlstalledpattern'] = ta.CDLSTALLEDPATTERN( open, high, low, close) df['ta_pattern_cdlsticksandwich'] = ta.CDLSTICKSANDWICH( open, high, low, close) df['ta_pattern_cdltakuri'] = ta.CDLTAKURI(open, high, low, close) df['ta_pattern_cdltasukigap'] = ta.CDLTASUKIGAP(open, high, low, close) df['ta_pattern_cdlthrusting'] = ta.CDLTHRUSTING(open, high, low, close) df['ta_pattern_cdltristar'] = ta.CDLTRISTAR(open, high, low, close) df['ta_pattern_cdlunique3river'] = ta.CDLUNIQUE3RIVER( open, high, low, close) df['ta_pattern_cdlupsidegap2crows'] = ta.CDLUPSIDEGAP2CROWS( open, high, low, close) df['ta_pattern_cdlxsidegap3methods'] = ta.CDLXSIDEGAP3METHODS( open, high, low, close) if ta_settings['statistic']: df['ta_statistic_beta'] = ta.BETA(high, low, timeperiod=5) df['ta_statistic_correl'] = ta.CORREL(high, low, timeperiod=30) df['ta_statistic_linearreg'] = ta.LINEARREG(close, timeperiod=14) df['ta_statistic_linearreg_angle'] = ta.LINEARREG_ANGLE(close, timeperiod=14) df['ta_statistic_linearreg_intercept'] = ta.LINEARREG_INTERCEPT( close, timeperiod=14) df['ta_statistic_linearreg_slope'] = ta.LINEARREG_SLOPE(close, timeperiod=14) df['ta_statistic_stddev'] = ta.STDDEV(close, timeperiod=5, nbdev=1) df['ta_statistic_tsf'] = ta.TSF(close, timeperiod=14) df['ta_statistic_var'] = ta.VAR(close, timeperiod=5, nbdev=1) if ta_settings['math_transforms']: df['ta_math_transforms_atan'] = ta.ATAN(close) df['ta_math_transforms_ceil'] = ta.CEIL(close) df['ta_math_transforms_cos'] = ta.COS(close) df['ta_math_transforms_floor'] = ta.FLOOR(close) df['ta_math_transforms_ln'] = ta.LN(close) df['ta_math_transforms_log10'] = ta.LOG10(close) df['ta_math_transforms_sin'] = ta.SIN(close) df['ta_math_transforms_sqrt'] = ta.SQRT(close) df['ta_math_transforms_tan'] = ta.TAN(close) if ta_settings['math_operators']: df['ta_math_operators_add'] = ta.ADD(high, low) df['ta_math_operators_div'] = ta.DIV(high, low) df['ta_math_operators_min'], df['ta_math_operators_max'] = ta.MINMAX( close, timeperiod=30) df['ta_math_operators_minidx'], df[ 'ta_math_operators_maxidx'] = ta.MINMAXINDEX(close, timeperiod=30) df['ta_math_operators_mult'] = ta.MULT(high, low) df['ta_math_operators_sub'] = ta.SUB(high, low) df['ta_math_operators_sum'] = ta.SUM(close, timeperiod=30) return df
def CDLHIGHWAVE(data): res = talib.CDLHIGHWAVE( data.open.values, data.high.values, data.low.values, data.close.values) return pd.DataFrame({'CDLHIGHWAVE': res}, index=data.index)
def candles(source): open = source['open'] high = source['high'] low = source['low'] close = source['close'] source = source.join( pd.Series(talib.CDL2CROWS(open, high, low, close), name='CDL2CROWS')) source = source.join( pd.Series(talib.CDL3BLACKCROWS(open, high, low, close), name='CDL3BLACKCROWS')) source = source.join( pd.Series(talib.CDL3INSIDE(open, high, low, close), name='CDL3INSIDE')) source = source.join( pd.Series(talib.CDL3OUTSIDE(open, high, low, close), name='CDL3OUTSIDE')) source = source.join( pd.Series(talib.CDL3STARSINSOUTH(open, high, low, close), name='CDL3STARSINSOUTH')) source = source.join( pd.Series(talib.CDL3WHITESOLDIERS(open, high, low, close), name='CDL3WHITESOLDIERS')) source = source.join( pd.Series(talib.CDLABANDONEDBABY(open, high, low, close), name='CDLABANDONEDBABY')) source = source.join( pd.Series(talib.CDLADVANCEBLOCK(open, high, low, close), name='CDLADVANCEBLOCK')) source = source.join( pd.Series(talib.CDLBELTHOLD(open, high, low, close), name='CDLBELTHOLD')) source = source.join( pd.Series(talib.CDLBREAKAWAY(open, high, low, close), name='CDLBREAKAWAY')) source = source.join( pd.Series(talib.CDLCLOSINGMARUBOZU(open, high, low, close), name='CDLCLOSINGMARUBOZU')) source = source.join( pd.Series(talib.CDLCONCEALBABYSWALL(open, high, low, close), name='CDLCONCEALBABYSWALL')) source = source.join( pd.Series(talib.CDLCOUNTERATTACK(open, high, low, close), name='CDLCOUNTERATTACK')) source = source.join( pd.Series(talib.CDLDARKCLOUDCOVER(open, high, low, close), name='CDLDARKCLOUDCOVER')) source = source.join( pd.Series(talib.CDLDOJI(open, high, low, close), name='CDLDOJI')) source = source.join( pd.Series(talib.CDLDOJISTAR(open, high, low, close), name='CDLDOJISTAR')) source = source.join( pd.Series(talib.CDLDRAGONFLYDOJI(open, high, low, close), name='CDLDRAGONFLYDOJI')) source = source.join( pd.Series(talib.CDLENGULFING(open, high, low, close), name='CDLENGULFING')) source = source.join( pd.Series(talib.CDLEVENINGDOJISTAR(open, high, low, close), name='CDLEVENINGDOJISTAR')) source = source.join( pd.Series(talib.CDLEVENINGSTAR(open, high, low, close), name='CDLEVENINGSTAR')) source = source.join( pd.Series(talib.CDLGAPSIDESIDEWHITE(open, high, low, close), name='CDLGAPSIDESIDEWHITE')) source = source.join( pd.Series(talib.CDLGRAVESTONEDOJI(open, high, low, close), name='CDLGRAVESTONEDOJI')) source = source.join( pd.Series(talib.CDLHAMMER(open, high, low, close), name='CDLHAMMER')) source = source.join( pd.Series(talib.CDLHANGINGMAN(open, high, low, close), name='CDLHANGINGMAN')) source = source.join( pd.Series(talib.CDLHARAMI(open, high, low, close), name='CDLHARAMI')) source = source.join( pd.Series(talib.CDLHARAMICROSS(open, high, low, close), name='CDLHARAMICROSS')) source = source.join( pd.Series(talib.CDLHIGHWAVE(open, high, low, close), name='CDLHIGHWAVE')) source = source.join( pd.Series(talib.CDLHIKKAKE(open, high, low, close), name='CDLHIKKAKE')) source = source.join( pd.Series(talib.CDLHIKKAKEMOD(open, high, low, close), name='CDLHIKKAKEMOD')) source = source.join( pd.Series(talib.CDLHOMINGPIGEON(open, high, low, close), name='CDLHOMINGPIGEON')) source = source.join( pd.Series(talib.CDLIDENTICAL3CROWS(open, high, low, close), name='CDLIDENTICAL3CROWS')) source = source.join( pd.Series(talib.CDLINNECK(open, high, low, close), name='CDLINNECK')) source = source.join( pd.Series(talib.CDLINVERTEDHAMMER(open, high, low, close), name='CDLINVERTEDHAMMER')) source = source.join( pd.Series(talib.CDLKICKING(open, high, low, close), name='CDLKICKING')) source = source.join( pd.Series(talib.CDLKICKINGBYLENGTH(open, high, low, close), name='CDLKICKINGBYLENGTH')) source = source.join( pd.Series(talib.CDLLADDERBOTTOM(open, high, low, close), name='CDLLADDERBOTTOM')) source = source.join( pd.Series(talib.CDLLONGLEGGEDDOJI(open, high, low, close), name='CDLLONGLEGGEDDOJI')) source = source.join( pd.Series(talib.CDLLONGLINE(open, high, low, close), name='CDLLONGLINE')) source = source.join( pd.Series(talib.CDLMARUBOZU(open, high, low, close), name='CDLMARUBOZU')) source = source.join( pd.Series(talib.CDLMATCHINGLOW(open, high, low, close), name='CDLMATCHINGLOW')) source = source.join( pd.Series(talib.CDLMATHOLD(open, high, low, close), name='CDLMATHOLD')) source = source.join( pd.Series(talib.CDLMORNINGDOJISTAR(open, high, low, close), name='CDLMORNINGDOJISTAR')) source = source.join( pd.Series(talib.CDLMORNINGSTAR(open, high, low, close), name='CDLMORNINGSTAR')) source = source.join( pd.Series(talib.CDLONNECK(open, high, low, close), name='CDLONNECK')) source = source.join( pd.Series(talib.CDLPIERCING(open, high, low, close), name='CDLPIERCING')) source = source.join( pd.Series(talib.CDLRICKSHAWMAN(open, high, low, close), name='CDLRICKSHAWMAN')) source = source.join( pd.Series(talib.CDLRISEFALL3METHODS(open, high, low, close), name='CDLRISEFALL3METHODS')) source = source.join( pd.Series(talib.CDLSEPARATINGLINES(open, high, low, close), name='CDLSEPARATINGLINES')) source = source.join( pd.Series(talib.CDLSHOOTINGSTAR(open, high, low, close), name='CDLSHOOTINGSTAR')) source = source.join( pd.Series(talib.CDLSHORTLINE(open, high, low, close), name='CDLSHORTLINE')) source = source.join( pd.Series(talib.CDLSPINNINGTOP(open, high, low, close), name='CDLSPINNINGTOP')) source = source.join( pd.Series(talib.CDLSTALLEDPATTERN(open, high, low, close), name='CDLSTALLEDPATTERN')) source = source.join( pd.Series(talib.CDLSTICKSANDWICH(open, high, low, close), name='CDLSTICKSANDWICH')) source = source.join( pd.Series(talib.CDLTAKURI(open, high, low, close), name='CDLTAKURI')) source = source.join( pd.Series(talib.CDLTASUKIGAP(open, high, low, close), name='CDLTASUKIGAP')) source = source.join( pd.Series(talib.CDLTHRUSTING(open, high, low, close), name='CDLTHRUSTING')) source = source.join( pd.Series(talib.CDLTRISTAR(open, high, low, close), name='CDLTRISTAR')) source = source.join( pd.Series(talib.CDLUNIQUE3RIVER(open, high, low, close), name='CDLUNIQUE3RIVER')) source = source.join( pd.Series(talib.CDLUPSIDEGAP2CROWS(open, high, low, close), name='CDLUPSIDEGAP2CROWS')) source = source.join( pd.Series(talib.CDLXSIDEGAP3METHODS(open, high, low, close), name='CDLXSIDEGAP3METHODS')) return source
np.array(df['Low']), np.array(df['Adj Close'])) df['Hammer'] = ta.CDLHAMMER(np.array(df['Open']), np.array(df['High']), np.array(df['Low']), np.array(df['Adj Close'])) df['Hanging_Man'] = ta.CDLHANGINGMAN(np.array(df['Open']), np.array(df['High']), np.array(df['Low']), np.array(df['Adj Close'])) df['Harami_Pattern'] = ta.CDLHARAMI(np.array(df['Open']), np.array(df['High']), np.array(df['Low']), np.array(df['Adj Close'])) df['Harami_Cross_Pattern'] = ta.CDLHARAMICROSS(np.array(df['Open']), np.array(df['High']), np.array(df['Low']), np.array(df['Adj Close'])) df['High_Wave_Candle'] = ta.CDLHIGHWAVE(np.array(df['Open']), np.array(df['High']), np.array(df['Low']), np.array(df['Adj Close'])) df['Hikkake_Pattern'] = ta.CDLHIKKAKE(np.array(df['Open']), np.array(df['High']), np.array(df['Low']), np.array(df['Adj Close'])) df['Modified_Hikkake_Pattern'] = ta.CDLHIKKAKEMOD(np.array(df['Open']), np.array(df['High']), np.array(df['Low']), np.array(df['Adj Close'])) df['Homing_Pigeon'] = ta.CDLHOMINGPIGEON(np.array(df['Open']), np.array(df['High']), np.array(df['Low']), np.array(df['Adj Close'])) df['Identical_Three_Crows'] = ta.CDLIDENTICAL3CROWS(np.array(df['Open']), np.array(df['High']),
def TALIB_CDLHIGHWAVE(close): '''00425,1,1''' return talib.CDLHIGHWAVE(close)
df['Low'], df['Close']) df['Evening Star'] = ta.CDLEVENINGSTAR(df['Open'], df['High'], df['Low'], df['Close']) df['Up/Down-gap side-by-side white lines'] = ta.CDLGAPSIDESIDEWHITE( df['Open'], df['High'], df['Low'], df['Close']) df['Gravestone Doji'] = ta.CDLGRAVESTONEDOJI(df['Open'], df['High'], df['Low'], df['Close']) df['Hammer'] = ta.CDLHAMMER(df['Open'], df['High'], df['Low'], df['Close']) df['Hanging Man'] = ta.CDLHANGINGMAN(df['Open'], df['High'], df['Low'], df['Close']) df['Harami Pattern'] = ta.CDLHARAMI(df['Open'], df['High'], df['Low'], df['Close']) df['Harami Cross Pattern'] = ta.CDLHARAMICROSS(df['Open'], df['High'], df['Low'], df['Close']) df['High-Wave Candle'] = ta.CDLHIGHWAVE(df['Open'], df['High'], df['Low'], df['Close']) df['Hikkake Pattern'] = ta.CDLHIKKAKE(df['Open'], df['High'], df['Low'], df['Close']) df['Modified Hikkake Pattern'] = ta.CDLHIKKAKEMOD(df['Open'], df['High'], df['Low'], df['Close']) df['Homing Pigeon'] = ta.CDLHOMINGPIGEON(df['Open'], df['High'], df['Low'], df['Close']) df['Identical Three Crows'] = ta.CDLIDENTICAL3CROWS(df['Open'], df['High'], df['Low'], df['Close']) df['In-Neck Pattern'] = ta.CDLINNECK(df['Open'], df['High'], df['Low'], df['Close']) df['Inverted Hammer'] = ta.CDLINVERTEDHAMMER(df['Open'], df['High'], df['Low'], df['Close']) df['Kicking'] = ta.CDLKICKING(df['Open'], df['High'], df['Low'], df['Close']) df['Kicking By Length'] = ta.CDLKICKINGBYLENGTH(df['Open'], df['High'],
df['CDLCONCEALBABYSWALL'] = talib.CDLCONCEALBABYSWALL(op, hp, lp, cp) df['CDLCOUNTERATTACK'] = talib.CDLCOUNTERATTACK(op, hp, lp, cp) df['CDLDARKCLOUDCOVER'] = talib.CDLDARKCLOUDCOVER(op, hp, lp, cp) df['CDLDOJI'] = talib.CDLDOJI(op, hp, lp, cp) df['CDLDOJISTAR'] = talib.CDLDOJISTAR(op, hp, lp, cp) df['CDLDRAGONFLYDOJI'] = talib.CDLDRAGONFLYDOJI(op, hp, lp, cp) df['CDLENGULFING'] = talib.CDLENGULFING(op, hp, lp, cp) df['CDLEVENINGDOJISTAR'] = talib.CDLEVENINGDOJISTAR(op, hp, lp, cp) df['CDLEVENINGSTAR'] = talib.CDLEVENINGSTAR(op, hp, lp, cp) df['CDLGAPSIDESIDEWHITE'] = talib.CDLGAPSIDESIDEWHITE(op, hp, lp, cp) df['CDLGRAVESTONEDOJI'] = talib.CDLGRAVESTONEDOJI(op, hp, lp, cp) df['CDLHAMMER'] = talib.CDLHAMMER(op, hp, lp, cp) df['CDLHANGINGMAN'] = talib.CDLHANGINGMAN(op, hp, lp, cp) df['CDLHARAMI'] = talib.CDLHARAMI(op, hp, lp, cp) df['CDLHARAMICROSS'] = talib.CDLHARAMICROSS(op, hp, lp, cp) df['CDLHIGHWAVE'] = talib.CDLHIGHWAVE(op, hp, lp, cp) df['CDLHIKKAKE'] = talib.CDLHIKKAKE(op, hp, lp, cp) df['CDLHIKKAKEMOD'] = talib.CDLHIKKAKEMOD(op, hp, lp, cp) df['CDLHOMINGPIGEON'] = talib.CDLHOMINGPIGEON(op, hp, lp, cp) df['CDLIDENTICAL3CROWS'] = talib.CDLIDENTICAL3CROWS(op, hp, lp, cp) df['CDLINNECK'] = talib.CDLINNECK(op, hp, lp, cp) df['CDLINVERTEDHAMMER'] = talib.CDLINVERTEDHAMMER(op, hp, lp, cp) df['CDLKICKING'] = talib.CDLKICKING(op, hp, lp, cp) df['CDLKICKINGBYLENGTH'] = talib.CDLKICKINGBYLENGTH(op, hp, lp, cp) df['CDLLADDERBOTTOM'] = talib.CDLLADDERBOTTOM(op, hp, lp, cp) df['CDLLONGLEGGEDDOJI'] = talib.CDLLONGLEGGEDDOJI(op, hp, lp, cp) df['CDLLONGLINE'] = talib.CDLLONGLINE(op, hp, lp, cp) df['CDLMARUBOZU'] = talib.CDLMARUBOZU(op, hp, lp, cp) df['CDLMATCHINGLOW'] = talib.CDLMATCHINGLOW(op, hp, lp, cp) df['CDLMATHOLD'] = talib.CDLMATHOLD(op, hp, lp, cp) df['CDLMORNINGDOJISTAR'] = talib.CDLMORNINGDOJISTAR(op, hp, lp, cp)
def get_technical_indicators(dataset): # Create 7 and 21 days Moving Average dataset['ma7'] = dataset['Adj Close'].rolling(window=7).mean() dataset['ma21'] = dataset['Adj Close'].rolling(window=21).mean() # Create Exponential moving average dataset['ema'] = dataset['Adj Close'].ewm(com=0.5).mean() # Create MACD dataset['26ema'] = dataset['Adj Close'].ewm(span=26).mean() dataset['12ema'] = dataset['Adj Close'].ewm(span=12).mean() dataset['MACD'] = (dataset['12ema'] - dataset['26ema']) # Create Momentum dataset['momentum'] = dataset['Adj Close'] - 1 # Create Bollinger Bands dataset['20sd'] = dataset['Adj Close'].rolling(20).std() dataset['upper_band'] = dataset['ma21'] + (dataset['20sd'] * 2) dataset['lower_band'] = dataset['ma21'] - (dataset['20sd'] * 2) # Create RSI indicator dataset['RSI'] = ta.RSI(np.array(dataset['Adj Close'])) #Part I: Create Cycle Indicators #Create HT_DCPERIOD - Hilbert Transform - Dominant Cycle Period dataset['HT_DCPERIOD'] = ta.HT_DCPERIOD(np.array(dataset['Adj Close'])) #Create HT_DCPHASE - Hilbert Transform - Dominant Cycle Phase dataset['HT_DCPHASE'] = ta.HT_DCPHASE(np.array(dataset['Adj Close'])) #HT_TRENDMODE - Hilbert Transform - Trend vs Cycle Mode dataset['HT_TRENDMODE'] = ta.HT_TRENDMODE(np.array(dataset['Adj Close'])) #Part II: Create Volatility Indicators #Create Average True Range dataset['ATR'] = ta.ATR(np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close']), timeperiod=14) #Create NATR - Normalized Average True Range dataset['NATR'] = ta.NATR(np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close']), timeperiod=14) #Create TRANGE - True Range dataset['TRANGE'] = ta.TRANGE(np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Part III Overlap Studies #Create DEMA - Double Exponential Moving Average dataset['DEMA'] = ta.DEMA(np.array(dataset['Adj Close']), timeperiod=30) #Create HT_TRENDLINE - Hilbert Transform - Instantaneous Trendline dataset['HT_TRENDLINE'] = ta.HT_TRENDLINE(np.array(dataset['Adj Close'])) #Create KAMA - Kaufman Adaptive Moving Average dataset['KAMA'] = ta.KAMA(np.array(dataset['Adj Close']), timeperiod=30) #Create MIDPOINT - MidPoint over period dataset['MIDPOINT'] = ta.MIDPOINT(np.array(dataset['Adj Close']), timeperiod=14) #Create MIDPRICE - Midpoint Price over period dataset['MIDPRICE'] = ta.MIDPRICE(np.array(dataset['High']), np.array(dataset['Low']), timeperiod=14) #Create SAR - Parabolic SAR dataset['SAR'] = ta.SAR(np.array(dataset['High']), np.array(dataset['Low']), acceleration=0, maximum=0) #Create SMA - Simple Moving Average dataset['SMA10'] = ta.SMA(np.array(dataset['Adj Close']), timeperiod=10) #Create T3 - Triple Exponential Moving Average (T3) dataset['T3'] = ta.T3(np.array(dataset['Adj Close']), timeperiod=5, vfactor=0) #Create TRIMA - Triangular Moving Average dataset['TRIMA'] = ta.TRIMA(np.array(dataset['Adj Close']), timeperiod=30) #Create WMA - Weighted Moving Average dataset['WMA'] = ta.WMA(np.array(dataset['Adj Close']), timeperiod=30) #PART IV Momentum Indicators #Create ADX - Average Directional Movement Index dataset['ADX14'] = ta.ADX(np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close']), timeperiod=14) dataset['ADX20'] = ta.ADX(np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close']), timeperiod=20) #Create ADXR - Average Directional Movement Index Rating dataset['ADXR'] = ta.ADXR(np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close']), timeperiod=14) #Create APO - Absolute Price Oscillator dataset['APO'] = ta.APO(np.array(dataset['Adj Close']), fastperiod=12, slowperiod=26, matype=0) #Create AROONOSC - Aroon Oscillator dataset['AROONOSC'] = ta.AROONOSC(np.array(dataset['High']), np.array(dataset['Low']), timeperiod=14) #Create BOP - Balance Of Power dataset['BOP'] = ta.BOP(np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CCI - Commodity Channel Index dataset['CCI3'] = ta.CCI(np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close']), timeperiod=3) dataset['CCI5'] = ta.CCI(np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close']), timeperiod=5) dataset['CCI10'] = ta.CCI(np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close']), timeperiod=10) dataset['CCI14'] = ta.CCI(np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close']), timeperiod=14) #Create CMO - Chande Momentum Oscillator dataset['CMO'] = ta.CMO(np.array(dataset['Adj Close']), timeperiod=14) #Create DX - Directional Movement Index dataset['DX'] = ta.DX(np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close']), timeperiod=14) #Create MINUS_DI - Minus Directional Indicator dataset['MINUS_DI'] = ta.MINUS_DI(np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close']), timeperiod=14) #Create MINUS_DM - Minus Directional Movement dataset['MINUS_DM'] = ta.MINUS_DM(np.array(dataset['High']), np.array(dataset['Low']), timeperiod=14) #Create MOM - Momentum dataset['MOM3'] = ta.MOM(np.array(dataset['Adj Close']), timeperiod=3) dataset['MOM5'] = ta.MOM(np.array(dataset['Adj Close']), timeperiod=5) dataset['MOM10'] = ta.MOM(np.array(dataset['Adj Close']), timeperiod=10) #Create PLUS_DI - Plus Directional Indicator dataset['PLUS_DI'] = ta.PLUS_DI(np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close']), timeperiod=14) #Create PLUS_DM - Plus Directional Movement dataset['PLUS_DM'] = ta.PLUS_DM(np.array(dataset['High']), np.array(dataset['Low']), timeperiod=14) #Create PPO - Percentage Price Oscillator dataset['PPO'] = ta.PPO(np.array(dataset['Adj Close']), fastperiod=12, slowperiod=26, matype=0) #Create ROC - Rate of change : ((price/prevPrice)-1)*100 dataset['ROC'] = ta.ROC(np.array(dataset['Adj Close']), timeperiod=10) #Create ROCP - Rate of change Percentage: (price-prevPrice)/prevPrice dataset['ROCP'] = ta.ROCP(np.array(dataset['Adj Close']), timeperiod=10) #Create ROCR - Rate of change ratio: (price/prevPrice) dataset['ROCR'] = ta.ROCR(np.array(dataset['Adj Close']), timeperiod=10) #Create ROCR100 - Rate of change ratio 100 scale: (price/prevPrice)*100 dataset['ROCR100'] = ta.ROCR100(np.array(dataset['Adj Close']), timeperiod=10) #Create RSI - Relative Strength Index dataset['RSI5'] = ta.RSI(np.array(dataset['Adj Close']), timeperiod=5) dataset['RSI10'] = ta.RSI(np.array(dataset['Adj Close']), timeperiod=10) dataset['RSI14'] = ta.RSI(np.array(dataset['Adj Close']), timeperiod=14) #Create TRIX - 1-day Rate-Of-Change (ROC) of a Triple Smooth EMA dataset['TRIX'] = ta.TRIX(np.array(dataset['Adj Close']), timeperiod=30) #Create ULTOSC - Ultimate Oscillator dataset['ULTOSC'] = ta.ULTOSC(np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close']), timeperiod1=7, timeperiod2=14, timeperiod3=28) #Create WILLR - Williams' %R dataset['WILLR'] = ta.WILLR(np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close']), timeperiod=14) #Part V Pattern Recognition #Create CDL2CROWS - Two Crows dataset['CDL2CROWS'] = ta.CDL2CROWS(np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDL3BLACKCROWS - Three Black Crows dataset['CDL3BLACKCROWS'] = ta.CDL3BLACKCROWS( np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDL3INSIDE - Three Inside Up/Down dataset['CDL3INSIDE'] = ta.CDL3INSIDE(np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDL3LINESTRIKE - Three-Line Strike dataset['CDL3LINESTRIKE'] = ta.CDL3LINESTRIKE( np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDL3OUTSIDE - Three Outside Up/Down dataset['CDL3OUTSIDE'] = ta.CDL3OUTSIDE(np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDL3STARSINSOUTH - Three Stars In The South dataset['CDL3STARSINSOUTH '] = ta.CDL3STARSINSOUTH( np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDL3WHITESOLDIERS - Three Advancing White Soldiers dataset['CDL3WHITESOLDIERS'] = ta.CDL3WHITESOLDIERS( np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLABANDONEDBABY - Abandoned Baby dataset['CDLABANDONEDBABY'] = ta.CDLABANDONEDBABY( np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close']), penetration=0) #Create CDLADVANCEBLOCK - Advance Block dataset['CDLADVANCEBLOCK'] = ta.CDLADVANCEBLOCK( np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLBELTHOLD - Belt-hold dataset['CDLBELTHOLD'] = ta.CDLBELTHOLD(np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLBREAKAWAY - Breakaway dataset['CDLBREAKAWAY'] = ta.CDLBREAKAWAY(np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLCLOSINGMARUBOZU - Closing Marubozu dataset['CDLCLOSINGMARUBOZU'] = ta.CDLCLOSINGMARUBOZU( np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLCONCEALBABYSWALL - Concealing Baby Swalnp.array(dataset['Low']) dataset['CDLCONCEALBABYSWALL'] = ta.CDLCONCEALBABYSWALL( np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLCOUNTERATTACK - Counterattack dataset['CDLCOUNTERATTACK'] = ta.CDLCOUNTERATTACK( np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLDARKCLOUDCOVER - Dark Cloud Cover dataset['CDLDARKCLOUDCOVER'] = ta.CDLDARKCLOUDCOVER( np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close']), penetration=0) #Create CDLDOJI - Doji dataset['CDLDOJI'] = ta.CDLDOJI(np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLDOJISTAR - Doji Star dataset['CDLDOJISTAR'] = ta.CDLDOJISTAR(np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLDRAGONFLYDOJI - Dragonfly Doji dataset['CDLDRAGONFLYDOJI'] = ta.CDLDRAGONFLYDOJI( np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLENGULFING - Engulfing Pattern dataset['CDLENGULFING'] = ta.CDLENGULFING(np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLEVENINGDOJISTAR - Evening Doji Star dataset['CDLEVENINGDOJISTAR'] = ta.CDLEVENINGDOJISTAR( np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close']), penetration=0) #Create CDLEVENINGSTAR - Evening Star dataset['CDLEVENINGSTAR'] = ta.CDLEVENINGSTAR(np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array( dataset['Adj Close']), penetration=0) #Create CDLGAPSIDESIDEWHITE - Up/Down-gap side-by-side white lines dataset['CDLGAPSIDESIDEWHITE'] = ta.CDLGAPSIDESIDEWHITE( np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLGRAVESTONEDOJI - Gravestone Doji dataset['CDLGRAVESTONEDOJI'] = ta.CDLGRAVESTONEDOJI( np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLHAMMER - Hammer dataset['CDLHAMMER'] = ta.CDLHAMMER(np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLHANGINGMAN - Hanging Man dataset['CDLHANGINGMAN'] = ta.CDLHANGINGMAN(np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLHARAMI - Harami Pattern dataset['CDLHARAMI'] = ta.CDLHARAMI(np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLHARAMICROSS - Harami Cross Pattern dataset['CDLHARAMICROSS'] = ta.CDLHARAMICROSS( np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLHIGHWAVE - High-Wave Candle dataset['CDLHIGHWAVE'] = ta.CDLHIGHWAVE(np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLHIKKAKE - Hikkake Pattern dataset['CDLHIKKAKE'] = ta.CDLHIKKAKE(np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLHIKKAKEMOD - Modified Hikkake Pattern dataset['CDLHIKKAKEMOD'] = ta.CDLHIKKAKEMOD(np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLHOMINGPIGEON - Homing Pigeon dataset['CDLHOMINGPIGEON'] = ta.CDLHOMINGPIGEON( np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLIDENTICAL3CROWS - Identical Three Crows dataset['CDLIDENTICAL3CROWS'] = ta.CDLIDENTICAL3CROWS( np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLINNECK - In-Neck Pattern dataset['CDLINNECK'] = ta.CDLINNECK(np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLINVERTEDHAMMER - Inverted Hammer dataset['CDLINVERTEDHAMMER'] = ta.CDLINVERTEDHAMMER( np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLKICKING - Kicking dataset['CDLKICKING'] = ta.CDLKICKING(np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLKICKINGBYLENGTH - Kicking - bull/bear determined by the longer marubozu dataset['CDLKICKINGBYLENGTH'] = ta.CDLKICKINGBYLENGTH( np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLLADDERBOTTOM - Ladder Bottom dataset['CDLLADDERBOTTOM'] = ta.CDLLADDERBOTTOM( np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLLONGLEGGEDDOJI - Long Legged Doji dataset['CDLLONGLEGGEDDOJI'] = ta.CDLLONGLEGGEDDOJI( np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLLONGLINE - Long Line Candle dataset['CDLLONGLINE'] = ta.CDLLONGLINE(np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLMARUBOZU - Marubozu dataset['CDLMARUBOZU'] = ta.CDLMARUBOZU(np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLMATCHINGLOW - Matching Low dataset['CDLMATCHINGLOW'] = ta.CDLMATCHINGLOW( np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLMATHOLD - Mat Hold dataset['CDLMATHOLD'] = ta.CDLMATHOLD(np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close']), penetration=0) #Create CDLMORNINGDOJISTAR - Morning Doji Star dataset['CDLMORNINGDOJISTAR'] = ta.CDLMORNINGDOJISTAR( np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close']), penetration=0) #Create CDLMORNINGSTAR - Morning Star dataset['CDLMORNINGSTAR'] = ta.CDLMORNINGSTAR(np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array( dataset['Adj Close']), penetration=0) #Create CDLONNECK - On-Neck Pattern dataset['CDLONNECK'] = ta.CDLONNECK(np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLPIERCING - Piercing Pattern dataset['CDLPIERCING'] = ta.CDLPIERCING(np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLRICKSHAWMAN - Rickshaw Man dataset['CDLRICKSHAWMAN'] = ta.CDLRICKSHAWMAN( np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLRISEFALL3METHODS - Rising/Falling Three Methods dataset['CDLRISEFALL3METHODS'] = ta.CDLRISEFALL3METHODS( np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLSEPARATINGLINES - Separating Lines dataset['CDLSEPARATINGLINES'] = ta.CDLSEPARATINGLINES( np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLSHOOTINGSTAR - Shooting Star dataset['CDLSHOOTINGSTAR'] = ta.CDLSHOOTINGSTAR( np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLSHORTLINE - Short Line Candle dataset['CDLSHORTLINE'] = ta.CDLSHORTLINE(np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLSPINNINGTOP - Spinning Top dataset['CDLSPINNINGTOP'] = ta.CDLSPINNINGTOP( np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLSTALLEDPATTERN - Stalled Pattern dataset['CDLSTALLEDPATTERN'] = ta.CDLSTALLEDPATTERN( np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLSTICKSANDWICH - Stick Sandwich dataset['CDLSTICKSANDWICH'] = ta.CDLSTICKSANDWICH( np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLTAKURI - Takuri (Dragonfly Doji with very long np.array(dataset['Low'])er shadow) dataset['CDLTAKURI'] = ta.CDLTAKURI(np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLTASUKIGAP - Tasuki Gap dataset['CDLTASUKIGAP'] = ta.CDLTASUKIGAP(np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLTHRUSTING - Thrusting Pattern dataset['CDLTHRUSTING'] = ta.CDLTHRUSTING(np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLTRISTAR - Tristar Pattern dataset['CDLTRISTAR'] = ta.CDLTRISTAR(np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLUNIQUE3RIVER - Unique 3 River dataset['CDLUNIQUE3RIVER'] = ta.CDLUNIQUE3RIVER( np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLUPSIDEGAP2CROWS - Upside Gap Two Crows dataset['CDLUPSIDEGAP2CROWS'] = ta.CDLUPSIDEGAP2CROWS( np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) #Create CDLXSIDEGAP3METHODS - Upside/Downside Gap Three Methods dataset['CDLXSIDEGAP3METHODS'] = ta.CDLXSIDEGAP3METHODS( np.array(dataset['Open']), np.array(dataset['High']), np.array(dataset['Low']), np.array(dataset['Adj Close'])) return dataset
def pattern_recognition(candles: np.ndarray, pattern_type, penetration=0, sequential=False) -> Union[int, np.ndarray]: """ Pattern Recognition :param candles: np.ndarray :param penetration: int - default = 0 :param pattern_type: str :param sequential: bool - default=False :return: int | np.ndarray """ if not sequential and len(candles) > 240: candles = candles[-240:] if pattern_type == "CDL2CROWS": res = talib.CDL2CROWS(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDL3BLACKCROWS": res = talib.CDL3BLACKCROWS(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDL3INSIDE": res = talib.CDL3INSIDE(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDL3LINESTRIKE": res = talib.CDL3LINESTRIKE(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDL3OUTSIDE": res = talib.CDL3OUTSIDE(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDL3STARSINSOUTH": res = talib.CDL3STARSINSOUTH(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDL3WHITESOLDIERS": res = talib.CDL3WHITESOLDIERS(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLABANDONEDBABY": res = talib.CDLABANDONEDBABY(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2], penetration=penetration) elif pattern_type == "CDLADVANCEBLOCK": res = talib.CDLADVANCEBLOCK(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLBELTHOLD": res = talib.CDLBELTHOLD(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLBREAKAWAY": res = talib.CDLBREAKAWAY(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLCLOSINGMARUBOZU": res = talib.CDLCLOSINGMARUBOZU(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLCONCEALBABYSWALL": res = talib.CDLCONCEALBABYSWALL(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLCOUNTERATTACK": res = talib.CDLCOUNTERATTACK(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLDARKCLOUDCOVER": res = talib.CDLDARKCLOUDCOVER(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2], penetration=penetration) elif pattern_type == "CDLDOJI": res = talib.CDLDOJI(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLDOJISTAR": res = talib.CDLDOJISTAR(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLDRAGONFLYDOJI": res = talib.CDLDRAGONFLYDOJI(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLENGULFING": res = talib.CDLENGULFING(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLEVENINGDOJISTAR": res = talib.CDLEVENINGDOJISTAR(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2], penetration=penetration) elif pattern_type == "CDLEVENINGSTAR": res = talib.CDLEVENINGSTAR(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2], penetration=penetration) elif pattern_type == "CDLGAPSIDESIDEWHITE": res = talib.CDLGAPSIDESIDEWHITE(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLGRAVESTONEDOJI": res = talib.CDLGRAVESTONEDOJI(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLHAMMER": res = talib.CDLHAMMER(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLHANGINGMAN": res = talib.CDLHANGINGMAN(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLHARAMI": res = talib.CDLHARAMI(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLHARAMICROSS": res = talib.CDLHARAMICROSS(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLHIGHWAVE": res = talib.CDLHIGHWAVE(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLHIKKAKE": res = talib.CDLHIKKAKE(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLHIKKAKEMOD": res = talib.CDLHIKKAKEMOD(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLHOMINGPIGEON": res = talib.CDLHOMINGPIGEON(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLIDENTICAL3CROWS": res = talib.CDLIDENTICAL3CROWS(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLINNECK": res = talib.CDLINNECK(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLINVERTEDHAMMER": res = talib.CDLINVERTEDHAMMER(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLKICKING": res = talib.CDLKICKING(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLKICKINGBYLENGTH": res = talib.CDLKICKINGBYLENGTH(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLLADDERBOTTOM": res = talib.CDLLADDERBOTTOM(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLLONGLEGGEDDOJI": res = talib.CDLLONGLEGGEDDOJI(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLLONGLINE": res = talib.CDLLONGLINE(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLMARUBOZU": res = talib.CDLMARUBOZU(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLMATCHINGLOW": res = talib.CDLMATCHINGLOW(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLMATHOLD": res = talib.CDLMATHOLD(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2], penetration=penetration) elif pattern_type == "CDLMORNINGDOJISTAR": res = talib.CDLMORNINGDOJISTAR(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2], penetration=penetration) elif pattern_type == "CDLMORNINGSTAR": res = talib.CDLMORNINGSTAR(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2], penetration=penetration) elif pattern_type == "CDLONNECK": res = talib.CDLONNECK(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLPIERCING": res = talib.CDLPIERCING(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLRICKSHAWMAN": res = talib.CDLRICKSHAWMAN(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLRISEFALL3METHODS": res = talib.CDLRISEFALL3METHODS(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLSEPARATINGLINES": res = talib.CDLSEPARATINGLINES(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLSHOOTINGSTAR": res = talib.CDLSHOOTINGSTAR(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLSHORTLINE": res = talib.CDLSHORTLINE(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLSPINNINGTOP": res = talib.CDLSPINNINGTOP(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLSTALLEDPATTERN": res = talib.CDLSTALLEDPATTERN(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLSTICKSANDWICH": res = talib.CDLSTICKSANDWICH(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLTAKURI": res = talib.CDLTAKURI(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLTASUKIGAP": res = talib.CDLTASUKIGAP(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLTHRUSTING": res = talib.CDLTHRUSTING(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLTRISTAR": res = talib.CDLTRISTAR(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLUNIQUE3RIVER": res = talib.CDLUNIQUE3RIVER(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLUPSIDEGAP2CROWS": res = talib.CDLUPSIDEGAP2CROWS(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) elif pattern_type == "CDLXSIDEGAP3METHODS": res = talib.CDLXSIDEGAP3METHODS(candles[:, 1], candles[:, 3], candles[:, 4], candles[:, 2]) else: raise ValueError('pattern type string not recognised') return res / 100 if sequential else res[-1] / 100
def all_candels(df): df['two_crow'] = talib.CDL2CROWS(df.open,df.high,df.low,df.close) df['three_black_crows'] = talib.CDL3BLACKCROWS(df.open,df.high,df.low,df.close) df['threeinside updown'] = talib.CDL3INSIDE(df.open,df.high,df.low,df.close) df['threelinestrike'] = talib.CDL3LINESTRIKE(df.open,df.high,df.low,df.close) df['3outside'] = talib.CDL3OUTSIDE(df.open,df.high,df.low,df.close) df['3starsinsouth'] = talib.CDL3STARSINSOUTH(df.open,df.high,df.low,df.close) df['3WHITESOLDIERS'] = talib.CDL3WHITESOLDIERS(df.open,df.high,df.low,df.close) df['ABANDONEDBABY'] = talib.CDLABANDONEDBABY(df.open,df.high,df.low,df.close) df['ADVANCEBLOCK'] = talib.CDLADVANCEBLOCK(df.open,df.high,df.low,df.close) df['BELTHOLD'] = talib.CDLBELTHOLD(df.open,df.high,df.low,df.close) df['BREAKAWAY'] = talib.CDLBREAKAWAY(df.open,df.high,df.low,df.close) df['CLOSINGMARUBOZU'] = talib.CDLCLOSINGMARUBOZU(df.open,df.high,df.low,df.close) df['CONCEALBABYSWALL'] = talib.CDLCONCEALBABYSWALL(df.open,df.high,df.low,df.close) df['COUNTERATTACK'] = talib.CDLCOUNTERATTACK(df.open,df.high,df.low,df.close) df['DARKCLOUDCOVER'] = talib.CDLDARKCLOUDCOVER(df.open,df.high,df.low,df.close) df['DOJI'] = talib.CDLDOJI(df.open,df.high,df.low,df.close) df['DOJISTAR'] = talib.CDLDOJISTAR(df.open,df.high,df.low,df.close) df['DRAGONFLYDOJI'] = talib.CDLDRAGONFLYDOJI(df.open,df.high,df.low,df.close) df['ENGULFING'] = talib.CDLENGULFING(df.open,df.high,df.low,df.close) df['EVENINGDOJISTAR'] = talib.CDLEVENINGDOJISTAR(df.open,df.high,df.low,df.close) df['EVENINGSTAR'] = talib.CDLEVENINGSTAR(df.open,df.high,df.low,df.close) df['GAPSIDESIDEWHITE'] = talib.CDLGAPSIDESIDEWHITE(df.open,df.high,df.low,df.close) df['GRAVESTONEDOJI'] = talib.CDLGRAVESTONEDOJI(df.open,df.high,df.low,df.close) df['HAMMER'] = talib.CDLHAMMER(df.open,df.high,df.low,df.close) df['HANGINGMAN'] = talib.CDLHANGINGMAN(df.open,df.high,df.low,df.close) df['HARAMI'] = talib.CDLHARAMI(df.open,df.high,df.low,df.close) df['HARAMICROSS'] = talib.CDLHARAMICROSS(df.open,df.high,df.low,df.close) df['HIGHWAVE'] = talib.CDLHIGHWAVE(df.open,df.high,df.low,df.close) df['HIKKAKE'] = talib.CDLHIKKAKE(df.open,df.high,df.low,df.close) df['HIKKAKEMOD'] = talib.CDLHIKKAKEMOD(df.open,df.high,df.low,df.close) df['HOMINGPIGEON'] = talib.CDLHOMINGPIGEON(df.open,df.high,df.low,df.close) df['IDENTICAL3CROWS'] = talib.CDLIDENTICAL3CROWS(df.open,df.high,df.low,df.close) df['INNECK'] = talib.CDLINNECK(df.open,df.high,df.low,df.close) df['INVERTEDHAMMER'] = talib.CDLINVERTEDHAMMER(df.open,df.high,df.low,df.close) df['KICKING'] = talib.CDLKICKING(df.open,df.high,df.low,df.close) df['KICKINGBYLENGTH'] = talib.CDLKICKINGBYLENGTH(df.open,df.high,df.low,df.close) df['LADDERBOTTOM'] = talib.CDLLADDERBOTTOM(df.open,df.high,df.low,df.close) df['LONGLEGGEDDOJI'] = talib.CDLLONGLEGGEDDOJI(df.open,df.high,df.low,df.close) df['LONGLINE'] = talib.CDLLONGLINE(df.open,df.high,df.low,df.close) df['MARUBOZU'] = talib.CDLMARUBOZU(df.open,df.high,df.low,df.close) df['MATCHINGLOW'] = talib.CDLMATCHINGLOW(df.open,df.high,df.low,df.close) df['MATHOLD'] = talib.CDLMATHOLD(df.open,df.high,df.low,df.close) df['MORNINGDOJISTAR'] = talib.CDLMORNINGDOJISTAR(df.open,df.high,df.low,df.close) df['MORNINGSTAR'] = talib.CDLMORNINGSTAR(df.open,df.high,df.low,df.close) df['ONNECK'] = talib.CDLONNECK(df.open,df.high,df.low,df.close) df['PIERCING'] = talib.CDLPIERCING(df.open,df.high,df.low,df.close) df['RICKSHAWMAN'] = talib.CDLRICKSHAWMAN(df.open,df.high,df.low,df.close) df['RISEFALL3METHODS'] = talib.CDLRISEFALL3METHODS(df.open,df.high,df.low,df.close) df['SEPARATINGLINES'] = talib.CDLSEPARATINGLINES(df.open,df.high,df.low,df.close) df['SHOOTINGSTAR'] = talib.CDLSHOOTINGSTAR(df.open,df.high,df.low,df.close) df['SHORTLINE'] = talib.CDLSHORTLINE(df.open,df.high,df.low,df.close) df['SPINNINGTOP'] = talib.CDLSPINNINGTOP(df.open,df.high,df.low,df.close) df['STALLEDPATTERN'] = talib.CDLSTALLEDPATTERN(df.open,df.high,df.low,df.close) df['STICKSANDWICH'] = talib.CDLSTICKSANDWICH(df.open,df.high,df.low,df.close) df['TAKURI'] = talib.CDLTAKURI(df.open,df.high,df.low,df.close) df['TASUKIGAP'] = talib.CDLTASUKIGAP(df.open,df.high,df.low,df.close) df['THRUSTING'] = talib.CDLTHRUSTING(df.open,df.high,df.low,df.close) df['TRISTAR'] = talib.CDLTRISTAR(df.open,df.high,df.low,df.close) df['UNIQUE3RIVER'] = talib.CDLUNIQUE3RIVER(df.open,df.high,df.low,df.close) df['UPSIDEGAP2CROWS'] = talib.CDLUPSIDEGAP2CROWS(df.open,df.high,df.low,df.close) df['XSIDEGAP3METHODS'] = talib.CDLXSIDEGAP3METHODS(df.open,df.high,df.low,df.close) return df