邢台拖拉机厂:炒股公式编写

来源:百度文库 编辑:中财网 时间:2024/05/03 01:46:41

指标公式的编写

1)、简单的公式

例1 十日均线指标(MA)
    均线指标是求股票收市价的移动平均线,编写公式的第一步,是到公式管理器提供的基本函数(即新建或修改公式中的“函数/公式”)中去查找需要的函数。
    我们查到:函数CLOSE的功能是求当日收市价,函数MA(X,N)的功能是求X的N日移动平均线,所以10日均线指标的公式这样写: MA(CLOSE,10)。

 您可以方便地在公式中引入加减乘除运算,请看下例。
   例2 乖离率指标(BIAS)
   乖离率指标是求收市价与移动平均价的差,这个公式这样写: CLOSE - MA(CLOSE,10)。

    上面两个例子都是在一个图上只绘一条指标线,如果您想在同一个图上绘多条指标线,请看下例。
    例3 同图绘制5日、10日、20日和60日均线
    做起来非常简单,您只需用分号将各指标公式隔开就行了。公式这样写:
    MA(CLOSE,5);
    MA(CLOSE,10);
条件选股公式的编写

指标公式附加选股条件逻辑判断表达式,就组成了条件选股公式。
    条件选股就是将满足条件的股票挑选出来,显然条件选股公式中要用到逻辑操作符和逻辑函数,返回值为“1”(条件满足)则选中该股,为“0”(条件不满足)则不选中。与指标公式相比,条件选股公式可以有若干个中间公式,最后总是以一个逻辑式收尾。

    例1,MACD指标中,MACD线由下向上穿越0线为买入信号,由上向下穿越0线为卖出信号,我们要挑出当天适合买入的股票,可将条件选股公式写为:
    参数名称 最小值 最大值缺省值
    LONG      20     100    26
    SHORT     5      19    12
    MID        2      20     9

    DIFF:=EMA(CLOSE,SHORT) - EMA(CLOSE,LONG);
    DEA:= EMA(DIFF,MID);
    MACD:=DIFF-DEA;
    CROSS(MACD,0)

    例2,条件选股公式中可以直接引用指标公式。如上例MACD条件选股公式中的大部分内容与MACD指标公式是相同的,系统支持在条件选股公式中直接引用现成的指标公式,这样可以大大地简化公式书写。但是这样做可能会大幅降低系统处理速度。MACD条件选股公式又可以这样写:

    参数名称 最小值 最大值缺省值
     LONG     20     100    26
     SHORT    5      19    12
     MID       2      20     9

     CROSS("MACD.MACD"(LONG,SHORT,MID),0)

     "MACD.MACD"表示引用MACD指标公式中的MACD指标线,考察它是否上穿0线。在"MACD.MACD"后紧跟公式所带的参数,参数名和参数个数都不能有错。

    引用指标的格式
    引用指标的标准格式为:“指标公式名.指标线名”(参数表)
    在实际应用中,可以有以下几种变形:
  

* 如果指标名后不指定指标线,则系统自动引用该指标的最后一条指标线。MACD线恰好是MACD指标所绘指标线中的最后一条,因此可进一步简写为:
    CROSS("MACD"(LONG,SHORT,MID),0)
  

* 如果将参数名都省去,写成:CROSS("MACD",0),则参数值不再可变,固定取缺省值26、12、9。
  

