commented getextremum
realized the algorithm in get mean
This commit is contained in:
parent
4ad23a9bea
commit
8a2a2615ac
@ -2,7 +2,7 @@ import numpy as np
|
|||||||
|
|
||||||
|
|
||||||
class CoreMath:
|
class CoreMath:
|
||||||
|
|
||||||
def __init__(self, base_df, params=None):
|
def __init__(self, base_df, params=None):
|
||||||
"""
|
"""
|
||||||
Этот класс нужен для того, чтобы проводить операции над датафреймами
|
Этот класс нужен для того, чтобы проводить операции над датафреймами
|
||||||
@ -46,56 +46,48 @@ class CoreMath:
|
|||||||
ans = self.getSTD()
|
ans = self.getSTD()
|
||||||
|
|
||||||
return ans
|
return ans
|
||||||
|
|
||||||
|
|
||||||
def getExtremumValue(self):
|
def getExtremumValue(self):
|
||||||
ans=None
|
"""
|
||||||
'''
|
Эта функция возвращает экстремум произвольного типа внутри одного столбца
|
||||||
actionOptions:
|
Тип контролируется разделом внутри словаря параметров `self.params` по ключу `actionOptions`:
|
||||||
'extremumtype':
|
'extremumtype': -- тип экстремума
|
||||||
'min'
|
'min'
|
||||||
'max'
|
'max'
|
||||||
'valueType':
|
:return ans, экстремум произвольного типа
|
||||||
'open'
|
"""
|
||||||
'close'
|
ans=None
|
||||||
'high'
|
|
||||||
'low'
|
|
||||||
'''
|
|
||||||
if self.params['actionOptions']['extremumtype']=='max':
|
if self.params['actionOptions']['extremumtype']=='max':
|
||||||
ans=max(self.col)
|
ans=max(self.col)
|
||||||
|
|
||||||
if self.params['actionOptions']['extremumtype']=='min':
|
if self.params['actionOptions']['extremumtype']=='min':
|
||||||
ans=min(self.col)
|
ans=min(self.col)
|
||||||
|
|
||||||
|
|
||||||
return ans
|
return ans
|
||||||
|
|
||||||
|
|
||||||
def getMeanValue(self):
|
def getMeanValue(self):
|
||||||
'''
|
"""
|
||||||
actionOptions:
|
Божественный код
|
||||||
|
Эта функция возвращает среднее значение одного из следующих типов.
|
||||||
|
Для определения типа используется словарь `self.params`, по ключу `actionOptions`, релевантные ключи выглядят
|
||||||
|
так:
|
||||||
'MeanType':
|
'MeanType':
|
||||||
'MA'
|
'MA' -- среднее по всему столбцу
|
||||||
'SMA'
|
'SMA' -- скользящее среднее
|
||||||
'EMA'
|
'EMA' -- экспоненциальное скользящее среднее
|
||||||
'WMA'
|
'WMA' -- взвешенное скользящее среднее
|
||||||
--'SMMA'
|
'window' -- размер окна
|
||||||
'valueType':
|
'span' -- >=1 , аналог окна для экспоненциального среднего, чем он больше тем меньше коэффициент сглаживания
|
||||||
'open'
|
'weights' -- numpy.ndarray, список размером в параметр `window`, конкретные веса для каждого элемента
|
||||||
'close'
|
"""
|
||||||
'high'
|
|
||||||
'low'
|
|
||||||
'window'
|
|
||||||
'span'
|
|
||||||
'weights'
|
|
||||||
'''
|
|
||||||
ans=None
|
ans=None
|
||||||
|
|
||||||
if self.params['actionOptions']['MeanType']=='MA':
|
if self.params['actionOptions']['MeanType']=='MA':
|
||||||
ans = self.col.mean()
|
ans = self.col.mean()
|
||||||
if self.params['actionOptions']['MeanType']=='SMA':
|
if self.params['actionOptions']['MeanType']=='SMA':
|
||||||
ans=np.convolve(self.col, np.ones(self.params['actionOptions']['window']), 'valid') / self.params['actionOptions']['window']
|
ans=np.convolve(self.col, np.ones(self.params['actionOptions']['window']), 'valid') / self.params['actionOptions']['window']
|
||||||
#ans=self.col.rolling(window=self.params['actionOptions']['window']).mean().to_list()
|
|
||||||
|
|
||||||
if self.params['actionOptions']['MeanType']=='EMA':
|
if self.params['actionOptions']['MeanType']=='EMA':
|
||||||
ans=self.col.ewm(span=self.params['actionOptions']['span'], adjust=False).mean().to_list()
|
ans=self.col.ewm(span=self.params['actionOptions']['span'], adjust=False).mean().to_list()
|
||||||
if self.params['actionOptions']['MeanType']=='WMA':
|
if self.params['actionOptions']['MeanType']=='WMA':
|
||||||
@ -105,10 +97,8 @@ class CoreMath:
|
|||||||
weights=np.arange(1,self.params['actionOptions']['window']+1)
|
weights=np.arange(1,self.params['actionOptions']['window']+1)
|
||||||
ans=self.col.rolling(window=self.params['actionOptions']['window']).apply(lambda x: np.sum(weights*x) / weights.sum(), raw=False).to_list()
|
ans=self.col.rolling(window=self.params['actionOptions']['window']).apply(lambda x: np.sum(weights*x) / weights.sum(), raw=False).to_list()
|
||||||
|
|
||||||
|
return ans
|
||||||
|
|
||||||
return(ans)
|
|
||||||
|
|
||||||
def getSTD(self):
|
def getSTD(self):
|
||||||
'''
|
'''
|
||||||
actionOptions:
|
actionOptions:
|
||||||
@ -119,7 +109,7 @@ class CoreMath:
|
|||||||
|
|
||||||
|
|
||||||
'''
|
'''
|
||||||
|
|
||||||
ans=None
|
ans=None
|
||||||
|
|
||||||
|
|
||||||
@ -128,10 +118,10 @@ class CoreMath:
|
|||||||
ans=np.asarray([])
|
ans=np.asarray([])
|
||||||
for i in range(len(self.col)-window+1):
|
for i in range(len(self.col)-window+1):
|
||||||
ans=np.append(ans, np.std(self.col[i:i+window], ddof=1))
|
ans=np.append(ans, np.std(self.col[i:i+window], ddof=1))
|
||||||
|
|
||||||
except:
|
except:
|
||||||
#window = len(self.col)
|
#window = len(self.col)
|
||||||
ans=np.std(self.col, ddof=1)
|
ans=np.std(self.col, ddof=1)
|
||||||
|
|
||||||
return ans
|
return ans
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user