量化交易backtrader实践(三)_指标与策略篇(8)_股票软件指标参考C

股票软件的技术指标公式共有15个小类,前面已经对01_大势型,02_超买超卖型,03_均线型以及04_成交量型进行了学习和实践。随着触及的知识点越来越多,越发的发现自己还有太多的东西需要学习和绝知此事要躬行的实践。

05_趋势型指标

趋势型指标(Trend Indicators)是技术分析中用来识别、跟踪和预测市场趋势的一系列工具和指标。它们帮助交易者和投资者确定市场的方向,无论是上升趋势、下降趋势还是横盘整理(无明显趋势)。

我们把股票软件中趋势型的指标列出来,如下 

550

这里面有我们已经在backtrader内置指标中实践过的,比如DMI,MACD,TRIX;还有明显是MACD类的变异指标VMACD,SMACD...其他的一些似乎有些陌生,其中CYE我们会在鬼系指标中再看,而GDX可以放到通道类指标以外,其他的一些指标我们都看一看。

QS01_ASI振动升降指标

这是一个加密公式,我们看到在列出的指标中用黄色图标表示,所以我们需要通过搜索和自己编写来实现这个指标。

 参考文档

A_简介与公式

ASI指标全称为Accumulation Swing Index,即积累摆动指数。它是一种用于衡量市场供需关系强度的技术指标,由Welles Wilder开发。ASI指标结合了价格和成交量的变化,试图从动量的角度来衡量多空双方的力量对比。

SI指标即Swing Index,它的目的是确定市场的实际强度和趋势。

这个指标多用于期货市场。

其中,A为Accumulation累积,即SI数据的SUM值,因此ASI是基于SI指标得到的。通过搜索,从某视频中截图如下为SI指标的计算公式。

 在上面的公式里还是有一点问题的,比如说H2应该是当天的最高价而不应该写Open(估计是笔误),另外 R的第1步中,L2-C1即当天最低价减昨收,它永远是比H2-C1即当天最高价减昨收要小的,如果公式这样就不对了,包括K要取MAX(今高减昨收,今低减昨收),这个也肯定永远只会取到今高减昨收的。在另外的参考文章中我们看到了会取绝对值,那么可以解释的通,即如果今天是跳空高开上涨则H2-C1值比较大,但如果今天是跳空低开下跌则L2-C1的绝对值较大。但另外参考文章中的公式也是有几步不对的地方的,所以这里我们需要自己探索一下。

在这个公式中,我们又看到了ATR的影子,回顾一下ATR的计算:

MTR:MAX(MAX((HIGH-LOW),
        ABS(REF(CLOSE,1)-HIGH)),
        ABS(REF(CLOSE,1)-LOW));

不难发现,R的计算条件1其实就是ATR的第2行昨收减今高的绝对值;而R的计算条件2就是ATR的第3行昨收减今低的绝对值,而R的计算条件3就是ATR的第1行H-L。所以R的选择就可以认为是ATR的最大真实波动。

接着SI指标在得到R的选择项后,进行了比ATR更多的后续计算,这里看得出是加权平均计算,也就是如果跳空高开上涨(涨幅为三者最大)就用最高价减昨收权重为1,而此时把低减昨收的值权重为0.5,昨天的K线实体的高度权重为0.25。而如果当天与昨收平开且当天振幅为三者最大,则高减低权重为1,昨天的实体高度权重为0.5。通过这样的加权方式,得到三种条件下不同的R值,分别对应跳空高开上涨,跳空低开下跌,当天振幅大这三种情况。在公式里以R为分母,从而把相对应的情况分别计算,比直接用常量得到的值更有趋势性。

分子的计算也是加权的,今收减昨收为权重1,今天的K线实体高度为0.5,昨天的实体高度为0.25,也就是不仅考虑了收盘价,还添加了实体高度的影响,可以发现,如果实体高度越大(上下影线越短)则对分子的数值影响越大,从而削弱了上下影线的影响。

K的二选一也同样是区分是上涨还是下跌,而L是LimitMove是限值,这个应该是要根据每个商品/股票它的价格来的。

由上述分析,SI指标其实就是相对于正常只以收盘价为基准的摆动,值大于0相当于比当前收盘价上涨趋势,小于0则为下跌趋势,但这个指标公式只比较了今,昨两天的数值,它的变化非常的频繁,因此用累积函数进行计算,就能获取到连续的超势了。