* 如果写成:CROSS("MACD"(30,10,6),0),则参数值固定为30、10、6。1

    除条件选股公式外,交易系统公式也可以直接引用现成的指标公式。

    如果对指标公式做了重要改动,例如增减了参数个数、修改了指标线名称,系统会提示用户对引用了该指标公式的条件选股公式、交易系统公式也作相应修改。否则相关联的条件选股公式、交易系统公式的执行结果将不可预料。

    例3 KD随机指标中,K线向上穿越D线,且K线小于20为买入条件,因此KD条件选股公式这样写:

    参数名称 最小值 最大值缺省值
     N1       1      40     9
     N2       2      10     3
     N3       2      10     3

     RSV:=(CLOSE-LLV(LOW,N1))/(HHV(HIGH,N1)-
     LLV(LOW,N1))*100;
     K: =MA(RSV,N2);
     D: =MA(K,N3);
     CROSS(K,D) AND K<20

    例4,如果直接引用指标公式,KD条件选股公式可简写为:

    参数名称 最小值 最大值缺省值
      N1       1      40     9
      N2       2      10     3
      N3       2      10     3
      CROSS("KD.K"(N1,N1,N3),"KD.D"(N1,N2,N3)) AND
     "KD.K"(N1,N2,N3)<20

    例5,我们要挑出连跌三天的股票,条件选股公式这样写:
    CLOSE    REF(CLOSE,1)    REF(CLOSE,2)

    例6,若引入中间变量,上例也可以这样写:
    DOWN:=REF(CLOSE,1)>CLOSE;
    DOWN AND REF(DOWN,1) AND REF(DOWN,2)
交易系统公式编写
指标公式稍加变形,再附加一些额外买卖条件表达式,就可作为交易系统公式。
      交易系统公式用于交易系统指示、探索最佳参数和探索最佳指标,这就要求它能准确描述买入和卖出信号,对于期货等还应能描述做空和做多信号。
      和条件选股公式一样,交易系统公式也必须包含逻辑式,用于指示买入、卖出信号。指示买入信号的公式在买入条件窗中输入,指示卖出信号的公式在卖出条件窗中输入,二者一定要成对出现。若您只需要一个信号,可将另一个信号设成恒为“不成立”,例如 0>1。交易系统公式所包含的中间公式在中间公式输入窗中输入。

     在做交易系统指示功能时,交易系统公式的一组参数取缺省值。
     在探索最佳参数时,交易系统公式的一组参数从最小值到最大值遍历可能的组合,从中找出收益最大的一组参数值。收益采用中价计算,而且是考虑了手续费的。中价计算方法和手续费率可以在选项中设定。
     在探索最佳指标时,系统针对某一只股票,测试到底哪一个交易系统公式最适合它,以及最佳收益如何。
     在计算收益时,每次买入都假定使用全部资金买入,卖出时将全部股票卖出,收益率的计算是将每一次买卖的利润进行连乘,当连续出现相同的信号时,仅考虑第一个信号。
    在交易系统公式中,还可以输入一些额外卖出条件,当这些条件之一满足时,强制卖出。

    下面举例说明如何编写交易系统公式。

    例1 以MACD指标为例,其交易系统公式这样写:
    参数名称 最小值 最大值缺省值 测试步长
    LONG      20      100    26     5
    SHORT      1       30    12     2
    MID        5       20    9     2
    中间公式:
    DIFF:=EMA(CLOSE,SHORT) - EMA(CLOSE,LONG);
    DEA:= EMA(DIFF,MID);
    MACD:=DIFF-DEA;

    多头买入: CROSS(MACD,0);
    多头卖出: CROSS(0,MACD);

    测试步长在探索最佳参数/指标时用到,这二者在实际计算过程中,都要遍历参数组合。若步长为一,则遍历所有可能组合;若步长不为一,则会跳过一些组合。前者得到的结果更精确,但遍历范围大,耗时长;后者结果稍粗略,但遍历范围小,节省时间。
    买入条件为MACD由负变正;卖出条件反过来。

    例2 以KD指标为例,其交易系统公式这样写:

    参数名称 最小值 最大值缺省值 测试步长
      N1       1      40    9    1
      N2       2      10    3    1
      N3       2      10    3    1

    RSV:=(CLOSE-LLV(LOW,N1))/(HHV(HIGH,N1)-
    LLV(LOW,N1))*100;
    K: =MA(RSV,N2);
    D: =MA(K,N3);
    多头买入: CROSS(K,D) AND K<20
    多头卖出: CROSS(D,K) AND K>80

    买入条件为K向上穿越D,并且K小于20。
    卖出条件为D向上穿越K,并且K大于80。

    交易系统公式中也可以直接引用现成的指标公式,这样公式的书写可以简化。但可能会降低系统处理速度。

    例3 MACD交易系统公式
    参数名称 最小值 最大值缺省值 测试步长
     LONG     20     100     26     5
     SHORT     1      30    12     2
     MID       5      20     9     2
    多头买入:   CROSS("MACD.MACD"(LONG,SHORT,MID),0);
    多头卖出:   CROSS(0, "MACD.MACD" (LONG,SHORT,MID));
