InvestmentCopilot / PatternRecognition.py
shreyashnadage
Update PatternRecognition.py
fbc75c3 unverified
import ta
import pandas as pd
import numpy as np
def GetPatternForData(stock_data_df):
candle_name_list = ta.get_function_groups()['Pattern Recognition']
tech_analysis_df = stock_data_df.iloc[-10:].copy()
op_df = tech_analysis_df.Open
hi_df = tech_analysis_df.High
lo_df = tech_analysis_df.Low
cl_df = tech_analysis_df.Close
for candle in candle_name_list:
tech_analysis_df[candle] = getattr(ta, candle)(op_df, hi_df, lo_df, cl_df)
result = pd.DataFrame(tech_analysis_df[['Date']+candle_name_list].sum(), columns=['Count'])
filtered_results = result[result.Count != 0]
if filtered_results.empty:
return None, tech_analysis_df
else:
return filtered_results[filtered_results.Count == filtered_results.Count.max()].index[0], tech_analysis_df
return None, tech_analysis_df
def ComputeChaikinADSignal(stock_data_df):
ADOSC_data = stock_data_df.copy()
ADOSC_data['ADOSC'] = ta.ADOSC(ADOSC_data.High, ADOSC_data.Low, ADOSC_data.Close, ADOSC_data.Volume,
fastperiod=3, slowperiod=10)
ADOSC_data.dropna(inplace=True)
ADOSC_data['ADOSC_chg'] = np.log(ADOSC_data['ADOSC']/ADOSC_data['ADOSC'].shift(1))
ADOSC_data.dropna(inplace=True)
return ADOSC_data
def ComputeMACDSignal(stock_data_df):
macd_data_df = stock_data_df.copy()
macd_data_df['macd'], macd_data_df['macdsignal'], macd_data_df['macdhist'] =\
ta.MACD(macd_data_df.Close, fastperiod=12, slowperiod=26, signalperiod=9)
macd_data_df.dropna(inplace=True)
return macd_data_df