首页 > 其他分享 >第十篇——通达信指标公式编写常用函数(六)——SUM、IF(从零起步编写通达信指标公式系列)

第十篇——通达信指标公式编写常用函数(六)——SUM、IF(从零起步编写通达信指标公式系列)

时间:2023-05-05 18:55:18浏览次数:49  
标签:MA 函数 公式 SUM 60 通达信 编写 REF

内容提要:本文主要介绍了编写通达信指标公式常用函数SUM、IF,并结合自带OBV指标熟悉函数的使用。

 

在《第五篇——通达信指标公式编写常用函数(一)——REF、MA、EMA、CROSS(从零起步编写通达信指标公式系列)》这篇文章中讲到均线相关的函数MA,这里简单复习一下。

 

MA(C,N):收盘价的N日简单移动平均

 

计算方法:MA(C,N)=(C1+C2+C3+...+Cn)/N

 

之所以称之为简单移动平均线,就是简单加起来再除,而不像EMA之类的均线,涉及到加权。以60日简单移动平均线MA60举例,就是最近60个交易日的收盘价加起来求和,然后除以60。今天讲的SUM函数就是用来求和。

 

一、SUM函数

含义:SUM的英文意思就是“总和”,在通达信编程语言中也是这样的意思。

 

使用方法:SUM(X,N),统计N周期中X的总和。有一种特殊的用法,N=0的时候表示统计从上市第一天以来的X的总和

 

举例:

大家都知道60日均线的写法,就是MA(C,60),用SUM函数来写,可以实现同样的效果。

 

SUM(C,60),求得60个交易日的收盘价之和,然后除以60,SUM(C,60)/60;,就得到60日均线。可以把这两种写法对比一下。

MA1:MA(C,60);

MA2:SUM(C,60)/60;

叠加主图之后发现,只显示一条均线,其实是两条均线重合了。下图左上角的箭头处,可以发现两条均线的值是相同的。

 

二、IF函数

IF函数是一个常用而且非常重要的函数,用来进行条件判断。在第一篇文章《第一篇——为什么要学编写通达信指标公式(从零起步编写通达信指标公式系列)》中就举过均线拐头变色的例子,就是使用IF函数来判断。

含义:IF的英文意思是“如果”,在通达信编程语言中,也是这样的意思。

 

使用方法:IF(X,A,B),如果X条件成立,得到的结果就是A;如果X条件不成立,得到的结果就是B。IF函数和之前讲的函数有一个明显的区别,就是有三个参数X、A、B,之前讲的函数一般是两个。

 

举例:

MA5:=MA(C,5);{5日均线}

MA10:=MA(C,10);{10日均线}

JC:=CROSS(MA5,MA10);{5日、10日均线金叉}

A1:IF(JC,1,0);{如果金叉,A1的结果就是1,否则就是0}

 

三、函数综合运用

今天结合交易软件自带的能量潮指标(OBV),来熟悉SUM函数和IF函数的使用。通过对指标代码的解读,可以对指标的使用方法有更深的认识。

 

OBV指标:

VA:=IF(C>REF(C,1),V,-V);

VA1:=IF(C=REF(C,1),0,VA);

OBV:SUM(VA1,0);

MAOBV:MA(OBV,30);

 

a、VA:=IF(C>REF(C,1),V,-V);

C>REF(C,1)表示今天的收盘价大于昨天的收盘价,也就是说今天是上涨的。整句的意思:如果今天是上涨的(C>REF(C,1)),VA的结果就是V(正的成交量);如果今天是下跌的(C<REF(C,1))或者今天不涨不跌(C=REF(C,1)),VA的结果就是-V(负的成交量)。

 

b、VA1:=IF(C=REF(C,1),0,VA);

C=REF(C,1)表示今天收盘价等于昨天收盘价,也就是今天不涨不跌。整句的意思:如果今天不涨不跌,VA1的结果就是0,否则就是VA。

 

这是什么意思呢?上面已经讲过有三种情况,今天上涨、今天下跌、今天不涨不跌。在上一句公式中,今天不涨不跌(C=REF(C,1)),得到的结果是-V,而这一句重新赋值了,变成了今天不涨不跌,结果就是0。

 

这样今天上涨、今天下跌、今天不涨不跌,这三种情况就得到三个结果,分别是今天上涨V、今天下跌-V、今天不涨不跌0。

 

c、OBV:SUM(VA1,0);

表示统计从上市第一天以来的VA1的总和,简单说一下就是上涨了加上一个V,下跌了减去一个V,不涨不跌加上一个0,这样累加起来。

 

d、MAOBV:MA(OBV,30);

这句表示30日的OBV值简单移动平均

 

四、答疑

问:能写出来了吗,两个涨停中间,有几日收盘价大于第一个涨停收盘价的具体数字,比如3日,5日或其他数字公式?

 

代码:

ZT:=C/REF(C,1)>1.095 AND C=H;

RZT:=REF(BARSLAST(ZT),1);

ZTJ:=REF(C,RZT+1);

TJ1:=IF(ZT AND C>ZTJ,COUNT(C>ZTJ,RZT+1)-1,0);

TJ2:=IF(ZT AND C<=ZTJ,COUNT(C>ZTJ,RZT+1),0);

TJ:TJ1+TJ2;

 

 

本文来自技术Pie

关注博主,学习更多通达信指标公式编写知识。

 

 

标签:MA,函数,公式,SUM,60,通达信,编写,REF
From: https://www.cnblogs.com/ma-dongdong/p/17375105.html

相关文章