qzhjiang
qzhjiang
``` Python def WMA(X, n): # type: (np.ndarray, int) -> np.ndarray """ 通达信WMA, X的N日加权移动平均,算法 Yn = (1*X1+2*X2+3*X3+...+n*Xn)/(1+2+3+...+Xn) :param X: 数组。源数据。 :param n: 整数。周期。 :return: 数组。X的N日加权移动平均 """ weights = np.array(range(1, n...
```Python def sumbars(X, A): # type: (np.ndarray, Optional[np.ndarray, float, int]) -> np.ndarray """ 通达信SumBars函数的Python实现 SumBars函数将X向前累加,直到大于等于A, 返回这个区间的周期数。例如SUMBARS(VOL, CAPITAL),求完全换手的周期数。 :param X: 数组。被累计的源数据。 源数组中不能有小于0的元素。 :param A: 数组(一组)或者浮点数(一个)或者整数(一个),累加截止的界限数 :return: 数组。各K线分别对应的周期数 """ X = np.flipud(X)...
myTT中现在的SLOPE函数: ```Python def SLOPE(S, N, RS=False): # 返S序列N周期回线性回归斜率 (默认只返回斜率,不返回整个直线序列) M = pd.Series(S[-N:]) poly = np.polyfit(M.index, M.values, deg=1) Y = np.polyval(poly, M.index) if RS: return Y[1] - Y[0], Y return Y[1]...
看了一下`myTT`中对`DMA`函数的定义: ```python # myTT定义的DMA def DMA(CLOSE, N1=10, N2=50, M=10): # 平行线差指标 DIF = MA(CLOSE, N1) - MA(CLOSE, N2) DIF_MA = MA(DIF, M) return DIF, DIF_MA ``` 显然,与通达信的动态移动平均函数`DMA`不是一回事。 为此,给出与通达信完全一致的`DMA`函数定义: ```python #...
SMA函数正确的写法应该是: ```python def SMA(S, N, M=1): # 中国式的SMA,至少需要120周期才精确,直接定义alpha=m/n return pd.Series(S).ewm(alpha=M / N, adjust=True).mean().values ```
mytt.py的py2版本中,SMA定义为: ```python def SMA(S, N, M=1): #中国式的SMA,至少需要120周期才精确 (雪球180周期) alpha=1/(1+com) return pd.ewma(S,com=N-M,adjust=True) ``` 已知: alpha =1/(1+com) 又知道,SMA正确的alpha是M/N alpha = M/N 容易求出: com = N/M-1=(N-M)/M 所以,py2中SMA中正确的定义应该是: ```python def SMA(S, N, M=1): #中国式的SMA,至少需要120周期才精确...