通达信公式技巧.docx
《通达信公式技巧.docx》由会员分享,可在线阅读,更多相关《通达信公式技巧.docx(94页珍藏版)》请在冰豆网上搜索。
通达信公式技巧
编写指标公式技巧
复制内容到剪贴板
代码:
0001--主图显示代码及板块
一、显示板块
例一:
DRAWTEXT(BARPOS=SYSPARAM
(2),H,'\N所属板块:
'+BLKNAME),ALIGN4,COLORYELLOW;
例二:
DRAWTEXT(SYSPARAM
(2)=BARPOS,C,'所属板块:
'+BLKNAME),ALIGN4,COLORYELLOW;
例三:
DRAWTEXT(SYSPARAM
(2)=BARSCOUNT(C),H,'[所属版块]:
'+BLKNAME),ALIGN4,COLORYELLOW;
二、显示代码及板块
S:
=STKLABEL;
DRAWTEXT(SYSPARAM
(2)=BARPOS,C,S),ALIGN4,COLORYELLOW;
DRAWTEXT(BARPOS=SYSPARAM
(2),H,'\N所属板块:
'+BLKNAME),ALIGN4,COLORYELLOW;{N与所属板块之间空六格,以显示代码}
0031--均线多头排列
A1:
=MA(C,N1);
A2:
=MA(C,N2);
A3:
=MA(C,N3);
A4:
=MA(C,N4);
COUNT(A1>A2ANDA2>A3ANDA3>A4,3);
0032--均线空头排列
A1:
=MA(C,N1);
A2:
=MA(C,N2);
A3:
=MA(C,N3);
A4:
=MA(C,N4);
COUNT(A1 0033--N日均线向下
AA:
=MA(C,N);
BB:
=REF(AA,1);
AA
0034--N日均线向上
AA:
=MA(C,N);
BB:
=REF(AA,1);
AA>BB
0035--N日均线走平
AA:
=MA(C,N);
BB:
=REF(AA,1);
AA=BB
0036--向前N日至M日出现过均线死叉(P1 AA:
=MA(C,P1);
BB:
=MA(C,P2);
CC:
=REF(CROSS(BB,AA),N);
COUNT(CC,M);
0037--今日成交量大于N日以来的均量
VOL>MA(VOL,N);
0038--低位密集
A1:
=COST(85);
A2:
=COST(15);
A3:
=A1-A2;
A4:
=(A1+A2)/2;
A5:
=A3/A4*100<10;
B1:
=HHV(H,120);
B2:
=LLV(L,120);
B3:
=B1-B2;
B4:
=(A4-B2) A5ANDB4;
0039--换手率
VOL/CAPITAL*100;
0040--N日盈亏
V1:
=VOL/SUM(VOL,N);
V2:
=DMA(CLOSE,V1);
V3:
(CLOSE-V2)/V2*100;
0041--曲线叠加
指标线的叠加,是为了方便观看和比较,没什么其他的意义。
一、对指标曲线的变化幅度放大
此法,一线变形,另一线不变,但变形线的走势与原线完全相似。
举例:
C叠加V
BC:
=HHV(C,N)-LLV(C,N);//N一般取常用主图上的K线数量
BV:
=HHV(V,N);
BI:
=BC/BV;//叠加比
B:
=BI[DATACOUNT];//最后一根K线的叠加比,保证叠加比前后统一
成交量:
V,VOLSTICK;
F:
=C/REF(C,1);
JC:
=REF(C,1)*(1+A*F)*B/A;//A-放大倍数,将C的涨跌幅度F放大
JL:
=LLV(JC,N);//平移量。
请去掉JC句的=看JL的作用
收盘价:
C,LINETHICK0,COLORYELLOW;//只显示数值,不画线
PARTLINE(C>0,JC-JL[DATACOUNT]),COLORYELLOW;//收盘价趋势线,只画线,不显示数值
通式:
曲线X叠加曲线Y
BX:
=HHV(X,N)-LLV(X,N);
BY:
=HHV(Y,N)-LLV(Y,N);
BI:
=BX/BY;
B:
=BI[DATACOUNT];
FX:
=X/REF(X,1);
JX:
=REF(X,1)*(1+A*FX)*B/A;
XL:
=LLV(JX,N);
曲线Y:
Y;
曲线X:
X,LINETHICK0;//曲线X的值
PARTLINE(C,JX-XL[DATACOUNT]);//曲线X的线
二、百分比叠加
把两曲线的波动幅度划成百分比进行叠加
此法,两线都变形,但走势都与原线完全相似。
举例:
C叠加V
HV:
=HHV(V,N);
DV:
=HV[DATACOUNT];
BV:
=100/DV;
V*BV,VOLSTICK;
HC:
=HHV(C,N);
LC:
=LLV(C,N);
BC:
=100/(HC[DATACOUNT]-LC[DATACOUNT]);
(C-LC[DATACOUNT])*BC;
通式一:
曲线X,曲线Y
XH:
=HHV(X,N);
XL:
=LLV(X,N);
XDH:
=XH[DATACOUNT];
XDL:
=XL[DATACOUNT];
BX:
=100/(XDH-XDL);
曲线X:
(X-XDL)*BX;
YH:
=HHV(Y,N);
YL:
=LLV(Y,N);
YDH:
=YH[DATACOUNT];
YDL:
=YL[DATACOUNT];
BY:
=100/(YDH-YDL);
曲线Y:
(Y-YDL)*BY;
通式二:
X曲线+Y曲线
N:
=SYSPARAM(3)-SYSPARAM
(2);
X:
=.........;{.........为X曲线定义}
XH:
=HHV(X,N);
XL:
=LLV(X,N);
XDH:
=XH[SYSPARAM(3)];
XDL:
=XL[SYSPARAM(3)];
BX:
=100/(XDH-XDL);
曲线X:
(X-XDL)*BX;
Y:
=.........;{.........为Y曲线定义}
YH:
=HHV(Y,N);
YL:
=LLV(Y,N);
YDH:
=YH[SYSPARAM(3)];
YDL:
=YL[SYSPARAM(3)];
BY:
=100/(YDH-YDL);
曲线Y:
(Y-YDL)*BY;
三、固定位置叠加
此法应用不多,仅举例。
例一:
主图成交量(V叠加C)
{M:
960,1,2000}
R0:
=M/1000;R:
=(L-R0*SYSPARAM(5))/V;
R1:
=LLV(R,SYSPARAM(3)-SYSPARAM
(2));R2:
=R1[SYSPARAM(3)];
R3:
=LLV(L-R2*V,SYSPARAM(3)-SYSPARAM
(2));
R4:
=R3[SYSPARAM(3)];R5:
=(R2*V+R4)*0.995;
STICKLINE(C>=REF(C,1),R5,R0*SYSPARAM(5),6,1)COLORRED;
STICKLINE(C PARTLINE(V>=0,R0*SYSPARAM(5))COLORWHITE;
PARTLINE(R5>0,MA(R5,5));
PARTLINE(R5>0,MA(R5,10));
PARTLINE(R5>0,MA(R5,20));
例二:
INPUT:
N(10,2,999);
M:
=SYSPARAM(3)-SYSPARAM
(2);
X:
=C;
Y:
=SUM(IF(CLOSE>REF(CLOSE,1),VOL/CAPITAL,IF(CLOSE XH:
=HHV(X,M);XL:
=LLV(X,M);XDH:
=XH[SYSPARAM(3)];XDL:
=XL[SYSPARAM(3)];
BX:
=100/(XDH-XDL);
收盘:
C,LINETHICK0,;
收盘↑:
PARTLINE(X>REF(X,1),(X-XDL)*BX),COLORRED;
收盘↓:
PARTLINE(X YH:
=HHV(Y,M);YL:
=LLV(Y,M);YDH:
=YH[SYSPARAM(3)];YDL:
=YL[SYSPARAM(3)];
BY:
=100/(YDH-YDL);
TY:
=(Y-YDL)*BY;
OBV值:
Y*1000,LINETHICK0,COLOR007BFF;
OBV线↑:
PARTLINE(Y>REF(Y,1),(Y-YDL)*BY),COLORYELLOW;
OBV线↓:
PARTLINE(Y A1:
=REF(TY,N)=HHV(TY,2*N+1);B1:
=FILTER(A1,N);C1:
=BACKSET(B1,N+1);HD:
=FILTER(C1,N);
A2:
=REF(TY,N)=LLV(TY,2*N+1);B2:
=FILTER(A2,N);C2:
=BACKSET(B2,N+1);LD:
=FILTER(C2,N);
AA:
=REF(TY,BARSLAST(HD));BB:
=REF(TY,BARSLAST(LD));A1:
=REF(Y,BARSLAST(HD))*1000;B1:
=REF(Y,BARSLAST(LD))*1000;
T1:
=BARSLAST(HD) T2:
=BARSLAST(HD)>BARSLAST(LD)ANDNOT(LD);
PARTLINE(T1,AA),COLORMAGENTA,LINETHICK2;
PARTLINE(T2,BB),COLORGREEN,LINETHICK2;
DRAWNUMBER(T1=0ANDREF(T1,1)>0,REF(AA,1)+0.1,A1,2);
DRAWNUMBER(T2=0ANDREF(T2,1)>0,REF(BB,1)+0.1,B1,2);
DRAWNUMBER(ISLASTBARANDT1>0,REF(AA,1)+0.1,A1,2),COLORYELLOW;
DRAWNUMBER(ISLASTBARANDT2>0,REF(BB,1)+0.1,B1,2),COLORMAGENTA;
0042--均线变色
MA05:
MA(CLOSE,5);
MA30:
MA(CLOSE,30);
IF(MA05 IF(MA05 IF(MA05>MA30,MA30,MA30),COLORBLUE;
DRAWICON(CROSS(MA05,MA30),L*0.98,4);
DRAWICON(CROSS(MA30,MA05),H*1.02,5);
TOP
私摹基金带您操作股票
股道
大户室
贡献
1?
红币
356?
个人空间
发短消息
加为好友
当前离线
2#大中小发表于2007-3-316:
58?
只看该作者
复制内容到剪贴板
代码:
0055--底背离
LLV(L,60)=L)ANDNOT(LLV(DEA,60)=DEA);
0056--顶背离
HHV(H,60)=H)ANDNOT(HHV(DEA,60)=DEA);
0057--N次金叉、死叉
0轴上二次金叉
COUNT(CROSS(DIF,DEA)ANDDEA>0,20)=2ANDCROSS(DIF,DEA)AND
DEA>0;
0轴上三次金叉
COUNT(CROSS(DIF,DEA)ANDDEA>0,20)=3ANDCROSS(DIF,DEA)AND
DEA>0;
0轴上四次金叉
COUNT(CROSS(DIF,DEA)ANDDEA>0,20)=4ANDCROSS(DIF,DEA)ANDDEA>0;
二次金叉
EXPLAIN(COUNT(CROSS(DIF,DEA),20)=2ANDCROSS(DIF,DEA);
二次死叉
COUNT(CROSS(DEA,DIF),20)=2ANDCROSS(DEA,DIF);
0058--5分钟副图显示15分钟K线
建公式:
0015
C15:
CLOSE;
O15:
OPEN;
H15:
HIGH;
L15:
LOW;
建公式:
十五K线
C15:
="0015.C15#MIN15";
O15:
="0015.O15#MIN15";
H15:
="0015.H15#MIN15";
L15:
="0015.L15#MIN15";
TI:
=OPENMINUTES(TIME)=10OROPENMINUTES(TIME)=25OROPENMINUTES(TIME)=40OROPENMINUTES(TIME)=55OROPENMINUTES(TIME)=70OROPENMINUTES(TIME)=85OROPENMINUTES(TIME)=100OROPENMINUTES(TIME)=115OROPENMINUTES(TIME)=130OROPENMINUTES(TIME)=145OROPENMINUTES(TIME)=160OROPENMINUTES(TIME)=175OROPENMINUTES(TIME)=190OROPENMINUTES(TIME)=205OROPENMINUTES(TIME)=220OROPENMINUTES(TIME)=235;
HH15:
=IF(TI,H15,C15);
LL15:
=IF(TI,L15,C15);
STICKLINE(C15>O15,C15,O15,10,0),COLORRED;
STICKLINE(C15>O15ANDH15>C15,HH15,C15,0.1,0),COLORRED;
STICKLINE(C15>O15ANDO15>L15,O15,LL15,0.1,0),COLORRED;
STICKLINE(C15<=O15,C15,O15,10,0),COLORGREEN;
STICKLINE(C15<=O15ANDC15>L15,C15,LL15,0.1,0),COLORGREEN;
STICKLINE(C15<=O15ANDH15>O15,HH15,O15,0.1,0),COLORGREEN;
注:
以大陆股市为例,四小时,其他市场如超过四小时,可在中间语句“TI:
=”中以15为系数顺序加足,如:
OR250OR265……等等。
0059--移动成本
不知道函数算法,计算误差在所难免。
调整参数“%”可看到不同的移动成本。
///筹码%
INPUT:
%(90,1,100);
A:
=AMOUNT/V/100;
成本:
FLOOR(COST(50-%/2)*100)/100,COLORYELLOW,LINETHICK0;
~:
CEILING(COST(50+%/2)*100)/100,COLORYELLOW,LINETHICK0;
集中度:
INTPART((~-成本)/(~+成本)*1000)/10,COLORGREEN;
平均成本:
ROUND(COST(50)*100)/100,LINETHICK0;
穿透力:
(WINNER(C)-REF(WINNER(C),1))/V*CAPITAL,LINETHICK0;//计算误差大
//穿透力2:
(WINNER(C)-WINNER(O))/V*CAPITAL,LINETHICK0;//这一写法还是误差大
获利比例:
ROUND(WINNER(C)*1000)/10,LINETHICK0;
TOP
私摹基金带您操作股票
股道
大户室
贡献
1?
红币
356?
个人空间
发短消息
加为好友
当前离线
3#大中小发表于2007-3-316:
58?
只看该作者
复制内容到剪贴板
代码:
0059--移动成本
不知道函数算法,计算误差在所难免。
调整参数“%”可看到不同的移动成本。
///筹码%
INPUT:
%(90,1,100);
A:
=AMOUNT/V/100;
成本:
FLOOR(COST(50-%/2)*100)/100,COLORYELLOW,LINETHICK0;
~:
CEILING(COST(50+%/2)*100)/100,COLORYELLOW,LINETHICK0;
集中度:
INTPART((~-成本)/(~+成本)*1000)/10,COLORGREEN;
平均成本:
ROUND(COST(50)*100)/100,LINETHICK0;
穿透力:
(WINNER(C)-REF(WINNER(C),1))/V*CAPITAL,LINETHICK0;//计算误差大
//穿透力2:
(WINNER(C)-WINNER(O))/V*CAPITAL,LINETHICK0;//这一写法还是误差大
获利比例:
ROUND(WINNER(C)*1000)/10,LINETHICK0;
0060--妙用SUMBARS()函数
SUMBARS(X,N)
函数的用法如下:
向前累加到指定值到现在的周期数。
用法:
SUMBARS(X,A)
将X向前累加直到大于等于A,返回这个区间的周期数
例如:
SUMBARS(VOL,CAPITAL)
1、设计一个指标,计算当日成交量是几天内的最高成交量?
2、设计一个指标,计算当日最高价是几天内的最高价?
提示:
直接用HHV()函数无法得到正确结果。
例一:
B:
=HHV(H,0);
A:
=IF(BARPOS=1,B[DATACOUNT]*1.2,H);
价:
SUMBARS(REF(A,1)-A,0);
U:
=HHV(V,0);
S:
=IF(BARPOS=1,U[DATACOUNT]*1.2,V);
量:
SUMBARS(REF(S,1)-S,0);
或:
VH:
=HHV(VOL,0);
FV:
=IF(BARPOS=1,VH[DATACOUNT]*1.2,VOL);//VH[DATACOUNT]是历史最高成交量
量创新高周期数:
SUMBARS(REF(FV,1)-FV,0);
{这里的关键是REF(FV,1)-FV,想想看写成FV-REF(FV,1)行不行?
}
另一种写法:
VH:
=HHV(VOL,0);
FV:
=VOL;
FV[1]:
=VH[DATACOUNT]*1.2;//VH[DATACOUNT]是历史最高成交量
量创新高周期数:
SUMBARS(REF(FV,1)-FV,0);
{这里的关键是REF(FV,1)-FV,想想看写成FV-REF(FV,1)行不行?
}
代码已经成功了,原理是什么呢?
假设某日成交量是3日内的最大成交量,则必有:
REF(VOL,3)-VOL>=0
等价于:
(REF(VOL,3)-REF(VOL,2))+(REF(VOL,2)-REF(VOL,1))+(REF(VOL,1)-VOL)>=0
意思就是说,“昨成交量与今成交量之差”逐日累加,直到某日累加和大于等于0,则这之间的天数,就是所要求的日数。
我们再来看看SUMBARS()函数的含义:
SUMBARS(X,A):
将X向前累加直到大于等于A,返回这个区间的周期数。
显然上面的式子:
(REF(VOL,3)-REF(VOL,2))+(REF(VOL,2)-REF(VOL,1))+(REF(VOL,1)-VOL)>=0
可以写成:
SUMBARS(REF(VOL,1)-VOL,0);
为何第1周期的成交量要替换成比所有成交量都大的数值?
最后,再来思考一个问题,把题目中的求“最大”,改成求“最小”,即多少天内是最小的?
例二:
B:
=HHV(H,0);
A:
=IF(BARPOS=1,9999,H);
Z:
SUMBARS(REF(A,1)-A,0);
DRAWNUMBER(BARPOS=SYSPARAM
(1),1,Z,0)ALIGN4,COLORWHITE;
U:
=HHV(V,0);
Y:
SUMBARS(REF(S,1)-S,0);
DRAWNUMBER(BARPOS=SYSPARAM
(1),1,Y,0)ALIGN3,COLORYELLOW;
例三:
HH:
=IF(BARSCOUNT(C)=1,9999,H);
ZH:
SUMBARS(REF(HH,1)-HH,0);//价创了N周期新高
HV:
SUMBARS(REF(VH,1)-VH,0);//量创了N周期新高
LL:
=IF(BARSCOUNT(C)=1,0,L);
ZL:
SUMBARS(LL-REF(LL,1),0);//价创了N周期新低
VL:
=IF(BARSCOUNT(C)=1,0,V);
LV:
SUMBARS(VL-REF(VL,1),0);//量创了N周期新低
附注: