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:
|
||||
|
||||
|
||||
def __init__(self, base_df, params=None):
|
||||
"""
|
||||
Этот класс нужен для того, чтобы проводить операции над датафреймами
|
||||
@ -46,56 +46,48 @@ class CoreMath:
|
||||
ans = self.getSTD()
|
||||
|
||||
return ans
|
||||
|
||||
|
||||
|
||||
|
||||
def getExtremumValue(self):
|
||||
ans=None
|
||||
'''
|
||||
actionOptions:
|
||||
'extremumtype':
|
||||
"""
|
||||
Эта функция возвращает экстремум произвольного типа внутри одного столбца
|
||||
Тип контролируется разделом внутри словаря параметров `self.params` по ключу `actionOptions`:
|
||||
'extremumtype': -- тип экстремума
|
||||
'min'
|
||||
'max'
|
||||
'valueType':
|
||||
'open'
|
||||
'close'
|
||||
'high'
|
||||
'low'
|
||||
'''
|
||||
:return ans, экстремум произвольного типа
|
||||
"""
|
||||
ans=None
|
||||
if self.params['actionOptions']['extremumtype']=='max':
|
||||
ans=max(self.col)
|
||||
|
||||
|
||||
if self.params['actionOptions']['extremumtype']=='min':
|
||||
ans=min(self.col)
|
||||
|
||||
|
||||
return ans
|
||||
|
||||
|
||||
|
||||
def getMeanValue(self):
|
||||
'''
|
||||
actionOptions:
|
||||
"""
|
||||
Божественный код
|
||||
Эта функция возвращает среднее значение одного из следующих типов.
|
||||
Для определения типа используется словарь `self.params`, по ключу `actionOptions`, релевантные ключи выглядят
|
||||
так:
|
||||
'MeanType':
|
||||
'MA'
|
||||
'SMA'
|
||||
'EMA'
|
||||
'WMA'
|
||||
--'SMMA'
|
||||
'valueType':
|
||||
'open'
|
||||
'close'
|
||||
'high'
|
||||
'low'
|
||||
'window'
|
||||
'span'
|
||||
'weights'
|
||||
'''
|
||||
'MA' -- среднее по всему столбцу
|
||||
'SMA' -- скользящее среднее
|
||||
'EMA' -- экспоненциальное скользящее среднее
|
||||
'WMA' -- взвешенное скользящее среднее
|
||||
'window' -- размер окна
|
||||
'span' -- >=1 , аналог окна для экспоненциального среднего, чем он больше тем меньше коэффициент сглаживания
|
||||
'weights' -- numpy.ndarray, список размером в параметр `window`, конкретные веса для каждого элемента
|
||||
"""
|
||||
|
||||
ans=None
|
||||
|
||||
if self.params['actionOptions']['MeanType']=='MA':
|
||||
ans = self.col.mean()
|
||||
if self.params['actionOptions']['MeanType']=='SMA':
|
||||
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':
|
||||
ans=self.col.ewm(span=self.params['actionOptions']['span'], adjust=False).mean().to_list()
|
||||
if self.params['actionOptions']['MeanType']=='WMA':
|
||||
@ -105,10 +97,8 @@ class CoreMath:
|
||||
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()
|
||||
|
||||
|
||||
|
||||
return(ans)
|
||||
|
||||
return ans
|
||||
|
||||
def getSTD(self):
|
||||
'''
|
||||
actionOptions:
|
||||
@ -119,7 +109,7 @@ class CoreMath:
|
||||
|
||||
|
||||
'''
|
||||
|
||||
|
||||
ans=None
|
||||
|
||||
|
||||
@ -128,10 +118,10 @@ class CoreMath:
|
||||
ans=np.asarray([])
|
||||
for i in range(len(self.col)-window+1):
|
||||
ans=np.append(ans, np.std(self.col[i:i+window], ddof=1))
|
||||
|
||||
|
||||
except:
|
||||
#window = len(self.col)
|
||||
ans=np.std(self.col, ddof=1)
|
||||
|
||||
return ans
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user