moved things to a new place !
This commit is contained in:
267
notebooks/autogen/Indicators.py
Normal file
267
notebooks/autogen/Indicators.py
Normal file
@@ -0,0 +1,267 @@
|
||||
#!/usr/bin/env python
|
||||
# coding: utf-8
|
||||
|
||||
# In[2]:
|
||||
|
||||
|
||||
import pandas as pd
|
||||
import datetime
|
||||
import numpy as np
|
||||
#import plotly as pl
|
||||
|
||||
#import plotly.graph_objs as go
|
||||
#from plotly.offline import init_notebook_mode, iplot
|
||||
#from plotly.subplots import make_subplots
|
||||
#init_notebook_mode()
|
||||
|
||||
import CoreTraidMath
|
||||
import CoreDraw
|
||||
|
||||
|
||||
# In[3]:
|
||||
|
||||
|
||||
class coreIndicator():
|
||||
def __init__(self,
|
||||
data=pd.DataFrame(),
|
||||
options={},
|
||||
showMode='None',
|
||||
):
|
||||
'''
|
||||
showMode = None/Ind/PartOf
|
||||
'''
|
||||
self.data=data
|
||||
self.showMode=showMode
|
||||
self.options=options
|
||||
self.overlayInd=None #True/False
|
||||
self.ans=None
|
||||
self.figDict=None
|
||||
|
||||
def getAns(self,data=None):
|
||||
if type(data)!=type(None):
|
||||
self.data=data
|
||||
self.ans=self.getCalculate()
|
||||
if self.showMode=='Ind' or self.showMode=='PartOf':
|
||||
self.figDict=self.getFigDict()
|
||||
if self.showMode=='Ind':
|
||||
self.getFig()
|
||||
return self.ans
|
||||
def getFig(self,row=1):
|
||||
CoreDraw.coreDraw(self.figDict,True)
|
||||
def getCalculate(self):
|
||||
return "Error"
|
||||
def getFigDict(self):
|
||||
return "Error"
|
||||
|
||||
class indicatorAgrigator():
|
||||
'''
|
||||
Тема чисто для отладки
|
||||
jj=indicatorAgrigator().runAll([o1,o2],df_candle[:30])
|
||||
#jj.createIndFromList([o1,o2])
|
||||
#jj.calculateInd(df_candle[:30])
|
||||
|
||||
'''
|
||||
def __init__(self):
|
||||
self.indList=None
|
||||
self.data=None
|
||||
def createInd(self,classDict):
|
||||
return classDict['name'](
|
||||
options=classDict['params'],
|
||||
showMode=classDict['showMode']
|
||||
)
|
||||
|
||||
|
||||
def createIndFromList(self,indList):
|
||||
self.indList=indList
|
||||
ans=[]
|
||||
for i in self.indList:
|
||||
ans.append(self.createInd(i))
|
||||
self.indList=ans
|
||||
return ans
|
||||
|
||||
def calculateInd(self,data):
|
||||
self.data=data
|
||||
for i in self.indList:
|
||||
#i.getAns(data)
|
||||
i.data=self.data
|
||||
i.ans=i.getCalculate()
|
||||
i.figDict=i.getFigDict()
|
||||
#i.getFig()
|
||||
def agrigateFig(self):
|
||||
req=[[]]
|
||||
|
||||
for i in self.indList:
|
||||
if i.overlayInd==True:
|
||||
req[0].append(i)
|
||||
else:
|
||||
req.append([i])
|
||||
CoreDraw.agrigateFig(req,True)
|
||||
def runAll(self,indList,df,needDraw=False):
|
||||
self.createIndFromList(indList)
|
||||
self.calculateInd(df)
|
||||
if needDraw:
|
||||
self.agrigateFig()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# In[4]:
|
||||
|
||||
|
||||
class ind_BB(coreIndicator):
|
||||
|
||||
def getCalculate(self):
|
||||
self.overlayInd=True
|
||||
ans={}
|
||||
opMA={'dataType':'ohcl',
|
||||
'action':'findMean',
|
||||
'actionOptions':{
|
||||
'MeanType':self.options['MeanType'],
|
||||
'valueType':self.options['valueType'],
|
||||
'window':self.options['window']
|
||||
}
|
||||
}
|
||||
ans['BB']=CoreTraidMath.CoreMath(self.data,opMA).ans
|
||||
opSTD={'dataType':'ohcl',
|
||||
'action':'findSTD',
|
||||
'actionOptions':{'valueType':self.options['valueType'],'window':self.options['window']}
|
||||
}
|
||||
ans['STD']=CoreTraidMath.CoreMath(self.data,opSTD).ans
|
||||
ans['pSTD']=ans['BB']+ans['STD']*self.options['kDev']
|
||||
ans['mSTD']=ans['BB']-ans['STD']*self.options['kDev']
|
||||
ans['x']=np.array(self.data['date'][self.options['window']-1:].to_list())
|
||||
return ans
|
||||
def getFigDict(self,row=1):
|
||||
req=[]
|
||||
|
||||
req.append({
|
||||
'vtype':'Scatter',
|
||||
'df':pd.DataFrame(
|
||||
{'value':self.ans['BB'],'date':self.ans['x']}) ,
|
||||
'row':row,
|
||||
'col':1,
|
||||
'name':'BB'
|
||||
|
||||
})
|
||||
req.append({
|
||||
'vtype':'Scatter',
|
||||
'df':pd.DataFrame(
|
||||
{'value':self.ans['pSTD'],'date':self.ans['x']}) ,
|
||||
'row':row,
|
||||
'col':1,
|
||||
'name':'pSTD'
|
||||
|
||||
})
|
||||
req.append({
|
||||
'vtype':'Scatter',
|
||||
'df':pd.DataFrame(
|
||||
{'value':self.ans['mSTD'],'date':self.ans['x']}) ,
|
||||
'row':row,
|
||||
'col':1,
|
||||
'name':'mSTD'
|
||||
|
||||
})
|
||||
|
||||
return req
|
||||
|
||||
|
||||
# In[5]:
|
||||
|
||||
|
||||
class ind_OCHL(coreIndicator):
|
||||
def getCalculate(self):
|
||||
self.overlayInd=True
|
||||
def getFigDict(self,row=1):
|
||||
req=[]
|
||||
|
||||
req.append({
|
||||
'vtype':'OCHL',
|
||||
'df':self.data,
|
||||
'row':1,
|
||||
'col':1,
|
||||
'name':'OHCL'
|
||||
|
||||
})
|
||||
return req
|
||||
|
||||
|
||||
# In[7]:
|
||||
|
||||
|
||||
df_candle = pd.read_csv("../data/EURUSD_price_candlestick.csv")
|
||||
df_candle.rename(columns={'timestamp': 'date'}, inplace=True)
|
||||
df_candle
|
||||
|
||||
|
||||
# In[8]:
|
||||
|
||||
|
||||
o1={
|
||||
'name':ind_OCHL,
|
||||
'params':{},
|
||||
'showMode':'PartOf',
|
||||
}
|
||||
o2={
|
||||
'name':ind_BB,
|
||||
'params':{'MeanType':'SMA','window':25,'valueType':'low','kDev':2},
|
||||
'showMode':'PartOf',
|
||||
}
|
||||
jj=indicatorAgrigator().runAll([o1,o2],df_candle[:300],True)
|
||||
#jj.createIndFromList([o1,o2])
|
||||
#jj.calculateInd(df_candle[:30])
|
||||
|
||||
|
||||
# In[9]:
|
||||
|
||||
|
||||
op={'MeanType':'SMA','window':5,'valueType':'low','kDev':2}
|
||||
a=ind_BB(df_candle[:100],op,'PartOf')
|
||||
|
||||
|
||||
# In[10]:
|
||||
|
||||
|
||||
a.getAns()
|
||||
|
||||
|
||||
# In[11]:
|
||||
|
||||
|
||||
b=ind_OCHL(df_candle[:30],{},'Ind')
|
||||
b.getAns(df_candle[:100])
|
||||
|
||||
|
||||
# In[12]:
|
||||
|
||||
|
||||
opc={'MeanType':'SMA','window':20,'valueType':'low','kDev':2}
|
||||
c=ind_BB(df_candle[:100],opc,'PartOf')
|
||||
c.getAns()
|
||||
|
||||
|
||||
# In[13]:
|
||||
|
||||
|
||||
hhh = CoreDraw.agrigateFig([[b,a,c]],True)
|
||||
|
||||
|
||||
# In[14]:
|
||||
|
||||
|
||||
import indicators
|
||||
|
||||
|
||||
# In[15]:
|
||||
|
||||
|
||||
op_1={'MeanType':'SMA','window':5,'valueType':'low','kDev':2}
|
||||
test_1=indicators.ind_BB(df_candle[:100],op)
|
||||
test_1.getAns()
|
||||
|
||||
|
||||
# In[ ]:
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user