当前位置: 首页 > news >正文

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

00_股票软件指标公式与分类

在完成了backtrader内置指标的初次概览后,发现了其中有许多指标与股票软件指标公式同名、公式相似或者有差异。其实股票软件出现了很多年,的确有一些指标公式是经典的、好用的,在软件的开发和进步的过程中,还出现了很多实用性高或者别出心裁的指标公式。这些都是前人的经验和教训,我们就当批判的学习。如果有好用的、值得借鉴的,我们就可以放到backtrader里来进行回测,在大数据的今天,用更好的方法来验证传统指标的性能,或许可以帮助我们制作出更有效的策略。

首先打开公式编辑器,查看指标公式的分类,如图:

首先分为四个大类,分别是技术指标公式,条件选股公式,专家系统公式,五彩K线公式。 

其中的技术指标公式是我们重点研究的方向,在这里面,又分了15个小类,分别是大势型,超买超卖型,趋势型,能量型......用这样的方式来分类肯定是有它的道理的,我们也可以按照这个思路,把有价值的指标公式都学习和实践一遍。

01_大势型指标公式实践

在大势型这个分组里的指标公式基本上是与大盘或者指数相关的,包括涨跌家数等。如果一开始大家都跟我一样忽略了这些指标,那么现在千万要重视它,否则它凭什么排在分类的第一个?

DS01_ABI_绝对广量指标

参考文章

  • 绝对广量指标(ABI)的计算过程和指标应用 – 深度交易
  • ADR指标与ABI指标 - 知乎

绝对广量指标(ABI,Absolute Breadth Index)是一种用于分析股票市场的指标,由Norman G Fosback(费班克)所创,并发表在《Stock Market Logic》一书中。它属于大势型的动量指标,主要设计目的是为了侦测市场潜在的活跃度,而不是以价格趋势为目标。ABI的数据越高,表示整体市场的涨跌家数差异越大,通常用于发现市场潜在的活跃度,寻找行情可能物极必反的转折点 。

在这个指标的名称中,A代表Absolute是绝对值的意思;而B代表的Breadth解释有宽度、广度、视野、范围、程度以及参与度等,在金融领域翻译为“广量”,但其实广量这个词我的输入法都不认为是词组,只能一个字一个字的敲出来。

ABI:100*ABS(ADVANCE-DECLINE)/(ADVANCE+DECLINE);
MAABI:EMA(ABI,M);

这里的breadth可以用公式来理解,即|(上涨家数 - 下跌家数)|/ (上涨家数+下跌家数),我们把数值显示出来,由下图可知,上涨家数A1=966,下跌家数=1265, 相减=-299,相加即沪市总家数为2231家(未计入有停牌的或者今收=昨收的),然后ABI = |-299|/2231= 0.1340 * 100 = 13.40。

相加得到的数值就是总宽度,而相减绝对值得到的如果全部上涨或下跌,则2231-0 = 2231,如果恰好一半涨一半跌,则1116-1115=1,所以的ABI会在0~100之间波动,所谓的广量就是指这个。

对于ABI指标的应用而言,它的应用场景并不多,通常行情下都没有用,但大利空大利多的情况下ABI指标可以提供买入或卖出的参考。

1. 绝对广量(ABI)主要用于发现市场潜在的活跃度,寻找行情可能物极必反的转折点

2.ABI值数据只会在0~100之间波动,数据越高代表市场立即转折的概率越大;ABI值高于95以上时,市场行情将极容易产生短期转折点。

3.对于中期市场的判研,需要采用观察ABI的10日异同移动平均线MAABI,当MAABI大于75以上时,要注意上涨行情可能会随时结束。

举个例子,深成指于10-8时ABI下穿95,且此时MAABI已经在75之上了,表明市场行情极易产生转折点,如果使用上面的策略,应该在此时卖出,就能避开10-9及之后7个交易日的跌幅。

需要说明的是,ABI不能用于个股只对应用于大盘如上证,深成指,沪深300,中证500等,实践发现有成分价的板块指数也可以使用这个指标但其实对于单个板块而言并没有什么意义。所以,这个在backtrader里也没法用于个股或ETF的回测,暂时不需要放到backtrader中去研究。

DS02_ADL腾落指标

腾落指标ADL和前面的ABI绝对广量指标有一些相近的概念,我们直接看公式

ADL:SUM(ADVANCE-DECLINE,0);
MAADL:MA(ADL,M);

ADL是把每天的上涨家数去减下跌家数,那么当大盘趋势向上的时候,往往是上涨家数多于下跌家数,累加起来就是正值变大;而大盘趋势向下时就相反,累加起来就是负向。

ADL指标,也被称为腾落指标,是一种用于分析股票市场的技术分析工具。

它通过计算股票市场上每天上涨和下跌的股票数量的差值,来衡量市场的整体走势和人气。ADL指标的原理基于市场供需理论,即股票指数的涨跌受到资金流入和流出的影响。

当资金流入市场时,股票指数的需求增加,价格上升;

当资金流出市场时,股票指数的供给增加,价格下跌。

因此,通过观察股票指数中每日上涨和下跌的股票数量的累积差值,可以判断市场的资金流向,从而预测市场的未来走势。

而ADL的应用逻辑是

  1. 当ADL指标与股票指数同步上升或下降,并创新高或新低,这通常确认了市场的主要趋势,并表明短期内趋势不太可能发生反转。
  2. 如果ADL指标连续上涨或下跌一段时间(通常是三天),而股票指数却向相反方向移动,这可能是一个买进或卖出的信号,至少存在反弹的可能性。
  3. 当股票指数进入高位或低位时,如果ADL指标并没有同步上升或下降,而是开始走平或向相反方向移动,这可能是趋势进入尾声的信号。
  4. 如果ADL指标保持上升或下降趋势,而股票指数在中途发生转折,但很快又恢复原有的趋势,并创新高或新低,这是买进或卖出的信号,表明后市多方或空方力量强盛。
  5. ADL指标与股价指数比较类似,两者均为反映大势的动向与趋势,不对个股的涨跌提供讯号。但由于股价指数在一定情况下受制于权值大的股只,当这些股只发生暴涨与暴跌时,股价指数有可能反应过度,从而给投资者提供不实的信息,腾落指数则可以弥补这一类一缺点。
  6. ADL指标与指数顶背离时,指数向下反转机会大;ADL指标与指数底背离时,指数向上反转机会大;ADL须与ADR、OBOS等指标配合使用。

