From fabc61302afa1003063d7d5d773722fbbefcc0d7 Mon Sep 17 00:00:00 2001 From: Redsandy <34872843+Redsandyg@users.noreply.github.com> Date: Fri, 4 Mar 2022 15:37:21 +0300 Subject: [PATCH] Add files via upload --- Core/Ind_Ishimoku.py | 189 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 189 insertions(+) create mode 100644 Core/Ind_Ishimoku.py diff --git a/Core/Ind_Ishimoku.py b/Core/Ind_Ishimoku.py new file mode 100644 index 0000000..4e3476e --- /dev/null +++ b/Core/Ind_Ishimoku.py @@ -0,0 +1,189 @@ + +import pandas as pd +import datetime +import numpy as np +import plotly as pl +import plotly.graph_objs as go +import matplotlib.pyplot as plt +import math +import scipy +import random +import statistics + + +import datetime +import matplotlib.dates as mdates +import matplotlib.pyplot as plt + +import mplfinance as mpf + +import plotly +#import plotly.plotly as py +import plotly.graph_objs as go +# these two lines allow your code to show up in a notebook +from plotly.offline import init_notebook_mode, iplot +from plotly.subplots import make_subplots +import CoreDraw +init_notebook_mode() +import CoreTraidMath +import plotly.express as px + + +class Ishimoku: + + def __init__(self, base_df, options={ + 'dataType':'ohcl', + 'short':9, + 'middle':26, + 'long':52, + 'backstep':26, + 'forwardstep':26 + }, + needShow=False, + showOnlyIndex=True + ): + + self.base_df=base_df.reset_index(drop=True) + self.options=options + + self.ans=self.getAns() + if needShow==True: + self.fig=self.pltShow(showOnlyIndex) + + + def getTankenSen(self): + y=np.asarray([]) + x=np.asarray([]) + for i in range(self.options['short'],self.base_df.shape[0]): + maxValue=max(self.base_df['high'][i-self.options['short']:i]) + minValue=min(self.base_df['low'][i-self.options['short']:i]) + y=np.append(y,(maxValue+minValue)*0.5) + x=np.append(x,self.base_df['date'][i]) + #ts.append(max(self.base_df[self.options['colName']['high']][i-self.options['short']:i])) + ans={'y':y,'x':x} + return(ans) + + def getKijunSen(self): + y=np.asarray([]) + x=np.asarray([]) + for i in range(self.options['middle'],self.base_df.shape[0]): + maxValue=max(self.base_df['high'][i-self.options['middle']:i]) + minValue=min(self.base_df['low'][i-self.options['middle']:i]) + y=np.append(y,(maxValue+minValue)*0.5) + x=np.append(x,self.base_df['date'][i]) + #ts.append(max(self.base_df[self.options['colName']['high']][i-self.options['short']:i])) + ans={'y':y,'x':x} + return(ans) + + def getChinkoSpan(self): + y=np.asarray(self.base_df['close'][self.options['backstep']:]) + x=np.asarray(self.base_df['date'][:self.base_df.shape[0]-self.options['backstep']]) + ans={'y':y,'x':x} + return(ans) + + def getSenkouSpanA(self, data): + y=np.asarray([]) + x=np.asarray([]) + shift=len(data['TankenSen']['y'])-len(data['KijunSen']['y']) + for i in range(len(data['KijunSen']['x'])-self.options['forwardstep']): + y=np.append(y,(data['KijunSen']['y'][i]+data['TankenSen']['y'][i+shift])*0.5) + x=np.append(x,data['KijunSen']['x'][i+self.options['forwardstep']]) + + ans={'y':y,'x':x} + return(ans) + + def getSenkouSpanB(self): + y=np.asarray([]) + x=np.asarray([]) + for i in range(self.options['long'],self.base_df.shape[0]-self.options['forwardstep']): + maxValue=max(self.base_df['high'][i-self.options['long']:i]) + minValue=min(self.base_df['low'][i-self.options['long']:i]) + y=np.append(y,(maxValue+minValue)*0.5) + x=np.append(x,self.base_df['date'][i+self.options['forwardstep']]) + #ts.append(max(self.base_df[self.options['colName']['high']][i-sel + + ans={'y':y,'x':x} + return(ans) + + + + + + + def getAns(self): + ans={} + ans['TankenSen']=self.getTankenSen() + ans['KijunSen']=self.getKijunSen() + ans['ChinkoSpan']=self.getChinkoSpan() + ans['SenkouSpanA']=self.getSenkouSpanA(ans) + ans['SenkouSpanB']=self.getSenkouSpanB() + #print(ans) + return(ans) + + + def pltShow(self,showOnlyIndex): + ans=None + req=[] + + req.append({ + 'vtype':'Scatter', + 'df':pd.DataFrame( + {'value':self.ans['TankenSen']['y'],'date':self.ans['TankenSen']['x']}) , + 'row':1, + 'col':1, + 'name':'TankenSen' + + }) + + req.append({ + 'vtype':'Scatter', + 'df':pd.DataFrame( + {'value':self.ans['KijunSen']['y'],'date':self.ans['KijunSen']['x']}) , + 'row':1, + 'col':1, + 'name':'KijunSen' + + }) + + req.append({ + 'vtype':'Scatter', + 'df':pd.DataFrame( + {'value':self.ans['ChinkoSpan']['y'],'date':self.ans['ChinkoSpan']['x']}) , + 'row':1, + 'col':1, + 'name':'ChinkoSpan' + + }) + + req.append({ + 'vtype':'Scatter', + 'df':pd.DataFrame( + {'value':self.ans['SenkouSpanA']['y'],'date':self.ans['SenkouSpanA']['x']}) , + 'row':1, + 'col':1, + 'name':'SenkouSpanA' + + }) + req.append({ + 'vtype':'Scatter', + 'df':pd.DataFrame( + {'value':self.ans['SenkouSpanB']['y'],'date':self.ans['SenkouSpanB']['x']}) , + 'row':1, + 'col':1, + 'name':'SenkouSpanB' + + }) + + + if not showOnlyIndex: + req.append({ + 'vtype':'OCHL', + 'df':self.base_df, + 'row':1, + 'col':1, + 'name':'OHCL' + + }) + ans = CoreDraw.coreDraw(req,True) + #print(ans) + return ans \ No newline at end of file