五彩K线公式编写

   五彩K线公式与条件选股公式相类似。
  

例1 当RSI小于20时显示红色,RSI大于80时显示绿色。

    "RSI.RSI1"<20,COLORRED;
    "RSI.RSI1">80,COLORGREEN

    公式中引用了RSI指标公式。

    例2 早晨之星
    早晨之星指示见底,后市看好。

    早晨之星由三个交易日的K线组成:
    第一日,在下跌市势中,出现一支身体修长的阴烛。
    第二日,跳空下跌,蜡烛线身体长度缩短,形成星的主体部分,它可以是阴烛,也可以是阳烛。
    第三日,出现一支阳烛,回升到第一支烛线的范围内。

    我们用下面的公式来描述早晨之星:
    REF(CLOSE,2)/REF(OPEN,2)<0.95 AND
    REF(OPEN,1)< REF(CLOSE,2) AND
    ABS(REF(OPEN,1)-REF(CLOSE,1))/REF(CLOSE,1)<0.03
    AND CLOSE/OPEN >1.05 AND
    CLOSE >REF(CLOSE,2),COLORRED

   第一个条件限制前天的K线为阴线,且收盘价与开盘价比较,跌幅在5%以上。
   第二个条件限制昨天较前天跳空下跌。
   第三个条件限制昨天开盘价与收盘价的差幅在3%以内。
   第四个条件限制当天的K线为阳线,且收盘价与开盘价比较,升幅在5%以上。
   第五个条件限制当天的收盘价高于前天的收盘价。
公式编写的灵活性与特殊性

1)、可在每一公式后附加参数

   分析系统可以在每一公式后附加一些外观参数,以设置、区分各指标。附加的参数可以是:绘图类型、绘图颜色、线风格、线宽度之一或四者的任一组合。如下例:

MA5: MA(CLOSE,5),0,RGB(255,0,0),0,2;
    MA10: MA(CLOSE,10),STICK,COLORGREEN,1,5;
    MA20:MA(CLOSE,20);
    MA60:MA(CLOSE,60)

绘图类型的取值:

绘图类型可以取以下系统函数或2的n次幂(n>=0),建议使用系统函数。

STICK:柱状线,从0到指标值间画垂直线;

COLORSTICK:彩色柱状线,当值为正时显示红色,否则显示绿色;

VOLSTICK:成交量柱状线,当股价上涨时显示红色空心柱,否则显示绿色空心柱;

LINESTICK:同时画出柱状线和指标线;

CROSSDOT:小叉线;

CIRCLEDOT:小圆圈线;

POINTDOT:小圆点线。

绘图颜色的取值:

绘图颜色可以取以下系统函数或用RGB(R,G,B)函数表示。

COLORRED:红色;

COLORGREEN:绿色;

COLORBLUE:兰色;

COLORBLACK:黑色;

COLORWHITE:白色;

COLORGRAY;灰色;

COLORYELLOW:黄色;

COLORCRAN:青色;

COLORMAGENTA:品红色;

COLORBROWN:棕色。

 

线风格的取值:

线风格取值为0——4,各参数表示的线形如下:

0            实线

1            虚线

    2            点线

3           点划线

4           两点划线