需要注意的是,ADL指标通常不适用于个股分析,而是用于研判整个市场的趋势。此外,ADL指标不应单独使用,而应与其他技术指标如ADR、OBOS等结合使用,以获得更准确的市场分析。

 对上面的应用简单的归纳就是,ADL如果与大盘同步,则趋势短期维持稳定;ADL如果与大盘背离,则可能是买进或卖出的信号。

就一般情况而言,ADL的走势会跟双均线很相似,如图所示,主图的MA5,MA20或者副图2的EMA12和EMA25都在走势上与ADL很类似。而要想从图上判断出背离,也不是那么简单的,所以这个指标虽然学习了,但使用上还存在各种问题。

DS03_ADR涨跌比率

ADR的公式及对数变换

ADR与ABI,ADL就像是兄弟一样,它们的来源都是上涨家数和下跌家数。但应用的方式不一样,在ADR里,就是直接用一定阶段的上涨家数来除以下跌家数得到一个比值。

ADR:SUM(ADVANCE,N)/SUM(DECLINE,N);
MAADR:MA(ADR,M);

ADR指标又叫涨跌比率指标或上升下降比指标,其英文全称是“Advance Decline Ratio”。和ADL指标一样,是专门研究股票指数走势的中长期技术分析工具。

由于和ADL指标存在着一定的联系,ADR指标又称为回归式腾落指数。该指标集中了股票市场中个股的涨跌信息,可反映股市大盘的强弱趋向

ADR指标就是从一个侧面反应整个股票市场是否处于涨跌过度、超买超卖现象严重的情况,从而进行比较理性的投资操作。

涨跌比率ADR指标的构成基础是“钟摆原理”,即当一方力量过大时,会产生物极必反的效果,向相反的方向摆动的拉力越强,反之,亦然。

但这个比值的取值范围并不是平均分布的,例如某段周期内,5000家涨,只有1家跌,则ADR=5000;一半一半的情况下是1,而下跌家数远高于上涨的时候,例如1/5000 = 0.00002则接近于0。这就会使显示出来的数据并不是线性的,0~1完全被挤到一起,对于这种数据,有的地方会转化成对数的形式,但这里并没有这么做。于是取值范围就需要被分段定义了:

1)ADR数值在0.5——1.5之间是ADR处在正常区域内。当ADR处在正常区域内时,表明多空双方势均力敌,大盘的走势波动不大、比较平稳,股市大势属于一种盘整行情。这个区域是ADR数值经常出现的区域。

(2)当ADR数值在0.3——0.5之间或1.5——2之间是ADR处在非正常区域内。当ADR处在1.5——2之间的非正常区域时,表明多头力量占据优势,大盘开始向上一路上涨,股市大势属于一种多头行情;而当ADR处在0.3——0.5之间的非正常区域时,表明空头力量占据优势,大盘开始一路下跌,股市大势属于一种空头行情。这两个区域是ADR数值比较少出现的区域。

(3)当ADR值是在0.3以下或2以上时是ADR处在极不正常区域内。当ADR处在极不正常区域时,主要是突发的利多、利空消息引起股市暴涨暴跌的情况。此时,股市大势属于一种大空头或大多头行情。

用一段上证的指数行情来举例

由上图,副图1是ADR的默认参数,默认周期为10,周期越长则Sum()后的比值越平缓,相对应行情滞后就比较大,从图上可知,低值差不多在0.5左右,这里的分辨率很低,高值的分辨率是可以的,可以把1.5以上认为是多头区间。

显然ADR用于抄底在图中的对应性要远高于逃顶,缩短周期可以提升分辨率并减少延迟,如副图2使用6为周期,与底的对应关系以及数值的限值也会更清晰一些。

副图3是将ADR的公式进行对数转换,变成对数的形式,就变成了0为中值,向上向下的区间差不多的图线,这样看上去心里的接受程序更高一些。

指标钝化问题

根据上图,在最左边的低点(22年5月)和最右侧的低点(23年1月),上证指数都是比较干脆的从高位跌下来,因此SUM得到的周期内的涨跌比率比较简单可以直接掉到-1.0以下(对数坐标),在这些地方使用简单的ADR上穿-1.0的买入策略就可以比较准确的在相对低位买入。

简单说就是急跌急涨判断会比较准,策略及限值也好设定。

但中间段9~11月的下跌就无法应用上了,见下图,原ADR默认周期10的情况下,ADR最低点在左边第1根红箭头,但值仍大于0.5,第2次ADR低点对应指数差不多低点位置,但数据已经0.7左右,完全达不到判定条件,并且在短暂上涨后从第1根绿箭头开始又一轮下跌,指数高点对应的ADR也没有达到1.5以上,不触发卖出信号,接着指数最低点对应的ADR低点在0.8(第三根红箭头),也完全达不到判定标准,用简单的限值来抄底在这里明显是失效的。

那么为什么ADR在下跌浪中,明明指数值在不断下跌,ADR指数却不会了呢?简单的理解,当十字星日K的情况下,往往涨跌家数是持平的,再进行sum累加,就会把ADR往等于1的方向拉;特别是中间还有1到2天的反弹,涨跌家数比值又会大于1,它就把连续的下降状态破坏掉了。累加的周期数越多,受到的影响也越大。

所以,只要是有移动平均或累加的指标公式,就有可能产生所谓的钝化,很多时候还会形成所谓的背离情况。于是,在上面的对数形ADR中,先把周期降为4,这样受到的累加的影响会变小,图线会有更多的毛刺,则可以通过底背离把9~11月的两个低点都判断出来,由上图可知,股价创新低而指标却在上升,形成底背离,在底背离的时候买入基本上就是最低点。

但是,也只有第一段的底背离可以通过ADR<-1判断,而11月的那个不行,这种情况在MACD,KDJ等指标的背离中都会有概率出现。遇到这样的情况,可以加入Delta值进行辅助判断,动态调整限值,比如说第1个ADR是从0.5掉下来的,所以小于-1.0就触发(Delta=1.5),那么第2个位置ADR是从1.5掉下来的,那么它下破-0.5的Delta就已经是2了,那么增加条件为ADR没有下破-1.0但Delta>2.0的情况下也能触发就可以了。

以上,我们就初步设计了一套动态限值的策略,这个策略还可以应用到比如说KDJ的高位钝化中去,因为KDJ高位死叉后又金叉往往上涨的力度相当的大。

DS04_ARMS阿姆氏指标

阿姆氏指标(ARMS),也称为短线交易指标(TRIN),由Richard W. Arms, Jr.在1967年开发的技术分析工具。它通过衡量涨跌股票的数量及其成交量,来预测市场趋势的可能转变。

从公式上看,ARMS指标也是ADR的兄弟指标,差别在于ADR是对涨跌家数比进行累加而ARMS是对涨跌家数比进行做指数平滑移动平均线。

ARMS:EMA(ADVANCE/DECLINE,N);
MAARMS:MA(ARMS,M);ADR:SUM(ADVANCE,N)/SUM(DECLINE,N);
MAADR:MA(ADR,M);

前面也讨论过EMA与MA的差异,我们知道了EMA是用当天的值与前一周期的计算值之间的加权平均,权重系数为2/(1+N),即对于默认21日情况下,权重系数=2/22 = 1/11。当然我们也可以把EMA换成MA来观察它们之间的区别。

由上图可知,SUM与MA可能更相似一点,但分子,分母先分别相加再相除毕竟和分数的平均值还是有区别的,简单的3个值举例:3/1, 2/2, 1/3 ,先加后除 = (3+2+1)/(1+2+3) = 1,而分数做平均就是(3+1+1/3)/3 = 13/9 = 1.44,而使用EMA又进行了平滑处理,所以图线会有一些区别,但总体的趋势是很相近的。

我们看一下ARMS的应用方法:

  • 短期:ARMS < 0.7,可能表示超买;ARMS > 1.25,可能表示超卖。参数设置为4。
  • 中期:ARMS < 0.85,可能表示超买;ARMS > 1.1,可能表示超卖。参数设置为21。
  • 长期:ARMS < 0.09,可能表示超买;ARMS > 1.05,可能表示超卖。参数设置为55。

再根据上图周期为21的中期进行对照,会发现这样的数值设定很难进行分辨,可以说完全挤到一块去了。因此,对于ARMS也可以跟ADR一样取对数,由于sum会放大分母的值的范围,所以ADR会有0~1的值,而ARMS很少有小于0.7的,以对数显示则不会到-0.5或-1.0的位置去。

所以,总体上看ARMS的用法与ADR非常接近,个人觉得喜欢哪种任选其一即可。

DS05_BTI广量冲力指标

广量冲力指标(Breadth Thrust Index,简称BTI)是一种市场动量指标,由马丁·茨威格(Martin Zweig)博士所创。它主要用于侦测市场是否即将展开大多头行情。BTI指标的理论基础在于,股市存在着“相对力量”,类似于棒球比赛中,根据球棒击打棒球的清脆响声可以判断球会飞得多远。

根据公式可知,它与前面的ADR,ARMS也是同门,这里使用上涨家数去除以上涨下跌总家数(停牌或横盘的不计),这样的做法应该会将值的范围区间发生改变,因为总上涨下跌家数是变化很小的(例如当前A股差不多5000多支)那么上涨家数一半就得到50%,全是上涨则100%,就不会发生前面的向上和向下的取值范围不一致的问题。

BTI:EMA(100*ADVANCE/(ADVANCE+DECLINE),N);
MABTI:MA(BTI,M);

于是BTI的应用方法为:

  1. 超买超卖区:BTI值大多数时候在40%~60%之间波动。当BTI超过61.5%时,市场超买,回档机会大;当BTI低于40%时,市场超卖,反弹机会大。
  2. 冲力现象:BTI从低于40%之下,10天之内,直线上升至61.5%之上,是一种冲力的表现,暗示未来市场发展成大行情的可能性较大。
  3. 买入信号:BTI在35以下为严重超卖区,极易见底反弹,如果BTI跌至30以下,可能是一个较好的买入信号。
  4. 卖出信号:BTI在65以上为严重超买区,极易见顶回落。如果BTI升至70以上时要果断卖出。

将指标显示出来进行分析

由图可知,BTI的走势与对数转换后的ARMS或ADR类似,上下限可以画在30,70上。其他的用法策略与它们也应该是类似的。

DS06_MCL麦克连

麦克连指标(McClellan Oscillator,简称MCL)是由Sherman和Marian McClellan两人所创的市场广量指标,主要用于分析股票市场宽度。它通过平滑涨跌家数差值来制作而成,是投资者常用的广量指标之一。

DIF:=ADVANCE-DECLINE;
EMA1:=EMA(DIF,N1);
EMA2:=EMA(DIF,N2);
MCL:EMA1-EMA2;
MAMCL1:EMA1;
MAMCL2:EMA2;

直接看图分析,副图1为MCL指标,它由3条线组成,分别是桃红的MCL1,绿色的MCL2和蓝色的MCL,很有意思的是,MCL1的曲线走势与BTI几乎一模一样(副图2),这是怎样的缘分啊。

DS07_MSI麦氏综合指标

这是一个系统加密公式,不能修改,也不能查看。但其实把指标调出来副图显示就知道它的来源以及大概的公式了。

由上图可知,MSI(副图2)有两条线,蓝色的其实就是MCL中的MCL1,而桃红色的明显是MCL1的移动平均或指数平滑移动平均线。我们在BTI(副图3)里把原公式的MA改为EMA,然后调整参数到16就几乎得到与MSI一致的图线。

所以,MSI应该就是使用了MCL1以及添加了EMA16的,这样看来,BTI,MCL,MSI也都是兄弟指标,用法上都是类似的,它们只是取值范围不太一样。

DS08_OBOS

OBOS:EMA(ADVANCE-DECLINE,N);
MAOBOS:MA(OBOS,M);

OBOS的公式与麦克连的MCL1公式一模一样,差别只是参数不同,MCL1周期为19,而OBOS的周期默认是10,那么当我们把OBOS的周期改到19,就会看到两者的图线输出是完全一致的:

见上图,副图1的OBOS与副图2的MSI基本上是一个模子里出来的。

DS09_STIX

这个指标就简略的说一下,它与BTI其实没差别,MATBR就等于BTI,见公式:

//STIX
TBR:100*ADVANCE/(ADVANCE+DECLINE);
MATBR:EMA(TBR,M);//BTI
BTI:EMA(100*ADVANCE/(ADVANCE+DECLINE),N);

 

02_超买超卖型指标公式实践

超买超卖指标(Overbought and Oversold Indicators)是一类用于判断股票或市场是否处于过度买入或过度卖出状态的技术分析工具。当股票或市场出现超买情况时,意味着价格可能由于过度买入而变得过高,存在回落的风险;而当股票或市场出现超卖情况时,意味着价格可能由于过度卖出而变得过低,存在反弹的机会。

简单的归纳就是使用“物极必反”原则,对可能发生反转的预估。超买超卖型指标有如下图所列几种

其中有一半已经在backtrader内置指标中实践过了,比如CCI,KD/KDJ,MTM,ROC,RSI,WR,ATR...在这里就不重复了。

CC01_MFI资金流量指标

A_简介与公式

资金流量指标(Money Flow Index,简称MFI)是一种技术分析工具,它通过结合价格和成交量来衡量买入和卖出的压力。MFI 是由 J. Welles Wilder Jr. 在 1989 年提出的,用于衡量资金流入或流出的强弱程度。它与相对强弱指数(RSI)类似,但是MFI考虑了成交量的影响,因此有时也被称为成交量的RSI指标。

接着来看公式,看到MFI的公式就感觉似曾相识,再细读上面的说明,MFI也被称为成交量的RSI指标,所以我们可以把它和RSI指标公式放在一起进行学习。

//MFI
TYP := (HIGH + LOW + CLOSE)/3;
V1:=SUM(IF(TYP>REF(TYP,1),TYP*VOL,0),N)/SUM(IF(TYP<REF(TYP,1),TYP*VOL,0),N);
MFI:100-(100/(1+V1));//RSI
LC:=REF(CLOSE,1);
RSI1:SMA(MAX(CLOSE-LC,0),N1,1)/SMA(ABS(CLOSE-LC),N1,1)*100;

与RSI不同的是MFI使用了TYP即典型值而不是收盘价CLOSE,关于使用的几种价格计算方法在第3节中有比较详细的介绍,这里我们只要知道典型价格会比收盘价变化更为平缓即可。

  • 量化交易backtrader实践(三)_指标与策略篇(3)_内置指标B-E_CSDN博客

相同之处是当今天价格大于昨天,做到正的价格乘以成交量(相当于成交额)中,否则做到负的价格乘以成交量VOL中,再用正的sum去除以负的sum得到资金比率V1。在第5节中我们也介绍了backtrader内置指标公式采用的rs=up/down,再将rsi = 100-100/(1+rs)的方式得到RSI的值,这个与股票软件中SMA(up)/SMA(dn)*100的结果是一致的。

因此,MFI也是RSI的二次应用,通过多一步的TYP与TYP[-1]的大小判断,把成交额值参与计算,最终得到的MFI是反映成交量强弱的指标。

B_MFI应用

我们把MFI原生指标和添加了上下限以及RSI指标放在一起进行比较,同时也把MARSI(根据名字就知道是把RSI进行移动平均的)指标放进来,得到一支股票在一个阶段的图形如下:

由副图1,默认参数周期为14的曲线会比较平缓,极少有高于80和低于20的,并且所有的单策略的超买超卖指标都有的问题都会存在,1是下跌过程中触发指标后继续下跌,真正到股价最低时,指标反而不触发,2是触发指标后值未上50~60又下来了,虽然是上升的但无法触发成对的卖出,坐了趟过山车。

由副图2,RSI与MFI放在一张副图上,并且把周期改小,此时MFI就会增多毛刺,触发指标的概率提高。并且RSI对应价格,MFI对应的量,算是量价关系的指标组合,经过数据分析发现,股价上涨前期,RSI一般领先于MFI,在一段周期后MFI会追上RSI两者纠缠状态继续向上,股价继续创新高,当到达一个阶段的顶部时,MFI的成交量强弱一般会维持平稳而RSI会突然开口向下,这里就是卖出点,只不过有时纠缠向上和突转向下分辨困难,很容易出现买了继续涨的情况。

由副图3,RSI的平均线,它的走势就是RSI经过平均平滑后的状态,用它和它的平均线的金叉死叉做策略,可以利用交叉必然成对的特点,避免一般超买超卖指标的触发困难、不成对触发以及没有止损的问题,其稳健性是会很好的。但交叉类的单策略也必然存在迟滞的问题,以及连续交叉的问题,因此在交叉类策略通常还会添加背离策略,注意背离至少要两次或以上的交叉,它会很大程度上减少出手次数,策略是更稳健了,但也会错过很多机会。

CC02_OSC变动速率线指标

A_简介与公式

变动速率线(OSC)是一种技术分析指标,属于超买超卖类指标,是从移动平均线原理派生出来的。它通过计算当日收盘价与一段时间内平均收盘价的差离值,来测出股价的震荡幅度。根据移动平均线原理,可以根据OSC的值推断价格的趋势,如果股价远离平均线,就很可能向平均线回归。

其公式为:

OSC:100*(CLOSE-MA(CLOSE,N));
MAOSC:EXPMEMA(OSC,M);/*
1.OSC以100为中轴线,OSC>100为多头市场;OSC<100为空头市场;
2.OSC向上交叉其平均线时,买进;OSC向下交叉其平均线时卖出;
3.OSC在高水平或低水平与股价产生背离时,应注意股价随时有反转的可能;
4.OSC的超买超卖界限值随个股不同而不同,使用者应自行调整
*/

这里的公式跟MTM(动量线)或ATR(真实波幅)的情况一致,它们都直接用股票的价格去做计算,因此得到的不同股票的取值范围完全不一样,如果只是利用它和它的平均线的交叉关系并没有问题,但很多时候还是希望能让不同股价的股票之间有数值上的可比性。所以MTM的基础上有了ROC指标,这里OSC我们也用ROC相同的方式来做归一化。

  • 量化交易backtrader实践(三)_指标与策略篇(4)_内置指标F-N -CSDN博客

