Investing Py-Checkpoint
Investing Py-Checkpoint
def __init__(self,rolling_mean:int=44):
'''
args:
rolling_mean: Rolling Simple Mean to calulate
'''
super().__init__()
self.rm = rolling_mean
self._eligible = None
self.data = self.read_data()
self.indices = {'nifty_50': 'Nifty 50','nifty_100':'Nifty
100','nifty_200':'Nifty 200','nifty_500':'Nifty 500'}
self.all_ichi = None
self.picked = None
self._old_budget = -1
self.diff = -1
all_ichi = {}
data = self.data[index] if index else self.all_stocks
for name in data:
df = self.Ichimoku_Cloud(self.open_downloaded_stock(name))
count = self._is_ichi(df,index)
if count and df.loc[0,'HIGH'] < budget:
all_ichi[name] = count
self.all_ichi = all_ichi
return self.all_ichi
def get_index(self,symbol:str):
'''
Get the Index of the symbol from nifty 50,100,200,500
args:
symbol: Name / ID od the company on NSE
'''
for index in self.indices.keys():
if symbol in self.data[index]:
return self.indices[index]
return 'Other'
keys = set(self._eligible.keys()).intersection(set(self.data[nifty])) if
nifty else list(self._eligible.keys())
if not len(keys):
warnings.warn('No matching Stocks Found. Increase Distance or Nifty
Index')
return None
values = []
one_can = []
two_can = []
three_can = []
atr = []
rsi = []
else:
values.append(df.iloc[0,:])
one_can.append(CP.find_name(df.loc[0,'OPEN'],df.loc[0,'CLOSE'],df.loc[0,'LOW'],df.l
oc[0,'HIGH']))
two_can.append(CP.double_candle_pattern(df))
three_can.append(CP.triple_candle_pattern(df))
rsi.append(self.get_RSI(df))
atr.append(self.get_ATR(df))
columns = df.columns
df = pd.DataFrame(values,columns=columns,index = range(len(values)))
df = df.merge(pd.DataFrame({'SYMBOL':self._eligible.keys(),
'Diff':self._eligible.values()}),on='SYMBOL')
expec_change = []
max_risk = []
pic = self.picked.copy()
for index in pic.index:
name = pic.loc[index,'SYMBOL']
result = self.get_particulars(name,budget,risk)
if result:
expec_change.append(result['Target %'])
max_risk.append(result['Max loss on this config'])
else:
expec_change.append(np.inf)
max_risk.append(np.inf)
if plot_candle:
AnalyseStocks().plot_candlesticks(df)
if quantity < 1:
r = round(risk + (diff - risk), 2)
warnings.warn(f"Risk should be atleast {r} for you to afford {name}")
return None
In = Investing()