shixiaolong0
shixiaolong0

变化!如果今天的自己和昨天点自己没有差异,那么就是白活! 简书:https://www.jianshu.com/u/dd76e4af1f33 twitter:https://twitter.com/dragon72463399 rust学习笔记:https://dev.to/dragon72463399

加权震荡指数(币价)

首先需求是:想过滤掉一些价格振幅过大的币种;


面临的问题:如果单纯性的计算价格振幅更具价格振幅设定某个阈值取进行过滤,会有两个缺陷:

1、不同币的脾性不一样,有的波动就很小,是不活跃的,就算对于自己的历史来讲是很大的波动了,但是对于活跃币种而言就是很小的波动;所以这个阈值根本不好取;

如果偏向波动小的币种,那么活跃的币种,相对于他们自己来说其实波动并不算大;却由于阈值过小,而会被过滤掉;

如果偏向活跃的币种,那阈值设置的就偏大,然后很多不活跃的币种其实已经是大幅震荡了,却不能达到阈值,无法被过滤;出现漏网之鱼

2、当阈值固定的时候:

2.1、如果是单边大涨的行情,那么计算振幅的价差肯定是偏大的,但是实际上,这种强势的市场,是不希望被滤掉的,如果滤掉了,那么就是错杀了;

2.2、当你想规避2.1的问题的时候,单纯的调高阈值;这个时候很多横盘宽幅震荡的,本该被过滤的,却没有被过滤,就出现了大量的漏网之鱼;


上面两个问题是没有办法平衡的,是单纯的计算振幅的价差无法解决的;


在经历过多个版本迭代后,慢慢的推演除了一个想法:

amp = 振幅价差(pricediff)/均线的斜率(slop)


以这种计算方式得到的amp值能很好的解决上面遇到的问题“2”;

具体分析:

假设振幅价差pricediff不变;当slop大的时候,就导致了分母大,那么即使pricediff比较大,amp值也不会很大;不会错杀单边大涨的行情

假设振幅价差pricediff不变;当slop小的时候,就导致了分母小,如果pricediff比较大,amp值会极端变大;那么像这种真正需要过滤的,大幅震荡的币,就不会被漏掉

通过以上分析;amp算法几不会错失单边上涨行情,又不会漏掉本该过滤的横盘宽幅震荡的行情;


但是,但是!amp算法适合单个币的不同波段,能够很好的反应真实的震荡情况;但是适配不同币种不同活跃度之间的比较吗?

或者说 amp值固定,能不能适配所有的币,以此值为阈值,对所有币进行过滤呢,会不会因为活跃度不同而有偏差?


论证下看看:

1、除数(slop)分析

当引入slop作为除数的时候,slop复合了币的脾性(活跃或者不活跃):

如果活跃的,slop绝对值的值就会很大,即使看起来不那么陡峭;

如果不活跃,看起来陡峭的,其其实slop的值也不会很大;

这又是一个大问题,slop的值,压根没有办法判断趋势的具体情况!

想办法加个权重,来平衡掉这个问题,使得不管是活跃的还是不活跃的,加权slop得到的值,都能准确判断趋势情况;

算法:

加权slop(w_slop) = slop/k线平均长度(kl)


活跃的币有个特征,就是kl是长的,反之是短的;

假设w_slop固定:

不活跃的币,由于分母kl较小;就会使得w_slop值偏大点

活跃的币,由于分母kl较大;就会使得w_slop值偏小

故w_slop就很好的平衡掉了因为币的脾性不同,而导致无法通过slop的固定值来准通却判断趋势的问题;

所以slop跨币种衡量趋势的失真的问题能被 w_slop解决

显然 amp 的算法不是很合理

2、被除数(pricediff)分析

pricediff假设固定,其实也存在无法跨币种反馈震荡情况的问题,原因也是活跃度不同导致的;

如何使其能够跨币种适配呢,精确反馈震荡情况,而不出现偏差;

这里引入一个权重因子,也是kl

算法:

加权pricediff(w_pricediff) = pricediff/kl


这样当面临活跃的币时,kl作为分母会变大,使得w_pricediff 就往小的方向拽一拽

当面临不活跃的币时,kl是很小的,那么作为分母,就会使得w_pricediff 往大的方向拽拽

如此便可以通过一个固定值w_pricediff 来准确反应跨币种的 震荡幅度情况

所以新的价差w_pricediff能够跨币种


3、既然除数和被除数都解决了跨币种的问题,那么得出的值也就自然可以跨币种了

算法:

w_amp = w_pricediff/w_slop

= (pricediff/kl)/(slop/kl)

= pricediff/slop

= amp

等式一转换发现算出来的的值就是amp

饶了一大圈,数学上 证明amp是可以跨币种的

那用人话来表达下:

除数(pricediff)是存在失真情况的(无法跨币种),被除数(slop)也存在失真情况的(无法跨币种);

两个都失真,一除,彼此就抵消了,结果就不失真了


故,通过上面的论证,问题”2“解决了,并且可以跨币种


那看看问题”1“:

其实问题”1“就是因为不同币的活跃度不同,用一个死的震荡价差无法反馈真实情况的问题

在上面的论证过程中,除数与被除数都解决了跨币种,跨活跃度的问题了,那么算出的结果自然也就能够适配不同活跃度的币了;

故问题”1“顺带就被解决了

故amp值能够解决之前遇到的2大问题


给amp命个名吧,就叫 加权震荡指数 ;

特性:amp一个固定值,就能够适配不同币种,已经适配单个币的不同波段,精准反应震荡情况



进一步思考:

具体 amp 定的阈值是多大,这个需要进一步研究

影响amp值的因素:

具体 pricediff 计算的时间周期多久,需要考量

具体 slop 的计算窗口多大,也需要考量


纯野路子,希望大佬批评指教,多多挑毛病;感谢!!!!

CC BY-NC-ND 2.0 版权声明

喜欢我的文章吗?
别忘了给点支持与赞赏,让我知道创作的路上有你陪伴。

加载中…

发布评论