MTM:CLOSE-REF(CLOSE,MIN(BARSCOUNT(C),N));NN:=MIN(BARSCOUNT(C),N);
ROC:100*(CLOSE-REF(CLOSE,NN))/REF(CLOSE,NN);// OSC的归一化OSC:=100*(CLOSE-MA(CLOSE,N));
MAOSC:=EXPMEMA(OSC,M);OSC3:OSC/REF(C,1);     //通过将OSC除以昨天的收盘价
MAOSC1:EXPMEMA(OSC3,M);Z:0;
S:OSC3-MAOSC1,COLORSTICK;

当除以前一天的收盘价,得到的数再乘以100,即相当于平均线涨跌的百分比,不同的股票股性不同,有的波动幅度较大,有的较小,则相应的这个OSC3的值也会有差别,但基本上都在20%涨跌幅之内了。

B_OSC应用

见上图,副图2为原生的OSC,由于这里是ETF,它的股价恰好在1块以内,因此OSC的数值较小,如果换成股价大约18块左右的,其OSC值会达到300以上。而副图1是归一化后的数值,基本在20%以内。

归一化后的OSC3与原来的OSC的图线趋势完全一致,因此金叉、死叉策略是可以直接应用的。值得说明的是,用OSC3减去它的移动平均线,就会得到一个差值,可以在图中用stick表示出来,当红柱或蓝柱突然变长幅度较大,往往就是当天超买或超卖了,特别是OSC3绝对值比较高的时候,通常都会在第二天发生反向,结合KAMA就可以做一次超短的买入并在触碰KAMA线的时候卖出。

CC03_BIAS乖离率指标

A_简介与公式

乖离率(BIAS)指标,又称为偏离率指标,是一种衡量股价与其移动平均线之间偏离程度的技术分析工具。它通过计算股价与其移动平均值之间的差距,来评估股价是否过高或过低,从而预测可能的价格反转。

BIAS :(CLOSE-MA(CLOSE,N))/MA(CLOSE,N)*100;
BIASMA :MA(BIAS,M);

通过观察指标公式,我们一眼就能分辨出,所谓的BIAS其实就是前面OSC指标的归一化,与前面我们自己的公式相比,差别仅在于OSC的值去除以一个收盘价周期内的平均值还是直接用昨天收盘价,这两个公式在图中呈现的趋势是一致的,仅仅有点地方具体数值会偏差一些,比如说昨天下跌幅度较大,则REF(C,1)减小作为分母就会使BIAS的计算结果增大。

B_BIAS的应用

所以BIAS相对于OSC的关系就相当于ROC相对于MTM的关系,BIAS把任意股价的OSC数据的不同进行了归一化,变成了一个百分比的数,这样就可以在不同股票上应用数值的上下限了。

由上图可知,副图1为BIAS指标,当我们把它的周期参数调到与OSC默认的20时,它所呈现出来的图线走势与OSC是基本一致的。因此对于BIAS也可以运用OSC的交叉型策略,而且可以添加数值类的限值。

CC04_UDL引力线指标

A_简介与公式

UDL引力线指标(Upward Downward Line,简称UDL)是一种技术分析工具,主要用于衡量股票价格的波动性和趋势强度。

N1:=3;
N2:=5;
N3:=10;
N4:=20;
M:=6;
UDL:(MA(CLOSE,N1)+MA(CLOSE,N2)+MA(CLOSE,N3)+MA(CLOSE,N4))/4;
MAUDL:MA(UDL,M);

由简单和公式可知,UDL引力线指标采用的是多条平均线再平均的方式制成的,它的思路大概是我有4个不同周期的移动平均线,每一条都是周期内的中线,股价会围绕这条中线进行波动变化,那么当4条移动平均线再进行平均,就得到四条中线的平均线,它的中轴地位会更加稳固,所以大部分的股价都会以它中线上下波动,一旦超出它太多,必然会被拉回,从而成为所谓的“引力线”。

它与前面在backtrader中实践的TRIX有着不同的技术思路,UDL是多条平均线再平均,而TRIX是对平均线再做平均后再做第3次平均。TRIX目的更多的是产生更加平缓的移动平均线,而UDL是产生一条更有中心轴特点的移动平均线。

B_UDL的应用以及替代应用

股票软件中的UDL指标公式是在计算出UDL后再做了一条关于它的移动平均线,产生所谓的快线与慢线的概念,也可以直接通过双均线的原理应用交叉点买卖的策略。然而这并不是理想的超买超卖指标的应用方式。

引力线顾名思义,其最大的特点就是离开均线太多就需要被拉回来,所以在引力线的趋势一定的时候,就是做短线反转操作的指标,以上图为例,当引力线趋势向下,正确的趋势策略是不开仓的,但到6月初的时候,收盘价发生远低于引力线的情况,如果用C-UDL则可以看到蓝色的负向柱线脱离了D11的区域,那么这个时候就可以进行买入操作,而第二天上涨就可以卖出或者当收盘接近引力线的时候进行卖出。当引力线趋势发生改变在8月向上,那么也可以在红柱穿出D11的区间时进行卖出操作,等收盘价接近引力线再买入。

另外,在使用引力线指标公式的时候,我们尝试了用EMA(C,N)的方式去进行引力线的拟合,很有意思的是,引力线的走势与EMA(C,9)几乎一模一样,UDL见上图红色宽度为2的线,EMA9是绿色细实线,EMA9只在很少的位置上与UDL略有一点点的差别,看了很多的股票图线均是如此,虽然我们不能直接从数学计算得到这个原理,但实际应用也能证明这一点,因此引力线的指标可以简化为EMA9相关的指标。

CC05_布林极限+布林极限宽

A_简介与公式推导

布林极限即BB指标,这是一个加密指标,无法查看公式。

布林极限(BOL)指标通常是指布林带(Bollinger Bands)的衍生指标。布林带由中轨(通常为N日的移动平均线)、上轨(中轨加上N日的标准差)和下轨(中轨减去N日的标准差)组成。布林极限指标则是将股价与布林带的上轨和下轨进行比较,用以判断股价的波动情况。

