本章将主要介绍一下我们在常用炒股软件(通达信为内核)中,编写公式或策略模型的时候一些常用的函数。
在前面的章节中我曾提到过,在公式编辑器中,点击“插入函数”,会弹出所有函数以及各自的说明。但是由于函数较多,所以本章专门挑一些经常用到的函数做一下介绍。
另外,大家如果遇到了一些困难,比如函数的使用或选取、编程理念实现等问题,如果您觉得可以公开的,请留言或私信给我,届时我可以写成文章供大家参考。
一、基本函数:
K线本身有5个基本函数,分别是:开盘价、收盘价、最高价、最低价、成交量(手数)。
开盘价:O或OPEN;
收盘价:C或CLOSE;
最高价:H或HIGH;
最低价:L或LOW;
成交量:V或VOL;
示例:变量A:=(O+C+H+L)/4;
示例解释:变量A等于开盘价、收盘价、最高价、最低价这四个价格加和再除以4取平均值。
二、引用函数:
1. BARSLAST(X)函数:
说明:这个函数经常可以用到,指的就是“上一次X成立时”距离当前的周期数(或K线个数)。
示例:变量A:= BARSLAST(C>O);
示例解释:上一次阳线到当前的K线数,如果当前本身就是阳线,则变量A=0;如果前一根是阳线(并且当前不是阳线),则变量A=1,以此类推。
2. COUNT(X,N)函数:
说明:统计N周期中满足X条件的周期数,若N<0则从第一个有效值开始。
示例:变量A:= COUNT(C>O,10);
示例解释:统计最近10个交易日内阳线的个数,如果总计有5根阳线,则变量A=5。
注意,函数中的N是包括当前K线的,比如:变量A:= COUNT(C>O,1),就等同于只判断当前K线是否是阳线。而如果写成:变量A:= COUNT(C>O,0),则是统计K线图中所有阳线的数量。
3. HHV(X,N)和LLV(X,N)函数:
说明:求N周期内X的最高值/最低值,如果N=0则从第一个有效值开始计算。
示例:变量A:=HHV(H,20); 变量B:=LLV(H,20);
示例解释:变量A的取值等于最近20根K线最高价的最大值;变量B的取值等于最近20根K线最低价的最小值。
注意,函数中的N是包括当前K线的,比如:变量A:=HHV(H,1),就等同于对当前K线的最高价进行取值。
4. HHVBARS(X,N)和LLVBARS (X,N)函数:
说明:求N周期内X最高值/最低值到当前K线的周期数,N=0表示从第一个有效值开始统计。
示例:变量A:= HHVBARS(H,20); 变量B:= LLVBARS(H,20);
示例解释:变量A的取值等于最近20根K线最高价最大的那根K线距离当前的K线数;变量B的取值等于最近20根K线最低价最小的那根K线距离当前的K线数;
注意,示例中如果当前K线的最高价就是最近20根K线的最大值,则变量A=0。
5. REF(X,N)函数:
说明:引用N周期前的X值,N可以是变量。
示例:变量A:=REF(C,10);
示例解释:变量A的取值等于往前数第10根K线的收盘价。
6. SUM(X,N)函数:
说明:统计N周期中满足X条件的K线数总和,N=0则从第一个有效值开始。
示例:变量A:=SUM(O=C,20);
示例解释:变量A的取值等于最近20根K线中十字线的K线个数。
注意,函数中的N是包括当前K线的,同COUNT函数。
7. MA(X,N)函数:
说明:对X值取N日的简单移动平均。具体算法=最近N日所有的X加和,再除以N。
示例:变量A:=MA(C,30);
示例解释:变量A的取值就是咱们常说的30日均线。
三、逻辑函数:
1. CROSS(A,B)函数:
说明:表示当A从下方向上穿过B时返回1,否则返回0。
示例:变量A:=CROSS(C,MA(C,30));
示例解释:如果当前K线满足收盘价上穿30日均线(即前一根K线的收盘价在30日线下方,而本根K线的收盘价在30日线的上方),则变量A=1,否则=0。
注意,本函数还有类似用法:买入:=CROSS(条件,0.1);
上面这个用法经常用于:如果连续的K线都满足“条件”,而我们只想在第一根满足“条件”的地方买入或显示买入信号,则这时可以采用上述写法。其中的“0.1”可以是0到1之间的任何值,指的就是“条件”由0变为1。
2. EVERY(X,N)函数:
说明:如果N个周期内连续满足X,则取值为1,否则为0。
示例:变量A:=EVERY(C>O,3);
示例解释:如果最近3根K线都是阳线,则变量A=1,否则=0。
注意,函数中的N包含当前K线。
3. NOT(X)函数:
说明:如果X成立则函数取值为0。
示例:变量A:=NOT(C>O);
示例解释:如果当前是阳线,则变量A=0,否则=1。
四、选择函数:
1. IF(X, A, B)函数:
说明:这个函数经常用到,指的是如果条件X满足则函数取值=A,如果X不满足,则函数取值=B。
示例:变量A:=IF(C>O, C, O);
示例解释:如果当前K线是阳线,则变量A=收盘价C;如果当前K线不是阳线(十字线或阴线),则变量A=开盘价O。
2. VALUEWHEN(X,Y)函数:
说明:指的是往前找第一个满足X条件的K线,在这根K线上对Y取值。
示例:变量A:= VALUEWHEN(C>O, H);
示例解释:往前找第一个阳线,变量A就等于这根K线的最高值H。如果当前K线就是阳线,则变量A就等于当前的H。
五、数学函数:
1. MAX(A,B)和MIN(A,B)函数:
说明:指的是对A和B取二者中的较大值/较小值。
示例:变量A:=MAX(O,C); 变量B:=MIN(O,C);
示例解释:变量A等于当前K线开盘价和收盘价中的较大值;变量B等于当前K线开盘价和收盘价中的较小值。
注意,这两个函数均可以嵌套使用,比如变量A:=MAX(N1,MAX(N2,MAX(N3,N4)));
上面的变量A就等于N1、N2、N3和N4的最大值。
2. BETWEEN(A,B,C)函数:
说明:指的是如果A处于B和C之间,则函数等于1,否则返回0
示例:变量A:= BETWEEN(C, MA(C,5), MA(C,10));
示例解释:如果收盘价介于5日线和10日线之间,则变量A=1,否则=0(即收盘价在两条均线之上或之下)。
六、绘图函数:
1. DRAWTEXT(COND,PRICE,TEXT)函数:
说明:当COND条件满足时,在K线的PRICE位置上书写文字TEXT。
示例:DRAWTEXT(踩顶条件, L, ‘三买’);
示例解释:如果当下K线满足“踩顶条件”,则在K线的最低值的地方写上文字“三买”。
注意,书写的文字需要用“单引号”符号。并且此函数直接使用,不需要在函数的前面加变量,比如如果写成:变量A:= DRAWTEXT(踩顶条件, L, ‘三买’);,则会造成不显示文字。
2. DRAWNUMBER(COND,PRICE,NUMBER)函数
说明:当COND条件满足时,在K线的PRICE位置上书写数字NUMBER。
示例:DRAWTEXT(踩顶条件, L, L);
示例解释:如果当下K线满足“踩顶条件”,则在K线的最低值的地方写上最低值的数值。
七、交易函数:
ENTERLONG: COND和EXITLONG: COND函数:
说明:如果满足COND条件则买入/卖出股票。
示例:ENTERLONG: 买入; EXITLONG: 卖出;
示例解释:如果当下K线满足“买入”条件则执行买入开仓,并且如果将模型加载到K线图上可以看见代表买入的向上的红色箭头。卖出同理。
八、编写模板:
由于大家平时可能会有多个想法或测试版本,所以为了节省时间,建议大家平时建立一个基本模板,之后的每次测试或修改开始时,都可以先复制模板中的内容。
比如我们可以根据第7章中介绍的步骤,建立一个模板:
{布林线定义}
MID:=MA(C,26);
TOP:= MID +2*STD(C,26);
BOTTOM:= MID -2*STD(C,26);
{MACD定义}
DIFF:=EMA(CLOSE,12)-EMA(CLOSE,26);
DEA:=EMA(DIFF,9);
MACD:=2*(DIFF-DEA);
{5-10-20-30-60日线定义}
M1:=MA(C,5);
M2:=MA(C,10);
M3:=MA(C,20);
M4:=MA(C,30);
M5:=MA(C,60);
买入:=1;
卖出:=1;
ENTERLONG: 买入;
EXITLONG: 卖出;
说明:上面这个模板中,首先定义了常用的布林线、MACD、均线,并且将买入和卖出指令也提前写好,暂时都先赋值为1,那么我们每次只需写“买入”和“卖出”的条件即可。
大家可以根据自己的需求,将自己常用的指标等定义加入到自己的模板中。
九、总结:
上面就是一些常用函数的简单介绍,软件中还有很多其他函数,大家每个人的交易理念千差万别,常用的函数也会很不一样,有任何需要的时候可以到函数说明中寻找或者查询:

在上图的红圈处简单写下需要的功能关键字,可以看看是否有合适的函数。
当前软件的编写环境和函数可能对很多朋友来说有些陌生,但其实相对于其他编程环境或语言,这个编写难度已经是很小的了(其实也造成了一定的局限性,导致一些理念不容易实现)。主要靠的还是熟能生巧,大家多尝试多练习,用不了多久就可以熟练掌握。
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/46580
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!