有关原理性的东西就说到这里了,下面给出自适应均线系统的指标公式,此公式在通达信、大智慧、飞狐软件中均调试通过: {主图公式,或者附图叠加K线公式} {n=10}
DIR:=ABS(CLOSE-REF(CLOSE,n));
VIR:=SUM(ABS(CLOSE-REF(CLOSE,1)),n); ER:=DIR/VIR;
CS:=ER*(2/3-2/31)+2/31; CQ:=CS*CS;
AMA:DMA(CLOSE,CQ),COLORGREEN;
AMA1:IF(AMA>REF(AMA,1),AMA,DRAWNULL),COLORRED;
这样做出的自适应均线已经可以使用,但是如果对自适应均线做一次2周期的EMA,也是可以接受的,代码如下:
{主图公式,或者附图叠加K线公式} {n=10}
DIR:=ABS(CLOSE-REF(CLOSE,n));
VIR:=SUM(ABS(CLOSE-REF(CLOSE,1)),n); ER:=DIR/VIR;
CS:=ER*(2/3-2/31)+2/31; CQ:=CS*CS;
AMA:EMA(DMA(CLOSE,CQ),2),COLORGREEN;
AMA1:IF(AMA>REF(AMA,1),AMA,DRAWNULL),COLORRED,LINETHICK2; 一、考夫曼的做法: 自适应均线系统的交易法则,根据考夫曼《精明交易者》一书中的介绍,其基本交易法则为: 1.当自适应移动平均值向上拐头时,买入; 2.当自适应移动平均值向下拐头时,卖出。
当价格横向移动时,上述的交易方式将频繁产生进出交易的假信号。为了避免假信号的干扰,应该向AMA交易系统中添加一个过滤器。这个过滤器是根据自适应均线变化的标准差的百分比来确定。
根据这个原理,自适应均线的公式可做如下的完善: DIR:=ABS(CLOSE-REF(CLOSE,10));
VIR:=SUM(ABS(CLOSE-REF(CLOSE,1)),10); ER:=DIR/VIR;
CS:=ER*(2/3-2/14)+2/14; CQ:=CS*CS;
AMA:EMA(DMA(CLOSE,CQ),2),COLORGREEN; FIL:=STD(AMA-REF(AMA,1),20);
DRAWICON(FILTER(AMA-LLV(AMA,3)>FIL*0.1,10),AMA,1); 二、我实际的操作方法:
本人在使用自适应均线的中,并没有采用考夫曼的方式。 当自适应均线拐头向上时,必须使用连续两天的日K线确认趋势,当连续两根日K线均处于自适应均线上方时,方可确认上升趋势。
1.第一根日K线应该从自适应均线的下方向上穿越自适应均线;
2.第二根日K线,不论是阴线还是阳线,均不应跌破自适应均线,这时,可确认股价进入上升趋势。
3.以第一根穿越自适应均线的最高点【或者K线实体的高点】为标准,在后面的3天之内,股价高于这个标准的时候,为买入点。
4.卖出点也是以连续2日的K线低于自适应均线为卖出信号,如果连续两条价格不能收在自适应均线的上方,则必须卖出通过在MACD股票论坛中的交流,对自适应均线的使用做了一些改动。根据网友baifq的建议,采用两条自适应均线,分别适用短周期和长周期。并且对长周期均线做了三色处理。 交易法则:
1、长周期均线为绿色时,不可操作;
2、长周期为蓝色,股价穿越短周期均线时,可建50%的仓位; 3、股价穿越长期均线时,可再建50%仓位; 4、股价跌破短周期均线时,减掉50%仓位; 5、股价跌破长周期均线时,卖出全部股票; 6、长周期均线为红色时,代表持股。短过长,蜡烛线中阳或调空,可买;或短在长上,连续2-3日小阳,成交量短在长上,可买. 以下是修改后的代码:【通达信】 DIR1:=ABS(CLOSE-REF(CLOSE,5));
VIR1:=SUM(ABS(CLOSE-REF(CLOSE,1)),5); ER1:=DIR1/VIR1;
CS1:=ER1*(0.8-2/8)+2/8; CQ1:=CS1*CS1;
AMA1:EMA(DMA(CLOSE,CQ1),2) ,COLORWHITE; DIR2:=ABS(CLOSE-REF(CLOSE,10));
VIR2:=SUM(ABS(CLOSE-REF(CLOSE,1)),10); ER2:=DIR2/VIR2;
CS2:=ER2*(0.8-2/24)+2/24; CQ2:=CS2*CS2;
AMA2:EMA(DMA(CLOSE,CQ2),2),COLORGREEN,LINETHICK2;
AMA3:IF(AMA2/REF(AMA2,1)>0.997,AMA2,DRAWNULL),COLORBLUE,LINETHICK2; AMA4:IF(AMA2/REF(AMA2,1)>1.001,AMA2,DRAWNULL),COLORRED,LINETHICK2;
经过上述修改后,短期均线更适合短线操作,并能为长期趋势提供比较准确的买卖点。+
根据考夫曼的自适应均线原理,利用文华财经编了一下,还是不错的,现把源代码公布出来给大家参考。
交易指标即自适应均线的源代码,我根据指标改良了一下交易系统,考夫曼原来是采用均线值的变化率发出买卖信号,我觉得不是很好,就用最高最低价构建了一个智能均线带,采用最低最高价突破来发出信号,大家一起探讨阿。 交易指标:
DIRECTION:=CLOSE-REF(CLOSE,N);
VOLATILITY:=SUM(ABS((CLOSE-REF(CLOSE,1))),N); ER:=ABS(DIRECTION/VOLATILITY); FASTSC:=2/(2 + 1); SLOWSC:=2/(30 + 1);
SSC:=ER*(FASTSC-SLOWSC)+SLOWSC; CONSTANT:=SSC*SSC;
AMAHIGH:REF(EMA(HIGH,N),1)+CONSTANT*(HIGH- REF(EMA(HIGH,N),1)); AMALOW:REF(EMA(LOW,N),1)+CONSTANT*(LOW- REF(EMA(LOW,N),1)); 交易模型:
DIRECTION:=CLOSE-REF(CLOSE,N);
VOLATILITY:=SUM(ABS((CLOSE-REF(CLOSE,1))),N); ER:=ABS(DIRECTION/VOLATILITY); FASTSC:=2/(2 + 1); SLOWSC:=2/(30 + 1);
SSC:=ER*(FASTSC-SLOWSC)+SLOWSC; CONSTANT:=SSC*SSC;
AMAHIGH:=REF(EMA(HIGH,N),1)+CONSTANT*(HIGH- REF(EMA(HIGH,N),1)); AMACLOSE:=REF(EMA(CLOSE,N),1)+CONSTANT*(CLOSE- REF(EMA(CLOSE,N),1));
AMALOW:=REF(EMA(LOW,N),1)+CONSTANT*(LOW- REF(EMA(LOW,N),1)); LOW>AMAHIGH,BK; CLOSEAMACLOSE,BP;
AMACLOSE:=REF(EMA(CLOSE,N),1)+CONSTANT*(CLOSE- REF(EMA(CLOSE,N),1));
这还不是原书中定义的自适应均线。按原书中定义,应该是: AMA:=CONST*CLOSE+(1-CONST)*REF(AMA,1);
显然原书中的定义排除了人为的N,因此更加自然。可惜对AMA的定义需要向前引用ref(AMA,1),在文化中无法得到支持,这是文化平台需要改进的一个重大缺陷。目前还想不出如何在文化中完整实现原书中的定义。
尝试用 AMA:=DMA(CLOSE, CONST); 得到的结果竟成了一直线
我曾将DMA等函数用循环语句试写,主要是加深对这些函数的理解,也为学习飞狐的循环语句。公式源码仅供参考,如有错误请指正。
input:n(0.2,0,1); a:=c; y:=a;
for i=2 to datacount do y:=a*n+(1-n)*y; 虫dma:y;
飞狐dma:dma(c,n);
========================
================================ input:n(20,1,99); a:=c; y:=a;
for i=2 to datacount do y:=(2*a+(n-1)*y)/(n+1); 虫ema:y;
飞狐ema:ema(c,n);
==================================== ============================= input:n(20,1,99),m(10,1,99);
if n<=m then EXIT; a:=c; y:=a;
for i=2 to datacount do y:=(m*a+(n-m)*y)/n; 虫sma:y;
飞狐sma:sma(c,n,m);
======================================= ==================================== input:n(0.9,0,99),m(0.1,0,99); a:=c; y:=a*m;
for i=2 to datacount do y:=n*y+m*a; 虫tma:y;
飞狐tma:tma(c,n,m);
======================================= ======================================== input:n(20,1,99); for i=0 to n-1 do y:=y+(n-i)*ref(c,i); 虫wma:y/(n+1)/n*2; 飞狐wma:Wma(c,n);
Last edited by 钻心虫 on 2005-11-7 at 16:28 ]