但从简介中我们能大概知道所谓的布林极限就是前面在backtrader内置指标中的BollPct即布林百分比指标。

布林极限宽即WIDTH指标,也是一个加密指标,无法查看公式。

布林极限宽指标(BOLL WIDTH)是一个衡量布林带宽度的指标,它通过计算布林带上轨和下轨之间的差距,然后除以中轨(通常为20日移动平均线)来得到。这个指标可以帮助投资者判断市场波动性的强弱,从而预测市场可能的变动。

也可以从简介中得到布林极限宽的公式,自己写的公式如下:

BOLL:=MA(CLOSE,M);UB:=BOLL+2*STD(CLOSE,M);
LB:=BOLL-2*STD(CLOSE,M);PCT:(C-LB)/(UB-LB),COLORGREEN,LINETHICK2;  //布林极限或布林百分比
PCTSLOW:=EMA(PCT,6);WID:(UB-LB)/(LB);                         //布林宽度
MAW:EMA(WID,6);

由此我们可以制作出布林极限和极限宽这两个指标,把它们放到图上去对比:

由上图可知,软件中的BB和WIDTH应该是基于BOLL-M而制作的,而BOLL-M与标准布林带并不相同,它们的主要区别在于中轨的计算方式和标准差的倍数。所以基于不同BOLL而得到BollPct以及TWIDTH就与BB和WIDTH看上去有一点差别,如果抛开BOLL与BOLL-M的差别,它们应该是一致的。

B_BOLL套装的应用

参考文档

  • 通达信布林套图【主图1个、副图2个,源码,说明,无未来】-通达信公式-公式网
  • 布林极限宽度,应用正当时! - 知乎
  • 「布林线BOLL-M」新手老手不如高手,你所不知的布林线用法 - 知乎
  • 深度解析BOLL指标的使用方法和喇叭口形态(图解) - 雪球

布林套装包括布林带主图,布林极限(布林百分比)副图以及布林极限宽副图三个。

当股价剧烈波动时,布林线的上下限范围会自动加宽,当股价发展沉闷,呈现横向微幅整理时,布林线的上下范围会自动束紧。

布林线对于筛选“变盘在即”的股票,提供了相当可靠的讯号。当布林线的路径宽度束紧时,代表个股即将发动行情。

布林极限>100时,代表股价超越布林线上限。布林极限<0时,代表股价超越布林线下限。股价一顶比一顶高,而布林极限一顶比一顶低时,暗示股价将反转下跌。股价一底比一底低,而布林极限一底比一底高时,暗示股价将反转上涨。

简单小结一下

  • BOLL指标功能比较多

 1.布林线可以指示支撑和压力位置;
  2.布林线可以显示超买、超卖;
  3.布林线可以指示趋势;
  4.布林线具备通道作用

  • BOLL极限宽能够指示布林带缩口扩口状态

我们要寻找的不是收缩阶段,而是扩张的那一刻,价格从低波动向高波动变化的临界点。

价格突破布林带上轨前,极限宽度<0.1,在完成突破时,极限宽度也能快速跟进拉升。

布林宽开口并不是一定上涨,也有可能是急剧下跌,如果是下跌,即使在下轨也会一直被下轨吸附住,所以BollPct在0点附近买入也仍有概率亏损

  • BOLL套装的三类买卖策略

一类买点:下轨线临近+MACD底背离 这个有点类似缠论三大买卖点中的背驰一买。

一类买点对应的卖点:

若反弹强(持续放量),空间看到上轨附近止盈

若反弹若(反弹没有持续放量),空间看到中轨线附近止盈

若不及预期,新低(成本价10个点内设置止损)

二类买点:回踩不破中轨(中轨线向上,突破中轨后),叠加MACD金叉(理想的是零轴上方金叉,或金叉状态)

与之对应的空间,走强(上涨放量)向上突破上轨线

与之对应的空间,次强(上涨量能跟不上)靠近上轨线

如跌破中轨线,则及时止损离场

三类买点:突破上轨后,回踩不破上轨线。强者恒强的买点。

此类买点,如跌破上轨线,及时离场

由上述内容,也可以得到上涨段往往在中轨与上轨之间运行,而下跌段往往在中轨与下轨之间运行,因此需要把上涨和下跌趋势区分开来

  • 搭配其他指标

有搭配MACD的,还有搭配KDJ的......

CC06_ACCER幅度涨速指标

ACCER幅度涨速指标是一种用于衡量股价上涨和下跌速度的技术分析指标,属于超买超卖型指标。

ACCER幅度涨速指标通过计算收盘价的N日线性回归斜率来测量股价的上涨和下跌速度。这个指标可以帮助投资者判断股价变动的强度和速度,从而做出相应的买卖决策。

买入信号

如果在一轮跌市行情中,股价幅度涨速ACCER向上突破0线,说明股价的跌幅将逐渐趋缓,此时需要注意把握投资机会。

卖出信号

如果在一轮升市行情中,股价幅度涨速ACCER跌穿0线,说明股价的涨幅将逐渐趋缓,此时需要提高警惕。

N:=8;
ACCER:SLOPE(CLOSE,N)/CLOSE;

 在内置指标KST的前置MTM中,我们讨论过

动量指标(Momentum Indicator)通常用来衡量价格在特定时间周期内的变化速度。动量指标与价格的一阶导数(即价格随时间的变化率)在概念上有相似之处。

在个人理解上,可以把股票的价格看作是速度,而动量指标相当于加速度变化,这样可以比较轻松地理解:当动量指标正向增加,即踩油门加速;如果动量变为0即松开油门虽然加速度没有了,但股价会维持一定的速度继续向上;而当动量指标变为负,即踩刹车减速,从踩了刹车速度会下降但车子停下来还要继续惯性冲出一段来理解股价在动量指标变为负后仍可能继续上涨。

而在物理学中,速度-时间图的斜率就是加速度,表示速度随时间的变化率。加速度是速度变化的快慢,而速度的斜率就是描述这种变化快慢的量。因此,动量指标和加速度指标的图线是非常相似的。