根据分析更改了公式如下,


A1:=H-REF(C,1);
B1:=ABS(L-REF(C,1));
C1:=(H - L);
D1:=(REF(C,1)-REF(O,1));

R1:= A1-0.5*B1 + 0.25*D1;
R2:= B1-0.5*A1 + 0.25*D1;
R3:= C1+ 0.25*D1;

R:= IF(A1>B1 AND A1>C1, R1, IF(B1>A1 AND B1>C1, R2, R3));

E1:= C-REF(C,1);
F1:= C-O;
G1:= REF(C,1)-REF(O,1);
X1:= E1 + 0.5*F1 + 0.25*G1;

K1:= MAX(A1,B1);
L1:=5;

SI:= 50*X1 / R*K1/L1;
ASI1: SUM(SI,0);

可以看到这个公式还不完善,它只是在趋势上跟软件内置的ASI相近。 

B_应用分析

首先这是个主要应用于期货的指标,对于不同价格其sum出来的数值是不一样的,因此一般的情况下在股票中我们不使用它的具体数值做策略,常见的就是趋势以及跟它自身MA的双均线交叉策略。由于采用了加权计算,它在某些时候会比股价(收盘价)的变化更强或更弱一些,即所谓的少数偶尔ASI指标领先股价的情况。

ASI一般与股价走势维持同步波动,并非每一次行情都有领先作用。

如果简单的使用金叉买,死叉卖的策略,如果添加了EXPMA等双均线指标则会看到ASI似乎的确经常会提前触发交叉。但其实这些提前的判定往往跟周期的大小是有关系的,例如下图中把EXPMA的两条均线的周期改到3和9,这样就做成了一个超短周期的双均线,可以与ASI对比看到其金叉和死叉的位置基本上是一致的。只有在大起大落的极端情况下,例如最右侧的一样大涨后连续快速下跌,可以发现ASI的确要比EMA更快的死叉卖出止盈。

另外,将ASI与主图的KAMA进行对比,也可以看到ASI交叉的介入位置其实与KAMA是大体一致的,前面就回测过KAMA的策略是非常稳健的,由此可以得到ASI交叉策略是不错的策略。

QS02_CHO佳庆指标

A_简介与公式

CHO指标(Chaikin Oscillator,中文译为佳庆指标)是一种用于技术分析的指标,旨在帮助判断股票或其他交易资产的积极和消极资金流向,并据此作出买卖决策。

佳庆指标CHAIKIN (Chaikin Oscillator),是由Marc Chaikin所发展的一种新成交量指标。

N1:=10;
N2:=20;
M:=6;

MID:=SUM(VOL*(2*CLOSE-HIGH-LOW)/(HIGH+LOW),0);
CHO:MA(MID,N1)-MA(MID,N2);
MACHO:MA(CHO,M);


// OBV
VA:=IF(CLOSE>REF(CLOSE,1),VOL,-VOL);
OBV:SUM(IF(CLOSE=REF(CLOSE,1),0,VA),0);

从公式上看,佳庆指标是关于成交量的指标,不太清楚为什么被分到了趋势指标中,感觉更合理的应该放到成交量指标中去。当我们放上OBV能量潮指标公式进行对比,就可以发现它与OBV之间的相似与不同之处。

在OBV中,以今收>昨收为判断条件,只要是上涨的成交量取正值(多头动能),只要是下跌的成交量取负值(空头动能)。这种判定方式简单、直接、有效,但并不十分的精巧。相比较而言,CHO指标对于多、空的成交量就有另外的判定条件。

见上图,多空力量在K线上的表示方式,从最低价涨到收盘价为多方力量,而从最高价跌到收盘价表示做空的力量,所以(C-L) - (H-C)就是这根K线多、空的力量差值,大于0表示多方胜,小于0表示空方胜。而(C-L)-(H-C)拆括号换算后就是 2*C - H - L,这就是上面CHO公式MID的计算中的一个步骤,只不过它把几个步骤写在了一行公式里而已。

另外,当我们把MID的这行公式拆解开来时,我们发现股票软件内置的公式其实是错的,这里做分母的部分并不是(High+Low),而应该是(High - Low),我们可以分别制作2个公式并添加成交量VOL进行对比,因为这一步的目的是通过判别多空力量来将成交量分正负(OBV是直接用上涨区分)的,然后下一步才是把这些正和负的成交量进行SUM累加。

VOL1:VOL;
VCHO:VOL*(2*CLOSE-HIGH-LOW)/(HIGH+LOW);

//**********************

VOL1:VOL;
V2:VOL*(2*CLOSE-HIGH-LOW)/(HIGH-LOW);

  根据公式代码,副图1是加 (HIGH+LOW),而副图2是减(HIGH - LOW):

由图形可知,当使用HIGH减LOW时,出来的数值其数量级与成交量VOL仍是相当的,但如果使用了HIGH+LOW,则让分母变得很大,特别对于价格高的股票来讲,会把成交量变成一个奇怪的数量级。不过只是分母变了仍是正比例函数,其图线的趋势仍然比较接近,再经过后续的计算后似乎也没有什么问题,见下图,包括MA10和MA20的线的走势仍是基本一致的。

B_CHO_vs_OBV

计算到有MA10和MA20的时候,已经是OBV指标公式的所有步骤,OBV直接是SUM后的曲线以及跟它的移动平均线的关系,由下图可以看到CHO与OBV的差别,由于OBV完全根据涨跌来取正负,所以经常出现N字的锯齿结构,而CHO根据多空力量,曲线就没有那么明显的锯齿。另外由于CHO根据多空力量计算,则会带有股价的因子在里面,所以CHO的线会跟股价上升下降有比较相似的趋势,比如股价在跌再CHO显示也在跌,而OBV就显得跟股价没有太多的关联性了。这一点可能会让CHO与股价背离有更大的趋势性吧。

在自定义的OBV指标中,我们已经制作了OBV-MAOBV的差值,而在CHO的公式中,后续还有快线减慢线的公式,这跟MACD的DIF的计算逻辑是相同的。我们再把MA1-MA22做成COLORSTICK以显示更加清楚一些。

MID1:=SUM(V2,0);
MA1:=MA(MID1,N1);
MA22:=MA(MID1,N2);
CHO1:MA1 - MA22,COLORSTICK;  //类似MACD的DIF

CHO2:CHO1;
MACHO:MA(CHO2,M);     //类似MACD的DEA

 C_CHO的应用策略

由上,CHO也是一种成交量指标,但因其根据K线的多空力量计算使这个成交量指标带上了趋势的因素,或许就是这个原因被分类到了趋势型指标中。

首先,CHO可以使用跟它自己平均线的交叉策略,由于CHO的计算带有(C-L)-(H-C)这样的价格因子在里面,它的交叉点与OBV有时并不一致,例如左侧的三个箭头,分别是CHO金叉,CHO上穿0轴和OBV上穿0轴的位置。

于是CHO还可以用上穿0轴和下穿0轴作为买卖点。

另外,上图中间段出现明显的顶背离和之后的底背离情况,那么在顶背离形成时卖出以及在底背离形成时买入也可以作为CHO的复合策略之一。

QS03_DMA平均差指标

DMA平均差指标(Different of Moving Average),也称为平行线差指标,是一种趋势分析指标,主要用于判断当前买卖能量的大小和未来价格走势的趋势。

DMA指标属于趋向类指标,通过计算两条基准周期不同的移动平均线的差值,来判断当前买入卖出的能量大小和未来价格走势的趋势。

N1:=10;
N2:=50;
M:=10;

DIF:MA(CLOSE,N1)-MA(CLOSE,N2);
DIFMA:MA(DIF,M);

根据公式,这是个典型的MACD类型的计算逻辑,只不过参数不一样,还有用到的移动平均线类型不一样,MACD使用的EMA指数平均而DMA使用的是简单平均MA。

所以,DMA完全可以用MACD替代,不需要在这个指标上花费太多的时间。我们在副图上添加了MACD指标,并把参数改为9,44,则基本上得到与DMA默认参数一致的图线。

需要提一下的是,这个DMA是指标,与函数的DMA(动态移动平均)虽然缩写一模一样,但完全是不同的东西,千万不要把它们搞混了。

QS04_DPO区间震荡线指标

DPO区间震荡线指标(Detrended Price Oscillator,简称DPO)是一种技术分析指标,用于消除价格趋势的影响,从而帮助识别价格震荡的周期。

DPO指标旨在通过排除价格长期趋势干扰,更容易识别短期价格波动和超买超卖水平。

N:=20;
M:=6;
DPO:CLOSE-REF(MA(CLOSE,N),N/2+1);
MADPO:MA(DPO,M);

// MTM
N:=12;
M:=6;
MTM:CLOSE-REF(CLOSE,N);
MTMMA:MA(MTM,M);

根据公式,当我们看到用收盘价去减去周期前的收盘价的时候,就想到了之前的动量指标MTM,把这两个指标公式放到一起进行比较,可以看到MTM直接是减某个周期之前的单日收盘价,而DPO是某个周期之前的平均值,这就意味着MTM的变动会比DPO要剧烈,反过来讲就是DPO更加缓和一些,从下图的两个箭头之间可以证明这一点。 

除此之外,由于计算逻辑与MTM是相同的,并且没有出现其他的参数,所以我们可以把它当作更缓和或者说更稳健的MTM指标来应用,这里也不多做测试了。

QS05_EMV简易波动指标

EMV(Ease of Movement Value, 简易波动指标),它是由RichardW.ArmJr.根据等量图和压缩图的原理设计而成, 目的是将价格与成交量的变化结合成一个波动指标来反映股价或指数的变动状况。 旨在先于其他投资者买入/卖出。

EMV,又叫量价人气指标,它是运用成交量的增减和人气的盛衰变化,构成一个完整的股价循环系统,采用和一般投资者意见相左的观点,引导投资者把握股价波动的大规律,从而掌握买卖时机的一项中长线技术指标。

N:=14;
M:=9;

VOLUME:=MA(VOL,N)/VOL;
MID:=100*(HIGH+LOW-REF(HIGH+LOW,1))/(HIGH+LOW);
EMV:MA(MID*VOLUME*(HIGH-LOW)/MA(HIGH-LOW,N),N);
MAEMV:MA(EMV,M);

根据指标公式可知,EMV由二个部分组成,成交量的部分和价格计算的部分。

成交量的部分为14日的平均成交量去除以当天的成交量,如果当天放量成交量大于平均则为<1的数,而当天缩量成交量小则计算出一个大于1的数。

价格计算的部分为今天的H+L减去昨天的H+L再除以今天的H+L后乘以100,这个H+L在这里会让人很难理解,但如果把它稍微转换一下变成(H+L)/2就清楚了,这就是使用了计算价格中的当天平均价格,MID就相当于今天平均价减去昨天平均价除以今天平均价得到平均价格的差的百分比,其实也就是每天平均价格的涨跌幅,涨了就是正的,跌了就是负的。

然后,我们先计算VOLUME* MID,根据公式平均价格上涨是正的,如果比平均成交量大则VOLUME的系数小于1,而如果是缩量小于平均成交量则VOLUME的系数大于1;从图中可以得到它们的量价关系,即红箭头1,放量上涨V*MID值小于价格上涨;红箭头2缩量上涨V*MID值高于价格涨幅;绿箭头1缩量下跌,V*MID值 跌幅大于价格跌幅;绿箭头2与成交均量相当,则V*MID约等于价格跌幅。简单小结一下,就是缩量会增大涨跌的幅度,而放量会减小。

最后,(H-L)/MA(H-L,N)的意义。H-L代表这根K线的振幅,所以MA(H-L,N)就是N周期内的平均振幅,振幅越大代表当天越活跃,再乘上前面的VOLUME*MID的值,就相当于把价格,成交量以及振幅的多个条件融合在一起。从公式的分析来看,这种设计是极好的,考虑了多种因素,但实际上总有这样那样的不确定性,从下图来看,副图2中蓝色线是仅以平均价格做出的线,而桃红色是价格与成交量系数相乘的值,最后绿色的宽度为2的线是再乘上振幅因子得到的曲线。最后的绿色曲线就是EMV指标的EMV输出,再进行MA就得到了副图1的内置EMV指标的曲线。

这种双均线的通常都使用交叉的策略,仅从副图1和主图来看,EMV的确比较提前,它可以在KAMA买点之前就触发。因此直接简单的使用交叉策略看起来是可以的,或许用上不同周期的参数还有更好的收益,这个可以放到后续backtrader的参数优化里去回测。

从副图2中三条曲线的对比来看,在振幅不大,成交量跟着平均成交量的阶段,三条曲线是粘合的,而一旦行情变成急跌,成交量放大,振幅放大,三条线就会分开。通常价格*成交量系数的那一条变化的速度是最缓和的。因此也可以利用这一特性,在三线分开较大时,如果EMA产生拐头,往往是买点或卖点。

QS06_UOS终极指标

UOS(Ultimate Oscillator System)是一种综合性的技术分析指标,用于研究价格趋势的强度和超买超卖情况。

UOS由Larry Williams设计,旨在通过衡量市场在一定时间内的波动程度来预测趋势的强度和持续性。UOS指标结合了动量、速率和动量变化等因素,以提供一个关于市场波动的综合性指标。

A_终极指标与ATR

前面已经多次谈到ATR(真实波动),ATR的概念就是把股价的振荡差值分成三类情况进行计算,并取它们的最大值,这三类情况第一类是常见的当前K线的最高减最低,第二类是跳空高开并上涨即H-REF(C,1),而第三类是跳空低开并下跌即 REF(C,1)-L。

而我们也可以把ATR的波动称之为终极波动。如下图所示,十字光标所在K线的H-L是最大值,因此它的ATR值=11.76-10.85 = 0.91;而下一根K线是跳空高开向上,它的ATR=H-REF(C,1)=12.94-11.76=1.18,它不仅考虑了当天的波动,还考虑了跟昨天相比的波动。

B_上涨强弱值

前面的佳庆CHO指标刚刚讨论过K线怎么表示它的多方力量和空方力量的对比,在CHO中使用的是(C-L) - (H-C)的方式,即从最低值涨到收盘的是多方力量,而从最高价跌到收盘价的是空方力量。

表现多空力量的方式有很多种,在终极指标中使用的是百分比的方式,对于单根K线而言,收盘价减去最低价就是上涨的多方力量,而最高价减最低价就把这个多方的力量给了一个百分比的分母,两者相除就意味着多方力量的占比,因此(C-L)/(H-L)的值如果大于50表示多方占优势,小于50则空方力量强,与上面的CHO的计算方式表现形式上不同,但本质都是一样的。

然后,这里不是使用单根K线的多空力量计算,而是使用了ATR,那么ATR中的最低价就是MIN(REF(C,1), L)即当天最低价与昨天收盘价的最小值,另外ATR中的最高价就变成了MAX(REF(C,1),H)即当天最高价与昨天收盘价的最大值(跳空低开且下跌时会用到昨天的收盘价)。

C_UOS公式与RSI和KDJ的对比

我看到一篇参考文章中描述的是:

UOS终极波动指标 通过将短、中和长三个相对强弱指标(RSI)的加权平均值进行计算,

于是我们来对比一下指标公式

// UOS
TH:=MAX(HIGH,REF(CLOSE,1));
TL:=MIN(LOW,REF(CLOSE,1));
ACC1:=SUM(CLOSE-TL,N1)/SUM(TH-TL,N1);
ACC2:=SUM(CLOSE-TL,N2)/SUM(TH-TL,N2);
ACC3:=SUM(CLOSE-TL,N3)/SUM(TH-TL,N3);

// RSI
LC:=REF(CLOSE,1);
RSI1:SMA(MAX(CLOSE-LC,0),N1,1)/SMA(ABS(CLOSE-LC),N1,1)*100;

// KDJ
RSV:(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N));
K:SMA(RSV,M1,1);

由指标公式回顾一下前面章节所讲的RSI,它是分别计算上涨的和下跌的,所以用到的是今收减昨收,从这一点上讲,UOS与它并不是同类。反而KDJ中的随机数值RSV,是用收盘价减最低价,再去除以最高价减最低价,如果不考虑ATR的问题,它跟UOS的计算逻辑才是同源的。所以我们可以理解为UOS是用ATR得到最高价和最低价,然后有三个不同周期的RSV的线条,最后把这三条RSV线进行加权平均得到的,它与UDL引力线指标有相似的概念(UDL是把四条不同周期的平均线再直接平均得到的)。

N1:=7;
N2:=14;
N3:=28;
M:=6;

UOS:(ACC1*N2*N3+ACC2*N1*N3+ACC3*N1*N2)*100/(N1*N2+N1*N3+N2*N3);
MAUOS:EXPMEMA(UOS,M);

经过最后的公式计算,得到了类似多周期的RSV的平均线。这里公式上看起来有些复杂,100*[ACC1*14*28 + ACC2*7*28 + ACC3*7*14]/(7*14+7*28+14*28);这里都是7的倍数,约分以后就变成了 100* [ACC1*4 + ACC2* 2 + ACC3* 1]/(1+2+4),也就是ACC1占4/7的权重,ACC2占2/7的权重,而ACC3只占1/7的权重。

D_UOS的应用

首先,UOS与KDJ的指标很相似,而RSI与KDJ在趋势上也很相似,所以它们三个可以放到一起来观察,如下图

根据图形,UOS的取值范围明显比KDJ或RSI要窄一些,一般的情况下RSI或KDJ都以20,80为超卖和超买的限值,但UOS由于多个周期平均明显要缓一些。因此通常的策略为

uos短线抄底:uos上穿50;
uos短线卖顶:uos下穿65;
uos中长期抄底:uos上穿35;
uos中长期卖顶:uos下穿70;

另外,由于它也能跟自己的平均线形成交叉,也可以使用金叉/死叉的买卖策略。这几个策略我们都可以放到backtrader中去回测,仅从某个股票某一段的走势来看,似乎与RSI也没有明显的差别,对于这种超买超卖型的指标来说,我觉得选择其一把它研究透比什么都强,没有必要弄好几个非常类似的同类型指标。

QS07_VPT量价曲线指标

VPT量价曲线指标(Volume Price Trend,简称VPT)是一种基于量价关系的技术分析指标,用于研究交易量和价格趋势之间的关系,以帮助交易者判断价格趋势的可靠性。

N:=51;
M:=6;

VPT:SUM(VOL*(CLOSE-REF(CLOSE,1))/REF(CLOSE,1),N);
MAVPT:MA(VPT,M);

// OBV
VA:=IF(CLOSE>REF(CLOSE,1),VOL,-VOL);
OBV:SUM(IF(CLOSE=REF(CLOSE,1),0,VA),0);

根据公式,VPT如它的名字一样,同时含有成交量和价格两个部分的计算,其中价格的计算部分很简单,C-REF(C,1)/ REF(C,1) 就是当时相对于昨日的涨跌幅度。而成交量部分直接使用VOL,最后把成交量乘上了涨跌幅度并对每个周期的值进行累加,默认累加51个周期。

我们看到,成交量乘上涨跌幅,于是上涨时为正,下跌时为负,这个与OBV的指标公式进行对比,可以发现OBV只是用上涨和下跌来累积正或负的成交量,而VPT会多乘上涨跌幅度这个因子,涨跌幅度大的时候会放大成交量。

由上图可知,VPT与OBV的趋势大致是相似的,由于VPT中乘上了涨跌幅,因此其数值会明显的与价格有对应关系,会随着股价的同样呈波浪型变化,而量在价先这个词就能够从VPT的指标很好的表现出来,它的金叉能比OBV提前很多且大多数情况下都指示正确。

在VPT指标上可以直接使用金叉/死叉的策略,另外VPT线因为本身就有着股价的走势,因此当VPT上升,价格上涨趋势就比较可靠,当VPT下降则表示价格下跌趋势比较可靠。应用在策略上就是当VPT由上升转为水平运行时,就已经可以卖出了,相对应VPT由下跌转为水平运行与MAVPT呈纠缠状态时,就可以买入了。

另外,VPT和和股价可以产生背离,则背离时股价可能会发生反转。

QS08_WVAD威廉变异离散量指标

A_指标与公式

