moved things to a new place !
This commit is contained in:
194
notebooks/autogen/indicators_v2.py
Normal file
194
notebooks/autogen/indicators_v2.py
Normal file
@@ -0,0 +1,194 @@
|
||||
#!/usr/bin/env python
|
||||
# coding: utf-8
|
||||
|
||||
# In[8]:
|
||||
|
||||
|
||||
import pandas as pd
|
||||
import datetime
|
||||
import numpy as np
|
||||
|
||||
import CoreTraidMath
|
||||
|
||||
|
||||
# In[9]:
|
||||
|
||||
|
||||
df_candle = pd.read_csv(r"../data/EURUSD_price_candlestick.csv")
|
||||
df_candle.rename(columns={'timestamp': 'date'}, inplace=True)
|
||||
df_candle
|
||||
|
||||
|
||||
# In[10]:
|
||||
|
||||
|
||||
class coreIndicator():
|
||||
|
||||
def __init__(self,options: dict, dataType: str = None, predictType: str = None, name: str = None):
|
||||
self.options = options
|
||||
self.dataType = dataType #ochl
|
||||
self.predictType = predictType #trend
|
||||
|
||||
|
||||
def getAns(self, data: pd.DataFrame() ):
|
||||
return "ERROR"
|
||||
|
||||
|
||||
# In[11]:
|
||||
|
||||
|
||||
class ind_BB(coreIndicator):
|
||||
"""
|
||||
options
|
||||
MeanType -> SMA
|
||||
window -> int
|
||||
valueType -> str: low, high, open, close
|
||||
kDev -> float
|
||||
|
||||
"""
|
||||
|
||||
def __init__(self,options: dict,name = None):
|
||||
super().__init__(
|
||||
options = options,
|
||||
dataType = 'ochl',
|
||||
predictType = 'trend',
|
||||
name = name
|
||||
)
|
||||
|
||||
def getAns(self, data: pd.DataFrame()):
|
||||
data=data.reset_index(drop=True)
|
||||
ans={}
|
||||
opMA={'dataType':'ohcl',
|
||||
'action':'findMean',
|
||||
'actionOptions':{
|
||||
'MeanType':self.options['MeanType'],
|
||||
'valueType':self.options['valueType'],
|
||||
'window':self.options['window']
|
||||
}
|
||||
}
|
||||
ans['BB']=CoreTraidMath.CoreMath(data,opMA).ans
|
||||
opSTD={'dataType':'ohcl',
|
||||
'action':'findSTD',
|
||||
'actionOptions':{'valueType':self.options['valueType'],'window':self.options['window']}
|
||||
}
|
||||
ans['STD']=CoreTraidMath.CoreMath(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(data['date'][self.options['window']-1:].to_list())
|
||||
self.ans= ans
|
||||
return ans
|
||||
|
||||
|
||||
# In[12]:
|
||||
|
||||
|
||||
class indicatorsAgrigator:
|
||||
|
||||
def __init__ (self,indDict={}):
|
||||
self.indDict = indDict
|
||||
self.indInst = {}
|
||||
self.ans={}
|
||||
self.createIndicatorsInstance()
|
||||
|
||||
def createIndicatorsInstance(self):
|
||||
for i in self.indDict.keys():
|
||||
self.indInst[i]=self.indDict[i]['className'](self.indDict[i]['params'])
|
||||
|
||||
def getAns(self,dataDict={}):
|
||||
ans={}
|
||||
for i in dataDict.keys():
|
||||
ans[i] = self.indInst[i].getAns(dataDict[i])
|
||||
return ans
|
||||
|
||||
|
||||
# In[13]:
|
||||
|
||||
|
||||
indicators = {
|
||||
'ind_BB':{
|
||||
'className':ind_BB,
|
||||
'params':{'MeanType':'SMA','window':15,'valueType':'close','kDev':2.5}
|
||||
}
|
||||
}
|
||||
dataDic={
|
||||
'ind_BB':df_candle[:1000]
|
||||
}
|
||||
|
||||
|
||||
# In[ ]:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# In[14]:
|
||||
|
||||
|
||||
ia= indicatorsAgrigator(indicators)
|
||||
|
||||
|
||||
# In[15]:
|
||||
|
||||
|
||||
ia.__dict__
|
||||
|
||||
|
||||
# In[16]:
|
||||
|
||||
|
||||
ia.indInst['ind_BB'].__dict__
|
||||
|
||||
|
||||
# In[17]:
|
||||
|
||||
|
||||
ia.getAns(dataDict=dataDic)
|
||||
|
||||
|
||||
# In[ ]:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# In[ ]:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# In[18]:
|
||||
|
||||
|
||||
op = {'MeanType':'SMA','window':5,'valueType':'low','kDev':2}
|
||||
|
||||
|
||||
# In[19]:
|
||||
|
||||
|
||||
t = ind_BB(op)
|
||||
|
||||
|
||||
# In[20]:
|
||||
|
||||
|
||||
t.getAns(df_candle[:100])
|
||||
|
||||
|
||||
# In[21]:
|
||||
|
||||
|
||||
t.__dict__
|
||||
|
||||
|
||||
# In[ ]:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# In[ ]:
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user