2)、可引用指标公式、交易系统公式、条件选股公式
    引用指标公式,可以写成: “公式名称.指标线名称”(参数表)或“TECH.公式名称.指标线名称”
    其中参数表中的参数个数应该与该公式的实际参数数量一致,若不写参数表,则表示使用缺省参数。例如“TECH.MACD.DIFF”表示引用根据缺省参数计算的MACD指标中的DIFF指标线数值。

    引用交易系统公式,可以写为: “SYSTEM.公式名称.交易类型”(参数表)
    交易类型可以为ENTERLONG、EXITLONG、ENTERSHORT或者EXITSHORT,分别表示引用多头买入、多头卖出、空头买入、空头卖出。
     例如"SYSTEM.MACD.ENTERLONG"表示引用MACD交易系统的多头买入条件。

     引用条件选股公式,可以写为:“EXPLORER.公式名称”(参数表)
    例如“EXPLORER.MACD”表示引用MACD条件选股条件。

  3)、可跨周期引用公式  
    例1.“MACD#WEEK”(26,10,5)
    表示引用MACD指标公式的最后一条指标线MACD的数值,在计算指标线值时,参数取(26,10,5),计算周期取周线。

    例2.“SYSTEM.MACD.ENTERLONG#MONTH”
    表示引用MACD交易系统的多头买入信号,参数取缺省值,计算周期取月线。
    注意:跨周期引用只能从较短周期引用较长周期,反方向的引用不允许。
    可供引用的周期类型有:MIN1,MIN5,MIN15,MIN30,MIN60,DAY,WEEK,MONTH等八种,分别表示1、5、15、30、60分钟线,以及日线、周线、月线。

  4)、可引用任意股票的数据
    可以在公式中引用其它任意股票的数据,方法为:“股票代码$数据名称”
    数据名称可以是OPEN、HIGH、LOW、CLOSE、VOL、AMOUNT,分别表示包括开盘价、最高价、最低价、收盘价、成交量、成交额。
    例如,“0001$CLOSE”表示引用深发展A的收盘价。

    也可以有“股票代码$fun.函数名称”或“股票休码$tech.指标名称”来引用已编译通过的指标。

 5)、可引用扩展数据

  引用扩展数据库中的数据的方法为:
    EXTDATA(N),指明引用第几组扩展数据

6)、减号使用的特殊性

 当公式中有变量或常量前加“-”号取反时,须加括号,如:(-2)*(DIFF-DEA)。

   7)、公式中的注释

公式中的注释以标志。
    MA(CLOSE,20);
    MA(CLOSE,60);
    这个公式内部包含四个小公式,小公式间以分号隔开,我们称这种公式为组合公式。系统可同图绘制数条指标线。

    例4 如何在图上区分多条指标线
    可以为每一条指标线取一个名字,这样就可以在图上区分它们。具体方法是在指标公式前写上名称并加一个冒号:
    MA5: MA(CLOSE,5);
    MA10: MA(CLOSE,10);
    MA20:MA(CLOSE,20);
    MA60:MA(CLOSE,60)
    当一条指标线有了名字以后,其后面的指标线就可以将该指标线作为一个函数来使用。请看下例。

    例5 指标线的名字可以当函数名用
    求收市价的5日移动平均价的10日移动平均线,本应写为:
    MA(MA(CLOSE,5),10)
    如果给收市价5日移动平均线取个名字,我们又可以这样写:
    MA5: MA(CLOSE,5);
    MA(MA5,10)
    与前者不同的是,后者同图绘出两条指标线.

  2)、较复杂的公式

在简单公式编写中所介绍的指标公式都是不带变量的,以下是一个带变量的指标公式的例子。对于带变量(又叫参数)的指标线,我们可以调整变量的值,并同步观察到指标线形状的变化。
    每个公式中最多可以有100个变量,每个变量有最小值、最大值和缺省值,每个变量必须有自己的名字。

    例1,给指标公式加入变量
    MTM动力指标是当日收市价减去几日前的收市价,设置一个变量N,其最小值、最大值、缺省值分别定为1日,50日,6日,指标公式写为 CLOSE-REF(CLOSE,N)。
    在编写一套新指标公式时,我们可能需要多次引用同一个指标公式,且希望这个指标线不要绘出来,解决办法就是将这个指标公式设置为中间公式。

    中间公式与一般的公式的区别在于:中间公式必须有一个名字,中间公式不使用冒号而是使用冒号等号":="来定义名字,如 MA10:=MA(CLOSE,10)就是一个中间公式,它仅供别的公式引用,不会在图上画出。

    例2 加入中间公式
    要求真实波幅,即在最高价与最低价的差、最高价与昨收的差、最低价与昨收的差中找到最大的,这里两处用到了昨收,可以将其设为中间公式,因此求真实波幅的公式写为:
    LC := REF(CLOSE,1);
    MAX(MAX(HIGH-LOW,ABS(HIGH-LC)),ABS(LOW-LC))

    合理使用中间公式,不仅可以使计算速度加快,而且可以使公式更简洁易懂。