由上图可知,ACCER指标的走势与ROC使用参数8很相像,而且与UDL引力线指标中添加的红绿柱状线拟合出的图线也非常相似,我们用ACCER(8)并画柱状图,则跟UDL的走势几乎一样。

因此ACCER指标可以有两类策略,第一类是以0为分界线的策略,另一类是在高位或低位转向的策略。如果是转向的策略,我们看到UDL里添加的红绿柱超出一定范围能有更强的指示作用。

CC07_FSL分水岭指标

A_简介与公式

FSL分水岭指标是一个用于判断股票或大盘强弱势的技术指标。

FSL分水岭指标是一个强弱势的分界线,它使投资者能够跳开纷繁复杂的各种技术分析,一目了然地对操作进行指导,极其便捷。

SWL:(EMA(CLOSE,5)*7+EMA(CLOSE,10)*3)/10;
SWS:DMA(EMA(CLOSE,12),MAX(1,100*(SUM(VOL,5)/(3*CAPITAL))));

FSL指标包含两条曲线,分别是SWL(白线)和SWS(黄线),它们的计算公式分别为:

  • SWL = (收盘价的5日加权移动平均 * 7 + 收盘价的10日加权移动平均 * 3) / 10
  • SWS = 以1和100 * (成交量的5日累和 / (3 * 流通股本)) 的较大值为权重收盘价的12日指数移动平均的动态移动平均。
  • 买入信号

    1. 股价在分水岭之上为强势,反之为弱势。当股价从上方向下运行,在分水岭上方获得支撑,同时分水岭向上运行,说明股价受到支撑,可考虑买入。
    2. 股价由下向上突破分水岭时,说明该股在由弱变强,可以考虑买入。
  • 卖出信号

    1. 当股价从下方向上,在分水岭遇阻回落,同时分水岭向下运行,说明股价受压,此时应卖出股票,防范风险。
    2. 当分水岭向上且股价向下穿越分水岭时,说明此股票由强变弱,要及时止损。
  • 持股信号:股价在分水岭上方运行时,适宜待股。

  • 持币信号:股价在分水岭下方运行时,适宜持币。

B_FSL指标应用及拓展

首先,在UDL指标中我们发现可以直接用EMA9替代UDL的4条平均线的平均线,那么由7份的EMA5 + 3份的EMA10后做平均,心里估算很可能跟EMA6或EMA7相近,放到图上进行显示后确定,EMA6直接就基本上与SWL是一致的。

而SWS以某个权重为EMA12的动态平均,当我们把EMA12放进公式中时能发现它与SWS是完全重合的,因此,FSL的两条线其实可以用EMA6和EMA12替代,见副图。这就把FSL指标分类到了EMA的双均线指标中。

但这里如果使用双均线的交叉策略(实现简单,闭环)明显会买入晚一根K线,卖出慢2根K线(下图),于是这里用双均线的变形策略会更好一些,就是上穿2根买入,下穿2根时卖出,不要等交叉,这样的策略下,回撤会控制的更好一些。

另外,EMA6和EMA12的双均线,可以简化成EMA9一条均线进行使用,即上穿EMA9时买入,下穿EMA9时卖出,在大多数行情中,它与上面的双均线变形策略是一致的。

当把KAMA10的指标放在一起对比时,发现很多情况下KAMA也可以代替FSL这个指标,不过EMA6或SWL往往上涨时贴在K线底部,下跌时贴在K线顶部,就会有比较好的视觉效果。

CC08_ADTM动态买卖气指标

动态买卖气指标(Adaptive Dynamic Trading Money Flow Index)

在中文金融术语中,“买卖气”通常用来描述市场参与者的买卖意愿和市场气氛。它不仅涉及资金的流动,还包括了市场情绪和参与者的活跃度。“买卖气”这个翻译更准确地捕捉了市场参与者的行为和市场热度,而不仅仅是资金的流入和流出。

ADTM指标通过比较开盘价与最高价、最低价的差值来衡量市场的买卖力量。这种计算方式实际上反映的是市场参与者的买卖活跃程度。

DTM(Dynamic Top Money)动态买盘指标

这个指标用来衡量在一定时间周期内,买方力量的强度。如果今天开盘价比昨天开盘价低,则买方力量弱,取0值。

DBM(Dynamic Bottom Money)动态卖盘指标

这个指标用来衡量在一定时间周期内,卖方力量的强度。与上面相反,今开高于昨开,则卖方力量弱,取0值。

STM(动态买盘指标和):STM是DTM在N日内的累计和。

SBM(动态卖盘指标和):SBM是DBM在N日内的累计和。

ADTM(动态买卖气指标):如果STM大于SBM,则ADTM为(STM-SBM)/STM;如果STM小于SBM,则ADTM为(STM-SBM)/SBM;如果STM等于SBM,则ADTM为0。

ADTM从公式上看,除了STM/SBM谁大用谁做分母外,买方力量强为正,卖方力量强为负,但这些都是通过计算开盘价的变化得到的。

N:=23;
M:=8;
DTM:=IF(OPEN<=REF(OPEN,1),0,MAX((HIGH-OPEN),(OPEN-REF(OPEN,1))));
DBM:=IF(OPEN>=REF(OPEN,1),0,MAX((OPEN-LOW),(REF(OPEN,1)-OPEN)));
STM:=SUM(DTM,N);
SBM:=SUM(DBM,N);
ADTM:IF(STM>SBM,(STM-SBM)/STM,IF(STM=SBM,0,(STM-SBM)/SBM));// RSI
LC:=REF(CLOSE,1);
RSI1:=SMA(MAX(CLOSE-LC,0),N1,1)/SMA(ABS(CLOSE-LC),N1,1)*100;

这个公式的逻辑与RSI其实是一致的,只不过RSI计算的是收盘价与昨收的差值,而ADTM计算的开盘价的差值,但是又可能是最高价减开盘价的差值,因此如果我们试着用开盘价进行RSI的计算,得到的图形会跟ADTM有一半左右的相似,因为还会出现使用最高价减开盘价的不同情况。

一般的ADTM会直接做ADTM的平均线,然后转化为交叉类的策略应用。但从公式以及作为超买超卖类指标而言,上下限值的穿越才是其本身的策略。比如说上穿-0.5以及下穿0.5等,这两类策略可以相互搭配起来,还可以把前面所分析的背离等策略也综合起来。

