什么是薛斯通道?
上个世纪70年代,美国人薛斯最早发明了薛斯通道。
他本人曾是研究火箭运行的。
薛斯通道包括两组通道指标,分别是长期大通道指标(100天)和短期小通道指标(10天)。
股价实际上是被短期小通道包容着在长期大通道中上下运行。
薛斯通道又可分为四条轨道线:
内下轨(紫线)代表短期支撑,内上轨(黄线)代表短期压力。
外下轨(绿线)代表长期支撑,外上轨(白线)代表长期压力。
理论上,薛斯通道价触及大通道下轨时买进,在峰顶当股价触及大通道上轨时卖出。
但在实际操作中,小通道下轨触及大通道下轨也是买进时机,小通道上轨由上向下穿过大通道上轨也是卖出时机。
股价触及大通道下轨,此时股价往往正处在谷底位置。
薛斯通道的公式讲解
参数说明:
M:长期指标,N:短期指标
例如:M=10,N=103
CLOSE:收盘价,HIGH:最高价,LOW:最低价
MA5():5日移动平均线,即5日线
MA20():20日移动平均线,即20日线
ABS():绝对值
DMA():动态移动平均线
“DMA(X,A):求X的动态移动平均。
A 为动态因子
Y = DMA(X,A) = A * X + (1 - A) * Y'
其中Y'表示上一周期Y值
”
公式推导如下:
_tmp1 = (2*CLOSE + HIGH + LOW)/4
_tmp2 = MA20(CLOSE)
AA = MA5(_tmp1)
CC = ABS(_tmp1-_tmp2)/_tmp2
DD = DMA(CLOSE, CC)
CH1 = AA * N / 100
CH2 = AA * (200-N) / 100
CH3 = (1 + M/100) * DD
CH4 = (1 - M/100) * DD
python源码
def ma_x(data_list, x):
_ma_list = []
for index, value in enumerate(data_list):
tmp = round(sum(data_list[:index + 1]) / (index + 1), 3) \
if index < x else \
round(sum(data_list[index - x:index]) / x, 3)
_ma_list.append(tmp)
return _ma_list
def dma(data_list, cc_list):
_dma_list = [0]
for index, value in enumerate(data_list):
_tmp = _dma_list[index]
_dma_list.append(cc_list[index] * value + (1 - cc_list[index]) * _tmp)
del _dma_list[0]
return _dma_list
def xs2(df, M, N):
df['AA'] = (2 * df['收盘'] + df['最高'] + df['最低']) / 4
AA_list = df['AA'].to_list()
CLOSE_list = df['收盘'].to_list()
df['AA_MA5'] = ma_x(AA_list, 5)
df['CLOSE_MA20'] = ma_x(CLOSE_list, 20)
df['CC'] = abs(df['AA'] - df['CLOSE_MA20']) / df['CLOSE_MA20']
CC_list = df['CC'].to_list()
df['DD'] = dma(CLOSE_list, CC_list)
df['CH1'] = df['AA'] * N / 100
df['CH2'] = df['AA'] * (200 - N) / 100
df['CH3'] = (1 + M / 100) * df['DD']
df['CH4'] = (1 - M / 100) * df['DD']
df['XS_delta'] = 100 * (df['收盘'] - df['CH4']) / df['收盘']
return df
其中,'XS_delta'为CH4和收盘价归一化的值,可用于量化,示例如下:
图中的红色虚线为收盘价戳破薛斯通道底线的位置。
后面有时间做一下回测验证下。
粉丝突破1000时发这个抄底指标的数据表格。
最后
本文,
包括本文所有数据图表均由作者Python程序而来,实属不易!~~
请帮忙点赞,分享和在看,谢谢!~
如有低频量化的交流,请留言,谢谢!~