WVAD(Williams' Variable Accumulation/Distribution,威廉变异离散量)是一种技术分析指标,由Larry Williams所创,用于研究交易量和价格之间的关系,以便帮助交易者判断价格趋势的可靠性。WVAD指标通过计算价格和交易量的变异离散量之和来显示价格趋势的变化。

N:=24;
M:=6;

WVAD:SUM((CLOSE-OPEN)/(HIGH-LOW)*VOL,N)/10000;
MAWVAD:MA(WVAD,M);

如果单从上面的公式来看,WVAD也是计算了成交量与价格两个部分,在价格方面使用的是收盘价减开盘价除以当天的振幅的计算方式,对应的是阳线为正,阴线为负,再乘上成交量就会将成交量变为有正有负的数值,这种思路跟上面的VPT是类似的,只是用到的价格计算的因子不一样。

B_WAD指标补充

在初步看了WVAD指标之后,我们想起来在backtrader的内置指标的Williams.py文件中,还有一个WilliamsAD的指标没有实践过,当时我们只研究了W%R。那么这里的AD也就是accumulating (upwards) or distributing (downwards) 的意思即收集与派发。

所以这里我们再回过头来补上WAD指标的知识点。

class WilliamsAD(Indicator):
    '''
    By Larry Williams. It does cumulatively measure if the price is
    accumulating (upwards) or distributing (downwards) by using the concept of
    UpDays and DownDays.

    Prices can go upwards but do so in a fashion that no longer shows
    accumulation because updays and downdays are canceling out each other,
    creating a divergence.

    '''
    lines = ('ad',)

    def __init__(self):
        upday = UpDay(self.data.close)
        downday = DownDay(self.data.close)

        adup = If(upday, self.data.close - TrueLow(self.data), 0.0)
        addown = If(downday, self.data.close - TrueHigh(self.data), 0.0)

        self.lines.ad = Accum(adup + addown)

由backtrader内置指标源码可知,WAD即Williams Accumulation or distribution,威廉收集/派发指标,它是由ATR的TrueHigh和TrueLow与当前收盘价的关系而进行的累积,上涨的为正,下跌的为负。

然后再回到前面的WVAD上来,我们就能理解WVAD是在WAD的基础上,乘上了成交量,但它又不完全跟WAD的策略一致。

C_WVAD应用策略

同样是根据上涨或下跌、阴线或阳线、多方能量、多方占比这些条件计算价格部分,再乘上成交量而得到的量价指标,WVAD与OBV,EMV,VPT基本上都有着差不多的使用方法。

由上图可知,似乎直接使用金叉/死叉的策略在WVAD上就可以有不错的表现。

QS09_PAV筹码引力指标

A_简介与公式

PAV筹码引力指标是一种技术分析工具,主要用于股票市场,帮助投资者分析和预测股票价格的走势。

  1. PAV指标的构成

    • PAV指标包括上轨(GV)和下轨(CV),分别在0至100和-100至0区间内震动。
    • GV表示的是获胜筹码的百分比,乘以100后得到的值。
    • CV是GV的100减去后,再取3日指数移动平均值的负值。

PAV以及PAVE均是加密指标,不能直接查看其公式。但我们可以搜索参考文章了解PAV指标是什么,以及公式大概是怎样的。

N:=9;
M:=13;

GV:= WINNER(CLOSE)*100, LINETHICK2,COLORYELLOW;
CV:= EMA(100-GV,3)*(-1), STICK;
MGV: MA(GV,N),LINETHICK2,COLORGREEN;
MCV: MA(CV,M),LINETHICK2,COLORRED;
DIFF: MGV+MCV,LINETHICK2,COLORBLACK;

GV2:GV,COLORSTICK;
CV2:CV,COLORSTICK;

根据网上搜索得到的指标公式,并稍微进行了一点点颜色和线型的调整,也可以得到一个PAV的图,这个与内置指标PAV的走势是相似的,但数值上仍然对应不上。这里使用了WINNER(C)这样一个函数,这个函数就是求获利盘比例,比如返回值0.1就表示当前收盘价有10%的获利盘,也可以求某个数值的获利盘比如WINNER(10.5)则获取价格为10.5时获利盘的比例。这个函数常用在筹码峰或筹码类指标中。当我们在指标公式中使用 WIN:100* WINNER(C), COLORSTICK;后,就可以在下图副图2上显示每天的获利盘比例,这个数值与右侧打开筹码图的下方获利比例的值是基本一致的(具体数值会有差别,原因不明)。所以,PAV更应该放到筹码类的指标中去。

B_PAV与PAVE的应用

首先,由于WINNER等函数是内置函数,因此这类的指标我们不能通过计算逻辑移植到backtrader中去,但我们可以通过曲线的方式获取到这个指标的参数输出值从而放到backtrader中去应用。不过暂时先不具体说这样,我们来看一下PAV/PAVE指标的常规应用。

当0大于DIFF并且cv前一天小于-5,今天cv小于-1,diff和mcv2向上运行,一定有主升浪。

当diff小于0,并且cv前一天小于-50,今天cv大于-50,diff和mcv2向上,一定有主升浪出现。

当diff与mcv2很接近的时候,cv小于5,说明股票超跌了,当diff转头向上可以放心买入抢反弹。需要投资者注意的是,diff不向上转向,不能买入。

由图可知,PAVE是在PAV中取出几个参数,但不用stick进行显示,本质上还是一致的。从策略上来说,PAVE参数少,更容易做策略,比如说用CV上穿MCV,以及DIFF上穿0轴做买点等。

QS10_JS加速线指标

JS加速线指标(JS指标)是一种技术分析工具,主要用于衡量股价涨速,以确定股价运行的快慢。

N:=5;M1:=5;
M2:=10;M3:=20;

JS:100*(CLOSE-REF(CLOSE,N))/(N*REF(CLOSE,N));
MAJS1:MA(JS,M1);
MAJS2:MA(JS,M2);
MAJS3:MA(JS,M3);


// DPO
N:=20;
M:=6;

DPO:CLOSE-REF(MA(CLOSE,N),N/2+1);
MADPO:MA(DPO,M);

// OSC
N:=20;
M:=6;

OSC:100*(CLOSE-MA(CLOSE,N));
MAOSC:EXPMEMA(OSC,M);

// MTM
N:=12;
M:=6;

MTM:CLOSE-REF(CLOSE,N);
MTMMA:MA(MTM,M);

这个指标公式让我们想到了DPO和MTM以及OSC,所以可以把它们放到一起来进行对比,可以看到JS的公式里分子是 C- REF(C,5),也就是与5天前收盘价的差值,这个跟MTM的前半段是一样的,只不过MTM的参数是12。当分子是一样的时候,分母就像是系数K,具体数值会因K的值变化而有差别,但总体趋势是一致的。其策略也会比较类似,就不重复了。

QS11_JLHB绝路航标指标

JLHB绝路航标指标是一种反趋势类选股指标,它综合了动量观念、强弱指标与移动平均线的优点。

  • JLHB绝路航标指标主要研究高低价位与收市价的关系,反映价格走势的强弱和超买超卖现象。它是一个中短期操作指标,对市场短期超买超卖的预测较为敏感。
N:=7;
M:=5;

VAR1:=(CLOSE-LLV(LOW,60))/(HHV(HIGH,60)-LLV(LOW,60))*80; 
B:SMA(VAR1,N,1); 
VAR2:SMA(B,M,1); 
绝路航标:IF(CROSS(B,VAR2) AND B<40,50,0);

// KDJ
N:=9;
M1:=3; M2:=3;

RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:SMA(RSV,M1,1);
D:SMA(K,M2,1);

这个指标的公式与KDJ指标公式放在一起,大家就能发现它其实就是KDJ的计算逻辑,第一句的差别有2个,分别是周期参数从KDJ的9改成了60以及乘上的因子由100改为了80;然后第2和第3句都是上一个计算变量的SMA,只是把KDJ的3,3改为了7,5。总的说起来,这是一个KDJ改变默认参数的变形指标,只是添加了绝路航标这个布尔变量。

趋势类指标小结

在趋势类指标中,我们学习和研究了11个指标(在backtrader内置指标中没有的),包括ASI,CHO等。注意一下CYE放到鬼系指标组去,而GDX放到通道/路径指标组。

通过学习和实践,我们发现其中有几个指标跟超买超卖型指标中的几个非常相似,比如DPO和JS与MTM/OSC,JLHB和KDJ。

另外趋势型指标的典型就是MACD和DMI还有TRIX,这三个在backtrader内置指标中已经实践过了;我们还发现DMA就是个变形的MACD,在用法策略上也可以跟MACD相同。

其他几个指标都是通过价格趋势的计算乘上成交量的指标,比如CHO,EMV,VPT和WVAD;而在价格趋势的计算中,又学到了多空力量差值 C-L - (H-C)以及源于ATR的TrueHigh和TrueLow,还有平均值涨跌幅 (HIGH+LOW)-REF(HIGH+LOW,1)/(HIGH+LOW),以及多方力量占比的计算公式(C-TL)/(TH-TL)等。

总结下来,趋势型指标更多的是组合指标和变异指标,通过对这些指标的学习和实践,让我们再一次拓宽了视野,开阔了思路。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值