另外,如果采用了交叉类的策略,可以拿MACD做比较,从上图也可以发现,大多数情况下,ADTM(默认参数23)的交叉与MACD也很相近。

CC09_ATR真实波幅指标

ATR指标其实在内置指标DMI时作为前置指标已经简单介绍过了。

ATR真实波幅指标,全称为Average True Range,即平均真实波幅,是一种衡量市场波动性的技术分析指标。

ATR指标由J. Welles Wilder Jr.在1978年首次提出,主要用于衡量股票、期货等金融市场的价格波动幅度和趋势的强度。它通过计算一定时间段内的最高价、最低价与收盘价之间的平均真实波动距离来反映市场的波动性。

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

前面也提到过,ATR的波动幅度计算非常的巧妙,不仅把当天的幅度计算出来,并且有跳空高开或低开的情况也可以把波动幅度计算出来,是非常值得学习和借鉴的指标。

  • ATR通道包括一个上限和下限,其中上限等于股票的前一交易日收盘价加上ATR值的M倍,下限等于前一交易日收盘价减去ATR值的M倍。M是用户自定义的系数。
  • 如果股票价格超过ATR通道的上限,可以认为市场处于超买状态;如果股票价格跌破ATR通道的下限,可以认为市场处于超卖状态。

其实,ATR主要用来参考每天可能的上下限,以便于我们进行所谓的低买高卖,这就变成了日内短线交易的的策略,而不是日K线的的策略。

另外,ATR是直接价格的计算,不同股价就会得到不同的数量级的值,这个在图上显示作为辅助参考指标是可以的,但如果要进行选股操作就不行了。但如果我们想选出真实波动百分比在3%以上的股票来做网格交易,就需要自己在ATR的基础上去除以一个昨日收盘价计算成百分比。

由上图,副图1是ATR的原指标,副图2是基于通道的理论,当M=0.8时的情况, 这个就很类似于斐波那契枢轴点或者信封指标。而副图3就是计算到百分比后的指标情况,似乎振幅变大对应着在阶段底部了。

本节小结

股票软件的技术指标公式又分15个小类,本节学习和实践了第1类大势型和第2类超买超卖型。 
在大势型指标公式中,如名字所指,只用于分析大势大盘,指数(板块),这些指标都是基于上涨家数与下跌家数的各种关系而出现的。 

  1. ABI绝对广量就是用上涨减下跌的绝对值去除以上涨加下跌;
  2. 而ADL腾落指标是上涨减下跌的累加;
  3. ADR涨跌比率直接用上涨和除以下跌和;
  4. ARMS阿姆氏是上涨除以下跌的指数移动平均线;
  5. BTI广量冲力是用上涨除以涨跌和的指数移动平均线;
  6. 麦克连是上涨减下跌的差值再做快线和慢线的指数平均,且MCL1就相当于BTI;
  7. OBOS与麦克连的MCL1公式相同参数不同;
  8. STIX的公式其实就是BTI的公式分成二部分来写。

在大势型这么多指标公式中,绝对广量用于发现物极必反的转折点;
而ADR,ARMS,BTI,MCL,OBOS,STIX都差不多,其中ADR和ARMS的下、上区间是(0,1)和[1,无穷],这样的坐标很难制作对称和看上去很方便的策略,可以转换成对数坐标;但其实BTI的上下区间就是对称的,而且基本在40~60的区间内,所以推荐使用BTI即可。
在这里我们还讨论了指标钝化的问题,由于累加或平均线会把前面的数据也加入计算,因此我们需要较小的周期,以及对背离的判断等。在策略中添加一个动态限值的逻辑是非常有必要的。

在超买超卖指标公式中,有一些早上backtrader内置指标中已经实践过了,比如CCI,KD,MTM和ROC,RSI,WR,ATR。
而在股票软件的这一类中,又学习了MFI资金流量,OSC变动速率线-->归一化为BIAS乖离度;
还有UDL引力线指标,经过我们的实践发现可以直接用EMA9来代替UDL,另外收盘远离引力线的时候,可以用红绿柱状线进行指示并设定1个区间;布林极限其实就是backtrader中的布林百分比,而布林极限宽是用来判断布林带扩口、缩口,并且我们开始接触到三次买点和三次卖点的多仓位策略雏形。另外,FSL分水岭可以简化为EMA6和EMA12两条线,甚至可以简化为EMA9一条线;最后ADTM动态买卖气指标用开盘价来衡量买方力量的强度,也是非常不错的指标。


http://www.mrgr.cn/news/62940.html

相关文章:

  • Spring Boot2.x教程:(十)从Field injection is not recommended谈谈依赖注入
  • @Controller 和 @RestController 区别
  • Java:网络初识
  • 放电消纳负载箱应用经验有哪些?
  • stm32 开发环境的 搭建
  • 【Linux】安装并配置 Microsoft SQL Server 数据库(Ubuntu 22.04)
  • C++集合运算函数总结-
  • DCS系统
  • LVGL盒子模型的概念
  • 五、鸿蒙开发-组件状态管理
  • OpenCSG携手书生·浦语:InternLM2.5-20B-Chat 正式上线,共建AI未来新生态
  • 哪里能找到海量短视频素材和制作教程?
  • 高效记录编程笔记
  • Spring IOC
  • 使用UDP实现发送和接收
  • 数据结构,问题 C: 后缀表达式
  • 《别了,浔川社团官方;你好,浔川社团官方联合会》
  • 很抽象但是好用的方法打败Vue框架第一天-Vue项目构建原神前端界面(Vue+js+html+css+jquery)
  • 搭建WIN32的开发环境
  • 高并发设计模式之ForkJoin模式
  • 客户的奇葩要求—在CAN网络的基础上加入了CAN_FD的节点
  • Redis(持续更新ing。。。)
  • 贪心算法习题其二【力扣】【算法学习day.18】
  • Rust 力扣 - 1343. 大小为 K 且平均值大于等于阈值的子数组数目
  • 博图V19的DB块,批量导入组态王
  • 如何去掉idea的Usage提示