3)、公式举例

例1 MACD指数平滑异同移动平均线
    参数名称 最小值 最大值缺省值
    LONG     20     100    26
    SHORT    5     19     12
    MID       2     20      9

    DIFF: EMA(CLOSE,SHORT) - EMA(CLOSE,LONG);
    DEA: EMA(DIFF,MID);
    MACD: DIFF-DEA,COLORSTICK

    该公式绘制三条指标线,第一条名为DIFF,是收市价短期(SHORT)指数滑动平均与长期(LONG)指数滑动平均的差;第二条名为DEA,是DIFF的MID天指数滑动平均;第三条名为MACD,是DIFF与DEA的差。
    该公式带三个参数:SHORT、LONG、MID。
    COLORSTICK画线参数加入到MACD指标线中,表示MACD要画成柱状线,并用不同颜色区分上涨与下跌。

    例2 KD随机指标

    参数名称 最小值 最大值缺省值
       N1     1      40      9
       N2     2      10      3
       N3     2      10      3

    RSV:=(CLOSE-LLV(LOW,N1))/(HHV(HIGH,N1)- LLV(LOW,N1))*100;
    K: MA(RSV,N2);
    D: MA(K,N3)

    该公式绘制K、D两条指标线。
    RSV称未成熟随机值,为收盘价与N1天内最低价的差与N1内最高价与最低价的差的比,再乘系数100。
    线K为RSV的N2天均线。
    线D为线K的N3天均线。

    例3  CR能量指标

    参数名称 最小值 最大值缺省值
       N       1     100     26


    MID:=(HIGH+LOW)/2;
    UP:=MAX(HIGH-REF(MID,1),0);
    DN:=MAX(REF(MID,1)-LOW,0);
    CR: SUM(UP,N)/SUM(DN,N)*100;

    该公式中的头三个公式都是中间公式,实际上只绘一条指标线CR。
    MID为中价,即最高价与最低价的平均值。
    UP为上升值,若今天最高价高于昨天中价,那么上升值为今天最高价与昨天中价的差,否则上升值为0。这本应写为UP:=IF(HIGH-REF(MID,1)>0,HIGH-REF(MID,1),0)进一步思考一下,我们可看出该式等价于UP:=MAX(HIGH-REF(MID,1),0)。
    DN为下跌值,若昨天中价高于今天最低价,那么下跌值为昨天中价与今天最低价的差,否则下跌值为0。
    CR为上升值的N日累加值与下跌值的N日累加值的比。

    例4  OBV指标

    M:=CLOSE-REF(CLOSE,1);
    MV:= IF(M>0,VOL,IF(M<0,-VOL,0));
    OBV:SUM(MV,0)

 

M为今日收市价与昨日收市价之差,为正表示股价涨,为零表示平盘,为负表示股价跌。
    当股价上涨时,成交量记为正,下跌则成交量记为负,平盘记为0,用了两个IF来实现这个逻辑,后一个IF嵌套在前一个IF中。先看第一个IF,若M>0(股价涨),则MV等于VOL,否则转入第二个IF(此时可以肯定M<=0),若M<0(股价跌),则MV等于-VOL,否则(此时可肯定M=0,即平盘)MV等于0。
    OBV为每日正负成交量的累加,注意累加天数为零,表示从上市第一天开始累加.