我叫何丑丑い
2024-11-29 09:37:40
最佳回答
1.xma只在通达信可用,其他股软可用下面代码的后两句代替xma测试a:=xma(h,n);b:=ma(h,n);ref(a,floor(n/2));ma((h-forcast(h,ceiling(n/2))),n)+b;需要注意的是 forcast 是属于"未来"的3楼的把动态行情和财务数据都归于"未来",那就什么也别做了2.通达信公式系统的几个函数的解释ma:简单移动平均sma:移动平均ema(expma):指数移动平均expmema:指数平滑移动平均mema:平滑移动平均dma:动态移动平均xma(x,m):偏移移动平均ema同expma一样的意思ema(x,n)=sma(x,n+1,2)sma:返回累积平均用法:sma(x,n,m):x的m日累积平均,m为权重,如y=(x*m+y'*(n-m))/nma(x,n)=sma(x,n,1)mema(x,n)与ma的差别在于起始值为一平滑值,而不是初始值expmema同ema(即expma)的差别在于他的起始值为一平滑值dma:求动态移动平均.用法:dma(x,a),求x的动态移动平均.算法: 若y=dma(x,a)则 y=a*x+(1-a)*y',其中y'表示上一周期y值,a必须小于1.例如:dma(close,vol/capital)表示求以换手率作平滑因子的平均价xma(x,m):x的m日偏移移动平均这种移动平均可能会用到未来数据,用到了当日以后m/2日的数据,只供内部保留测试使用3.自己研究一下{关于 xma}xma(x,m):x的m日偏移移动平均这种移动平均可能会用到未来数据,用到了当日以后m/2日的数据,只供内部保留测试使用xma函数分析(通达信)a:xma(c,n);b:=ma(c,n);x:ref(a,floor(n/2));y:ma((c-forcast(c,ceiling(n/2))),n)+b;你将看到 x 和 y 基本吻合,而 x 滞后 a floor(n/2) 个周期飞狐可做如下模拟实现}input:k(0,0,3),n(6,1,9999);m:=if(k=0,open,if(k=1,high,if(k=2,low,close)));xma:refx(ma((m-forcast(m,ceiling(n/2))),n)+ma(m,n),ceiling(n/2));普通ma:ma(c,n);4.{指标名称----------观察偏移}m:20,nodraw;{m的大小可在这里自由调}a0:=ema((ma(hhv(h,2),2)+ma(llv(l,2),2))/2,2);原形:ma(a0,m),color00aaee;偏移:xma(a0,m),color00ff00;drawtext(原形>ref(原形,1) and ref(原形,1)<ref(原形,2),原形,'★'),color00bbff;drawtext(偏移>ref(偏移,1) and ref(偏移,1)<ref(偏移,2),偏移,'★'),color99ff00;drawtext(原形<ref(原形,1) and ref(原形,1)>ref(原形,2),原形,'◎'),color00bbff;drawtext(偏移<ref(偏移,1) and ref(偏移,1)>ref(偏移,2),偏移,'◎'),color99ff00;{先用这个原码看看图形,重点看绿★到黄★ 绿◎到黄◎的间隔周期与m的一半(m/2)的关系,再对比出现黄绿信号时的指标数值,你一定会有新的发现}5.关于 xmaxma(x,m):x的m日偏移移动平均这种移动平均可能会用到未来数据,用到了当日以后m/2日的数据,只供内部保留测试使用xma函数分析(通达信)a:xma(c,n);b:=ma(c,n);x:ref(a,floor(n/2));y:ma((c-forcast(c,ceiling(n/2))),n)+b;你将看到 x 和 y 基本吻合,而 x 滞后 a floor(n/2) 个周期飞狐可做如下模拟实现input:k(0,0,3),n(6,1,9999);m:=if(k=0,open,if(k=1,high,if(k=2,low,close)));refx(ma((m-forcast(m,ceiling(n/2))),n)+ma(m,n),ceiling(n/2));其他股软不易实现由于使用了未来数据,慎用!!!6.先说说偶使用xma的基本理念供大家讨论:首先回顾一下xma(c,n)1、在n/2日以前部分,是移中均线(这段基于已经发生的历史数据,是真实可信的,以后也不会再变动)2、在n/2日以后部分,简单的取已知数据的平均值作为未来数据供计算使用。(例释:根据已经知道的40个交易日数据,xma预计下一个交易的收盘价是这40天的均价;根据已经知道的39个交易日数据,xma预计下2个交易的收盘价都是这39天的均价)(这段使用了部分未来数据,以后会变的)因此提出下面两条使用xma的基本原则1、以更合理的方法对未来进行预测n/2日以后,xma简单的取已知数据的平均值作为未来数据供计算使用,这实际上是随机走动理论的体现,否定了股市中存在趋势偶根据道琼斯理论按历史上数据变动的趋势对未来进行预测(顺便说一句,偶是道氏的粉丝^_^)2、严格区分已经发生的历史和对未来的预测偶目前的方法是将xma的输出截断,保留真实可靠的移中均线部分虽然偶认为趋势理论优于随机走动理论,但预测毕竟是预测不能等同于事实因此将两部分分段画图,中间留一个缺口,明确两者之间的边界7.xma到底是什么?揭开xma的面纱!xma到底是什么?揭开xma的面纱!我将xma函数的面纱向大家揭开,但从上次我发出xma函数源码求助帖至今,我仍然没有获得xma函数的源码,如果有高手知道的可以交流。我上次因是新人不知道版规就为求助xma函数源码、长时间挂贴、没获得最满意的解答擦掉求助帖而挨千钧老师的板子,在此向千钧老师再次道歉,现在知道版规了,不会再瞎擦了,请放心。 xma到底是什么?揭开xma的面纱!1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20.。。。。。。。。如果在10这个地方统计ma(c,5)=(6+7+8+9+10)/5;这是以10为终点,向前统计法;如果在10这个地方统计xma(c,5)=(8+9+10+11+12)/5;这是以10为中点,从中间向前和向后统计法;如果在10这个地方统计ma(c,7)=(4+5+6+7+8+9+10)/7;这是以10为终点,向前统计法;如果在10这个地方统计xma(c,7)=(7+8+9+10+11+12+13)/7;这是以10为中点,从中间向前和向后统计法;如果在10这个地方统计ma(c,9)=(2+3+4+5+6+7+8+9+10)/9;这是以10为终点,向前统计法;如果在10这个地方统计xma(c,9)=(6+7+8+9+10+11+12+13+14)/9;这是以10为中点,从中间向前和向后统计法;假如今天就是10号收盘,前面的数据已经发生了,但是11号、12、13、14、15、16、17、18、19、20......没有发生,没有发生就没数据,但xma如何给没发生的赋值数据呢?原理很简单:假如是xma(c,7),以10号收盘来统计xma(c,7),7、8、9、10数据已经有了,但11、12、13还没发生,数据没有,怎么办?就是这用7、8、9、10这4天的平均价赋值分别给11、12、13;然后全部求平均。如果是n天呢?n天后的没有发生的怎么赋值?那就用n天前的包括n天的((n+1)/2)天的平均价赋值;但是有一点,xma还怪在这里:当今天10号已经过去,11号变成今天,昨天对11号没发生的赋值又会用今天的实际值来取代。用11号实际发生的数值取代昨天对今天的赋值;xma(c,n)里的一般为奇数,当n设定为偶数时候,它怎么办呢?就是自动采用n+1法自动调整为奇数。8.{指标名称----------观察偏移}m:20,nodraw;{m的大小可在这里自由调}a0:=ema((ma(hhv(h,2),2)+ma(llv(l,2),2))/2,2);原形:ma(a0,m),color00aaee;偏移:xma(a0,m),color00ff00;drawtext(原形>ref(原形,1) and ref(原形,1)<ref(原形,2),原形,'★'),color00bbff;drawtext(偏移>ref(偏移,1) and ref(偏移,1)<ref(偏移,2),偏移,'★'),color99ff00;drawtext(原形<ref(原形,1) and ref(原形,1)>ref(原形,2),原形,'◎'),color00bbff;drawtext(偏移<ref(偏移,1) and ref(偏移,1)>ref(偏移,2),偏移,'◎'),color99ff00;{先用这个原码看看图形,重点看绿★到黄★ 绿◎到黄◎的间隔周期与m的一半(m/2)的关系,再对比出现黄绿信号时的指标数值,你一定会有新的发现}------------声明:这可不是飞狐的哟9.昨天xma,感觉指示蛮准的,为了搞清编制原理,上网搜索一下,好像没人知道,经过一天的琢磨,终于**:xma(x,n)为int(n/2)+i个x的均值,其中 i 由最后一交易日倒数到int(n/2)+1, 即 1 到int(n/2)+1,i 倒数至int(n/2)+1后,xma(x,n)值为2*int(n/2)+1个x的均值。因此,倒数int(n/2)+1个xma值便是最终值(不再变化),而倒数1 到int(n/2)个xma终值受未来int(n/2)-i+1个x的影响,由此看来xma(x,n)是个未来函数,具有欺骗性。 补充说明:x的取值在 i >int(n/2)后,以 i 为中心的2*int(n/2)+1个数值;i <=int(n/2),右侧被截断int(n/2)-i+1个。谢谢指点!**前没有搜索到该帖,现在补看一下。不过,我还是要奉劝你一句:为人最好谦虚点,特别是想教训或怀疑别人的时候。象你这样连我对xma描述都看不懂,就怀疑我抄袭。等同于我怀疑你有智障一样无礼!尽管我怀疑你有智障有充分的理由。为了让你明白我关于xma(x,n)的描述,再多说几句:xma(x,n)值观察点的位置对应于x序列倒数排序值i1. 在i >int(n/2)时,x序列中x(i)位于x(int(n/2))左侧,如: ...、x(i)、...、x(int(n/2))、...、x(3)、x(2)、x(1) 在x(i)处显示的xma(x,n),是以x(i)为中心的2*int(n/2)+1个x均值 此时xma(x,n)的x均值数组为: x(i+int(n/2))、...、x(i)...、x(i-int(n/2)),即x(i)为中心、向左/右再连续各取int(n/2)个x。 由于i >int(n/2),所以i-int(n/2)>=1,只要最后交易日收盘后x(1)就不再变化,xma(x,n)向右连续取int(n/2)个x时就不存在不确定值,所以说序列倒数至int(n/2)+1后对应的xma值便是最终值(不再受未来数据影响),这时通达信的ref(xma(x,n),intpart(n/2))与ma(x,2*intpart(n/2)+1)完全一致。2. 在i <=int(n/2)时,x序列中x(i)位于x(int(n/2))右侧,如: ...、x(int(n/2))、...、x(i)...、x(3)、x(2)、x(1) 在x(i)处显示的xma(x,n),不再是以x(i)为中心的2*int(n/2)+1个x均值,而是x(i)、向左连续取int(n/2)个x、向右只能取到i-1个x,由这int(n/2)+i个x的均值得到此处的xma(x,n),即此时xma(x,n)的x均值数组为: x(i+int(n/2))、...、x(int(n/2))、...、x(i)...、x(1)。 相比x均值数组的饱和个数2*int(n/2)+1,此时数组被截断2*int(n/2)+1-(int(n/2)+i)=int(n/2)-i+1个x。 在未来不断增添的最后一交易日过程中,目前观察点在x序列将重新排序,同一交易日所对应的序列位置将左移,即i 值会增大,该交易日的xma(x,n) 均值数组扩大(直至i >int(n/2)后均值数组饱和为止),数值被不断修正、发生漂移,此时的xma(x,n)最终值受未来int(n/2)-i+1个x的影响。 20210311