61阅读

文华财经函数-DURATION 函数 (财务函数)

发布时间:2017-12-25 所属栏目:文华财经期货

一 : DURATION 函数 (财务函数)

DURATION 函数

Excel 中 DURATION函数 (函数:函数是预先编写的公式,可以对一个或多个值执行运算,并返回一个或多个值。函数可以简化和缩短工作表中的公式,尤其在用公式执行很长或复杂的计算时。)的公式语法和用法。

说明

返回假设面值 ¥100 的定期付息有价证券的修正期限。期限定义为一系列现金流现值的加权平均值,用于计量债券价格对于收益率变化的敏感程度。

语法

DURATION(settlement, maturity, coupon, yld, frequency, [basis])

要点   应使用 DATE 函数输入日期,或者将日期作为其他公式或函数的结果输入。例如,使用函数 DATE(2008,5,23) 输入 2008 年 5 月 23 日。如果日期以文本形式输入,则会出现问题。

DURATION 函数语法具有下列参数 (参数:为操作、事件、方法、属性、函数或过程提供信息的值。):

Settlement    必需。有价证券的结算日。有价证券结算日是在发行日之后,有价证券卖给购买者的日期。

Maturity    必需。有价证券的到期日。到期日是有价证券有效期截止时的日期。

Coupon    必需。有价证券的年息票利率。

Yld    必需。有价证券的年收益率。

Frequency    必需。年付息次数。如果按年支付,frequency = 1;按半年期支付,frequency = 2;按季支付,frequency = 4。

Basis    可选。要使用的日计数基准类型。

Basis 日计数基准

0 或省略 US (NASD) 30/360

1 实际天数/实际天数

2 实际天数/360

3 实际天数/365

4 欧洲 30/360

说明

Microsoft Excel 可将日期存储为序列号,以便可以在计算中使用它们。默认情况下,1900 年 1 月 1 日的序列号是 1,而 2008 年 1 月 1 日的序列号是 39448,这是因为它距 1900 年 1 月 1 日有 39,448 天。

结算日是购买者买入息票(如债券)的日期。到期日是息票有效期截止时的日期。例如,在 2008 年 1 月 1 日发行的 30 年期债券,六个月后被购买者买走。则发行日为 2008 年 1 月 1 日,结算日为 2008 年 7 月 1 日,而到期日是在发行日 2008 年 1 月 1 日的 30 年后,即 2038 年 1 月 1 日。

Settlement、maturity、frequency 和 basis 将被截尾取整。

如果 settlement 或 maturity 不是合法日期,函数 DURATION 返回错误值 #VALUE!。

如果 coupon < 0 或 yld < 0,函数 DURATION 返回错误值 #NUM!。

如果 frequency 不是数字 1、2 或 4,函数 DURATION 返回错误值 #NUM!。

如果 basis < 0 或 basis > 4,函数 DURATION 返回错误值 #NUM!。

如果 settlement ≥ maturity,函数 DURATION 返回错误值 #NUM!。

示例

如果将示例复制到一个空白工作表中,可能会更容易理解该示例。

duration DURATION 函数 (财务函数)

如何复制示例?

选择本文中的示例。如果在 Excel Web App 中复制该示例,请每次复制并粘贴一个单元格。

要点   请勿选择行标题或列标题。

duration DURATION 函数 (财务函数)

从帮助中选择一个示例

按 Ctrl+C。

创建一个空白工作簿或工作表。

在工作表中,选择单元格 A1,然后按 Ctrl+V。如果在 Excel Web App 中工作,请对示例中的每个单元格重复复制和粘贴操作。

要点   为使示例正常工作,必须将其粘贴到工作表的单元格 A1 中。

要在查看结果和查看返回结果的公式之间进行切换,请按 Ctrl+`(重音符),或在“公式”选项卡上的“公式审核”组中单击“显示公式”按钮。

在将示例复制到空白工作表中后,您可以根据自己的需求对它进行调整。

1

2

3

4

5

6

7

8

9

A B

数据 说明

2008 年 1 月 1 日 结算日

2016 年 1 月 1 日 到期日

8% 息票利率

9.0% 收益率

2 按半年期支付(请参见上面的信息)

1 以实际天数/实际天数为日计数基准(请参见上面的信息)

公式 说明(结果)

=DURATION(A2,A3,A4,A5,A6,A7) 在上述条件下有价证券的修正期限 (5.993775)

注释   在 Excel Web App 中,若要按正确格式查看结果,请选择相应单元格,在“开始”选项卡的“数字”组中,单击“数字格式”旁边的箭头,然后单击“常规”。

(www.61k.com”

二 : 文华财经主要函数学习83

金融统计函数

BARSLAST(COND):上一次条件COND成立到当前的周期数

注:

1、条件成立的当根k线上BARSLAST(COND)的返回值为0

2、本函数运算量很大,将占用很多的CPU资源,导致行情刷新速度变慢,请谨慎使用!

例1:

BARSLAST(OPEN>CLOSE); //上一根阴线到现在的周期数。

例2:

N:=BARSLAST(DATE<>REF(DATE,1))+1;//分钟周期,当日k线数。

//由于条件成立的当根k线上BARSLAST(COND)的返回值为0,所以“+1”才是当日k线根数。

COUNT(COND,N):统计N周期中满足COND条件的周期数。

注:

1、若N为0则从第一个有效值算起;

2、当N为有效值,但当前的k线数不足N根,从第一根统计到当前周期。

3、N 为空值时返回值为空值 。

例1:

N:=BARSLAST(DATE<>REF(DATE,1))+1;//分钟周期,当日k线数。

M:COUNT(ISUP,N);//统计分钟周期上开盘以来阳线的根数。

例2:

MA5:=MA(C,5);//定义5周期均线

MA10:=MA(C,10);//定义10周期均线

M:COUNT(CROSSUP(MA5,MA10),0);//统计从申请到的行情数据以来到当前这段时间内,5周期均线上穿10周期均线的次数。

DMA(X,A):求X的动态移动平均,其中A必须小于1大于0。

计算公式:DMA(N)=DMA(N-1)*(1-A)+X(N)*A 其中DMA(N-1)为第(N-1)天的DMA值

例1:

DMA3:=DMA(C,0.3);//计算结果为REF(DMA3,1)*(1-0.3)+C*0.3

EMA(X,N):求N周期X值的指数移动平均(平滑移动平均)。

注:

1、对距离当前较近的k线赋予了较大的权重。

2、当N为有效值,但当前的k线数不足N根,按实际根数计算。

3、N为0或空值时返回值为空值。

EMA==2*X/(N+1)+(N-1)*EMA(N-1)]/(N+1)

举例:X1=6 X2=7 X3=8 X4=9

则EMA(X,4)=2/5*X4+3/10*X3+3/15*X2+3/30*X1=4/10*9+3/10*8+2/10*7+1/10*6=8

例1:

EMA10:=EMA(C,10);//求收盘价10周期平滑移动平均值

EMA2(X,N);//求N周期X值的线性加权平均(也称WMA) EMA2(X,N)=(N*X0+(N-1)*X1+(N-2)*X2)+...+1*X(N-1))/(N+(N-1)+(N-2)+...+1),X0表示本周期值,X1表示上一周期值

注:

1、当N为有效值,但当前的k线数不足N根,返回值为空值。

2、N为0或空值时返回值为空值。

3、本函数运算量很大,将占用很多的CPU资源,导致行情刷新速度变慢,请谨慎使用!

例1:

EMA2(H,5);//求最高价在5个周期的加权移动平均值。

Exponential Moving Average,指数移动平均,也叫平滑移动平均,采用指数加权方法,对距离当前较近的K线赋予了较大的权重。 注:

(1)当N为有效值,当前的k线数不足N根时,或者前面周期的取值仍作用于当前周期时,EMAWH返回值为空值

因为EMAWH计算公式中着重考虑了当周期的权重,所以当周期较长,前面的周期取值对当前的影响越小,EMAWH从前面数据对当前周期不再影响时的取值开始显示,所以即使选择的数据起始时间不同,当前已经显示的K线的EMAWH的取值也不会发生变化

(2)当N为0或空值时返回值均为空值

EMAWH==2*X/(N+1)+(N-1)*EMAWH(N-1)〕/(N+1)

注:

EMAWH用法同EMA(C,N)

HHV(X,N):求X在N个周期内的最高值。

注:

1、若N为0则从第一个有效值开始算起;

2、当N为有效值,但当前的k线数不足N根,按照实际的根数计算;

3、N为空值时,返回空值。

4、N可以是变量。

例1:

HH:HHV(H,4);//求4个周期最高价的最大值,即4周期高点(包含当前k线)。 例2:

N:=BARSLAST(DATE<>REF(DATE,1))+1;//分钟周期,日内k线根数

HH1:=HHV(H,N);//在分钟周期上,日内高点

HV(X,N): 求X在N个周期内(不包含当前k线)的最高值。

注:

1、若N为0则从第一个有效值开始算起(不包含当前K线);

2、当N为有效值,但当前的k线数不足N根,按照实际的根数计算,第一根k线返回空值;

3、N为空值时,返回空值。

4、N可以是变量。

例1:

HH:HV(H,10);//求前10根k线的最高点。

例2: N:=BARSLAST(DATE<>REF(DATE,1))+1;

ZH:VALUEWHEN(DATE<>REF(DATE,1),HV(H,N));//在分钟周期上,求昨天最高价。 例3: HV(H,5) 和 REF(HHV(H,5),1) 的结果是一样的,用HV编写更加方便。

HHVBARS(X,N): 求N周期内X最高值到当前周期数

注:

1、若N为0则从第一个有效值开始算起(不包含当前K线);

值;

3、N为空值时,返回空值。

4、N可以是变量。

例1:

HHVBARS(VOL,0); 求历史成交量最大的周期到当前的周期数(最大值那根k线上HHVBARS(VOL,0);的返回值为0,最大值后的第一根k线返回值为1,依次类推)。 例2:

N:=BARSLAST(DATE<>REF(DATE,1))+1;//分钟周期,日内k线根数

ZHBARS:REF(HHVBARS(H,N),N);//在分钟周期上,求昨天最高价所在的k线到当前k线之间的周期数。

LLV(X,N): 求X在N个周期内的最小值。

注:

1、若N为0则从第一个有效值开始算起;

2、当N为有效值,但当前的k线数不足N根,按照实际的根数计算;

3、N为空值时,返回空值。

4、N可以是变量。

例1:

LL:LLV(L,5);//求5根k线最低点(包含当前k线)。

例2:

N:=BARSLAST(DATE<>REF(DATE,1))+1;//分钟周期,日内k线根数

LL1:=LLV(L,N);//在分钟周期上,求当天第一根k线到当前周期内所有k线最低价的最小值。 LV(X,N) 求X在N个周期内的最小值(不包含当前k线)

注:

1、若N为0则从第一个有效值开始算起;

2、当N为有效值,但当前的k线数不足N根,按照实际的根数计算;

3、N为空值时,返回空值。

4、N可以是变量。

例1:

LL:LV(L,10);//求前面10根k线的最低点。(不包含当前k线)

例2:

N:=BARSLAST(DATE<>REF(DATE,1))+1;//分钟周期,日内k线根数

ZL:VALUEWHEN(DATE<>REF(DATE,1),LV(L,N));//在分钟周期上,求昨天最低价。

例3:

LV(L,5) 和 REF(LLV(L,5),1) 的结果是一样的,用LV编写更加方便。

LLVBARS(X,N): 求N周期内X最低值到当前周期数

注:

1、若N为0则从第一个有效值开始算起(不包含当前K线);

值;

3、N为空值时,返回空值。

4、N可以是变量。

例1:

LLVBARS(VOL,0); 求历史成交量最小的周期到当前的周期数(最小值那根k线上LLVBARS(VOL,0);的返回值为0,最小值后的第一根k线返回值为1,依次类推)。 例2:

N:=BARSLAST(DATE<>REF(DATE,1))+1;//分钟周期,日内k线根数

ZLBARS:REF(LLVBARS(L,N),N);//在分钟周期上,求昨天最低价所在的k线到当前k线之间的周期数。

MA(X,N) 求X在N个周期内的简单移动平均

算法:MA(X,5)=(X1+X2+X3+X4+X5)/5

注:

1、简单移动平均线沿用最简单的统计学方式,将过去某特定时间内的价格取其平均值。

2、当N为有效值,但当前的k线数不足N根,函数返回空值。

3、N为0或空值的情况下,函数返回空值。

例1:

MA5:=MA(C,5);//求5周期收盘价的简单移动平均。

例2:

N:=BARSLAST(DATE<>REF(DATE,1))+1;//分钟周期,日内k线根数

M:=IFELSE(N>10,10,N);//如果k线超过10根,M取10,否则M取实际根数

MA10:MA(C,M);//在分钟周期上,如果当天k线不足10根,按照实际根数计算MA10,如果超过10根按照10周期计算MA10。

SAR(N,STEP,MAX) 返回抛物转向值。

注:

1、参数N,Step,Max均不支持变量

例1:

SAR(17,3,30);//表示计算17个周期抛物转向,步长为3%,极限值为30%

SMA(X,N,M) 求X的N个周期内的移动平均。M为权重。

计算公式:SMA(N)=SMA(N-1)*(N-M)/N+X(N)*M/N

注:

1、当N为有效值,但当前的k线数不足N根,按实际根数计算。

2、 N为0或空值的情况下,函数返回空值。

例1:

SMA10:=SMA(C,10,3);//求的10周期收盘价的移动平均。权重为3。

SUM(X,N) 求X在N个周期内的总和。

文华财经主要函数学习83_文华财经

注:

1、若N为0则从第一个有效值开始算起。

2、当N为有效值,但当前的k线数不足N根,按照实际的根数计算。

3、N为空值时,返回空值。

4、N可以是变量。

例1:

SUM(VOL,25);表示统计25周期内的成交量总和

例2:

N:=BARSLAST(DATE<>REF(DATE,1))+1;//分钟周期,日内k线根数 SUM(VOL,N);//分钟周期上,取当天成交量总和。

SUMBARS(X,A):求累加到指定值的周期数

例1:

SUMBARS(VOL,20000); 将成交量向前累加直到大于等于20000,返回这个区间的周期数。 TRMA(X,N): 求X在N个周期的三角移动平均值。

算法:三角移动平均线公式,是采用算数移动平均,并且对第一个移动平均线再一次应用算数移动平均。

TRMA(X,N) 算法如下

ma_half= MA(X,N/2)

trma=MA(ma_half,N/2)

注:

1、当N为有效值,但当前的k线数不足N根,函数返回空值。

2、N为0或空值的情况下,函数返回空值。

例1:

TRMA5:TRMA(CLOSE,5);//计算5个周期内收盘价的三角移动平均。(N不能被2整除) //TRMA(CLOSE,5)=MA(MA(CLOSE,(5+1)/2)),(5+1)/2);

例2:

TRMA10:TRMA(CLOSE,10);// 计算10个周期内收盘价的三角移动平均。(N能被2整除) TRMA(CLOSE,10)=MA(MA(CLOSE,10/2),(10/2)+1));

TSMA(X,N):求X在N个周期内的时间序列三角移动平均

TSMA(a,n) 算法如下:

ysum=a[i]+a[i-1]+...+a[i-n+1]

xsum=i+i-1+..+i-n+1

xxsum=i*i+(i-1)*(i-1)+...+(i-n+1)*(i-n+1)

xysum=i*a[i]+(i-1)*a[i-1]+...+(i-n+1)*a[i-n+1]

k=(xysum -(ysum/n)*xsum)/(xxsum- xsum/n * xsum) //斜率

b= ysum/n - k*xsum/n

forcast[i]=k*i+b //线性回归

tsma[i] = forcast[i]+k //线性回归+斜率

注:

1、当N为有效值,但当前的k线数不足N根,函数返回空值。

2、N为0或空值的情况下,函数返回空值。

例1:

TSMA5:TSMA(CLOSE,5);//计算5个周期内收盘价的序列三角移动平均

逻辑判断函数

BETWEEN(A,B,C) 表示A是否处于B和C之间,成立返回1(Yes),否则返回0(No)。

注:

1、其中若A=B、A=C、或A=B且B=C时函数返回值为1(Yse)。

例1:

BETWEEN(CLOSE,MA5,MA10); //表示收盘价介于5日均线与10日均线之间。

CROSS(A,B) 表示A从下方向上穿过B,成立返回1(Yes),否则返回0(No)

注:

1、满足穿越的条件必须上根k线满足A<=B,当根k线满足A>B才被认定为穿越。

例1:

CROSS(CLOSE,MA(CLOSE,5));//表示收盘线从下方向上穿过5周期均线

CROSSUP(A,B) 表当A从下方向上穿过B,成立返回1(Yes),否则返回0(No)

注:

1、CROSSUP(A,B)等同于CROSS(A,B),CROSSUP(A,B)编写更利于理解。

例1:

MA5:=MA(C,5);

MA10:=MA(C,10);

CROSSUP(MA5,MA10),BK;//MA5上穿MA10,买开仓。

//CROSSUP(MA5,MA10),BK; 与 CROSSUP(MA5,MA10)=1,BK;表达同等意义

CROSSDOWN(A,B):表示当A从上方向下穿B,成立返回1(Yes),否则返回0(No)

注:

1、CROSSDOWN(A,B)等同于CROSS(B,A),CROSSDOWN(A,B)编写更利于理解

例1:

MA5:=MA(C,5);

MA10:=MA(C,10);

CROSSDOWN(MA5,MA10),SK;//MA5下穿MA10卖开仓

//CROSSDOWN(MA5,MA10),SK; 与 CROSSDOWN(MA5,MA10)=1,SK;表达同等意义CROSS2(A,B,N) 表示N个周期内当A从下方向上穿B偶数次。 赢顺不支持

注:

1、若N为0,则从第一个有效的值开始算。

2、当N为有效值,但当前的k线数不足N根,或者N空值的情况下,代表不成立,该函数返回0

例1:

MA5:=MA(C,5);

CROSS2(C,MA5,10) 返回值为1(Yes),表示当前周期是10个周期内(包含当前周期)收盘价从下方向上穿过5周期均线的第偶数次;返回值为0(No),表示当前周期不是10个周期内(包含当前周期)收盘价从下方向上穿过5周期均线的第偶数次

EVERY(COND,N),判断N周期内,是否一直满足COND条件。若满足函数返回值为1,不满足函数返回值为0;

注:

1、N包含当前k线。

2、若N是有效数值,但前面没有那么多K线,或者N为空值,代表条件不满足,函数返回值为0。

例1:

EVERY(CLOSE>OPEN,5);//表示5个周期内一直是阳线

例2:

MA5:=MA(C,5);//定义5周期均线

MA10:=MA(C,10);//定义10周期均线

EVERY(MA5>MA10,4),BK;//4个周期内MA5都大于MA10,则买开仓。

//EVERY(MA5>MA10,4),BK; 与 EVERY(MA5>MA10,4)=1,BK; 表达同等意义 EXIST(COND,N) 判断N个周期内是否有满足COND的条件(包含当前周期)

注:

1、N可以是变量。

2、若N是有效数值,但前面没有那么多K线,或者N为空值,代表条件不满足,该函数返回值为0

例1:

EXIST(CLOSE>REF(HIGH,1),10);表示10个周期中是否存在收盘价大于前一个周期的最高价,存在返回1,不存在则返回0.

例2:

N:=BARSLAST(DATE<>REF(DATE,1))+1;

EXIST(C>MA(C,5),N);// 表示当天是否有满足收盘价大于5周期均线的k线,存在返回1,不存在返回0

FILTER(COND,N) 当COND条件成立,将其后N周期内的数据设置为0.

注:

1、N为空值,返回空值。

2、不能与BKPRICE,BARSBK,SKPRICE,BARSSK一起使用

FILTER(CLOSE>OPEN,3);// 查找阳线,3天内再次出现的阳线不被记录在内

IFELSE(COND,A,B) 若COND条件成立,则返回A,否则返回B

注:

1、COND是判断条件;A、B可以是条件,也可以是数值。

例1:

IFELSE(ISUP,H,L);//如果k线为阳线,取最高价,否则取最低价

例2:

A:=IFELSE(MA5>MA10,CROSS(DIFF,DEA),IFELSE(CROSS(D,K),2,0));//当MA5>MA10时,取是否满足DIFF上穿DEA,否则(MA5不大于MA10),当K,D死叉时,令A赋值为2,若上述条件都不满足,A赋值为0

A=1,BPK;//当MA5>MA10,以DIFF上穿DEA作为开多仓条件

A=2,SPK;//当MA5不大于MA10,以K、D死叉作为开空仓条件

ISDOWN 判断该周期是否收阴

注:

1、ISDOWN等同于C<O

例:

ISDOWN=1&&C<REF(C,1),SK;//如果当根k线收阴并且收盘价小于前一周期收盘价,则开空 //ISDOWN=1&&C<REF(C,1),SK; 与 ISDOWN&&C<REF(C,1),SK; 表达同等意义

ISEQUAL 判断该周期是否平盘

注:

1、ISEQUAL等同于C=O

例1:

EVERY(ISEQUAL=1,2),CLOSEOUT;//如果持续2根k线都是平盘,则全平。

SDELIVERYDAY 判断该周期是否是交割日。如果当前k线是交割日则返回1(Yes),否则返回0(No)

注:

1、只能使用在日线及小于日线的周期,在周线月线等大于日线的周期使用时返回值始终为0

例1:

ISDELIVERYDAY=1&&TIME>=1000,CLOSEOUT;//如果当根k线是交割日并且时间是10:00,则全平。

ISLASTBAR 判断该周期是否为最后一根k线

注:

1、该函数属于未来函数。

VALUEWHEN(ISLASTBAR=1,REF(H,1));//如果当前k线是最后一根k线,则取前一周期的最高价 ISLASTKLINE 判断该周期是否为每日收盘前最后一根k线,返回是1(Yes),否则返回0(No)。

例1:

ISLASTKLINE=1,CLOSEOUT;//如果该周期是当日收盘前最后一根k线,则全平

ISUP 判断该周期是否收阳

注:

1、ISUP等同于C>O

例:

ISUP=1&&C>REF(C,1),BK;//如果当根k线收阳并且收盘价大于前一周期收盘价,则开多 //ISUP=1&&C>REF(C,1),BK; 与 ISUP&&C>REF(C,1),BK;//表达同等意义

LAST(COND,N1,N2) 判断过去N1到N2周期内,是否一直满足COND条件。

注:

1、若N1与N2只相差一个周期(如N1=3,N2=2),则函数判断距离当前K线最近的那个周期上是否满足条件(即判断过去N2个周期的那根K线上是否满足条件)

2、当N为有效值,但当前的k线数不足N根,或者N空值的情况下,代表不成立,该函数返回0

例1:

LAST(CLOSE>OPEN,10,5);//表示从过去第10个周期到第5个周期内一直是阳线

例2:

MA5:=MA(C,5); LAST(C>MA5,4,3);//判断距离当前k线3个周期的那根k线上是否满足C大于MA5. LONGCROSS(A,B,N) 表示A在N个周期内都小于B,本周期A从下向上穿越B

注:

1、当N为有效值,但当前的k线数不足N根,

2、N为空值的情况下,代表不成立,函数返回0

例1:

LONGCROSS(CLOSE,MA(CLOSE,10),20);//表示收盘线在10日均线之下持续20周期后从下向上穿过10日均线

VALUEWHEN(COND,X) 当COND条件成立时,取X的当前值。如COND条件不成立,则取上一次COND条件成立时X的值。

注:

X可以是数值也可以是条件。

例1

VALUEWHEN(HIGH>REF(HHV(HIGH,5),1),HIGH);表示当前最高价大于前五个周期最高价的最

文华财经主要函数学习83_文华财经

大值时返回当前最高价

例2:

VALUEWHEN(DATE<>REF(DATE,1),O);表示取当天第一根k线的开盘价(即当天开盘价) 例3:

VALUEWHEN(DATE<>REF(DATE,1),L>REF(H,1));表示在当天第一根k线上判断当前最低价是否大于昨天最高价。如果返回1,说明当天跳空高开。返回0,说明当天不满足跳空高开条件。 :3分钟K线 日内资金20万运行,日内亏损控制在1万以内,如何编写?就是无论开多还是开空仓,只要亏损到了1万就平仓,然后日内不再开仓。

N:=BARSLAST(DATE<>REF(DATE,1))+1;

A:=NOT(MONEYTOT<VALUEWHEN(N=1,MONEYTOT)-10000);

A&&P1,BK;

A&&P2,SK;

比历史最高权益回测20%以上,当日开仓10%资金。

比历史最高权益回测15-20%以内,当日开仓20%资金。

比最高权益回测10-15%以内,当日开仓40%资金。

比最高权益回测5-10%以内,当日开仓60%资金。

比最高权益回测0-5%, 当日开仓80%资金。

HM:HHV(MONEYTOT,BARPOS);

MM:=MONEYTOT;

N:IFELSE(MM>=HM*0.95,80,IFELSE(MM>=HM*0.9&&MM<HM*0.95,60,IFELSE(MM>=HM*0.85&&MM<HM*0.9,40,IFELSE(MM>=HM*0.8&&MM<HM*0.85,20,10))));

SETDEALPERCENT(N);

HM:HHV(MONEYTOT,BARPOS);

MM:=MONEYTOT;

NN:IFELSE(MM>=HM*0.95,80,IFELSE(MM>=HM*0.9&&MM<HM*0.95,60,IFELSE(MM>=HM*0.85&&MM<HM*0.9,40,IFELSE(MM>=HM*0.8&&MM<HM*0.85,20,10))));

SETDEALPERCENT(NN);

N1:=BARSLAST(DATE<>REF(DATE,1))+1;

CLOSE-VALUEWHEN(N1=1,OPEN)>10,BK;

CLOSEMINUTE<=2,SP;

VALUEWHEN(N1=1,OPEN)-CLOSE>10,SK;

CLOSEMINUTE<=2,BP;

AUTOFILTER;

HM:HHV(MONEYTOT,BARPOS);

MM:=MONEYTOT;

NN:IFELSE(MM>=HM*0.95,80,IFELSE(MM>=HM*0.9&&MM<HM*0.95,60,IFELSE(MM>=H

M*0.85&&MM<HM*0.9,40,IFELSE(MM>=HM*0.8&&MM<HM*0.85,20,10))))/100;

N1:=BARSLAST(DATE<>REF(DATE,1))+1;

CLOSE-VALUEWHEN(N1=1,OPEN)>10,BK(MONEY*NN/(C*UNIT*MARGIN));

CLOSEMINUTE<=2,SP(BKVOL);

VALUEWHEN(N1=1,OPEN)-CLOSE>10,SK(MONEY*NN/(C*UNIT*MARGIN));

CLOSEMINUTE<=2,BP(SKVOL);

AUTOCLEARSIG 一根K线上信号满60个时,自动对前面的信号进行删除。

清除规则:

1、仅作用于信号执行方式选择为不复核的模型

2.仅作用于模组运行过程中,效果测试及模组加载的历史信号不受该关键字影响。

例:

CLOSE>OPEN,BK;

CLOSE<BKPRICE+2||CLOSE<BKPRICE-1,SP;

AUTOFILTER;

AUTOCLEARSIG;

加入了AUTOCLEARSIG关键字,在大周期上一根K线上反复出现信号,满60个时删掉历史所有信号 只保留最后的60个信号;

若不加入AUTOCLEARSIG关键字,当信号满60个时,模组自动停止运行

对模型信号进行过滤。

过滤规则:

1.连续的同方向指令只有第一个有效,其他的将被过滤;

2.交易指令必须先开后平配对出现(例如:出现BK指令,下一个指令只允许出现SP指令;反手则是SPK和BPK交叉出现)。

例:

CLOSE>OPEN,BK;

CLOSE<OPEN,SP;

AUTOFILTER;

注意如果使用自动过滤函数建议就不要在代码中再使用其它的语句进行过滤的编写。

BARSBK 上一次买开信号位置

用法:

BARSBK返回上一次买开仓的K线距离当前K线的周期数(不包含出现BK信号的那根K线);发出BK信号的当根k线BARSBK返回空值

如果取包含BK信号出现的那根K线到当前K线的周期数,则需要在此函数后+1,即BARSBK+1;由于发出BK信号的当根k线BARSBK返回空值,则BARSBK+1在发出BK信号当根k线返回空值。

注:

1、若当前K线之前无BK信号,则函数返回值为空值

2、BK信号当根K线信号固定后BARSBK返回为空值

例:

1、BARSBK>10,SP;上一次买开仓(不包含出现买开信号的那根K线)距离当前K线的周期数大于10,卖平;

2、HHV(H,BARSBK+1);上一次买开仓(包含开仓信号出现的当根k线)到当前的最高价的最大值。

当根K线出现BK信号,AA返回为空值,如果需要返回当根K线上最高价,模型需要修改为:

AA:IFELSE(BARSBK>=1,HHV(H,BARSBK+1),H);

(1)当根K线出现BK信号,BARSBK返回为空值,不满足BARSBK>=1的条件,则取值为当根K线的最高价H

(2)发出BK信号之后K线BARSBK返回买开仓的K线距离当前K线的周期数,满足BARSBK>=1的条件,则取值为HHV(H,BARSBK+1),即买开仓(包含开仓信号出现的当根k线)到当前的最高价的最大值。

修改后如果平仓条件中用到了AA的值,当根K线满足了平仓条件,可以出现平仓信号

3、AA:IFELSE(BARSBK>=1,REF(C,BARSBK),C);//取最近一次买开仓K线的收盘价

(1)发出BK信号的当根k线BARSBK返回空值,则当根K线不满足BARSBK>=1的条件,AA返回当根k线的收盘价;

(2)发出BK信号之后的k线BARSBK返回买开仓的K线距离当前K线的周期数,则AA返回REF(C,BARSBK),即开仓k线的收盘价;

(3)例:1、2、3三根k线,1 K线为开仓信号的当根k线,则返回当根k线的收盘价,2、3 K线AA返回值为 1 K线的收盘价。 BARSSK 上一次卖开信号位置

用法:

BARSSK返回上一次卖开仓的K线距离当前K线的周期数(不包含出现SK信号的那根K线);发出SK信号的当根k线BARSSK返回空值

如果取包含SK信号出现的那根K线到当前K线的周期数,则需要在此函数后+1,即BARSSK+1;由于发出SK信号的当根k线BARSSK返回空值,则BARSSK+1在发出SK信号当根k线返回空值。

注:

1、若当前K线之前无SK信号,则函数返回值为空值

2、SK信号当根K线信号固定后BARSSK返回为空值r\n例:

1、BARSSK>10,BP;上一次卖开仓(不包含出现买开信号的那根K线)距离当前K线的周期数大于10,买平;

2、LLV(L,BARSSK+1);上一次卖开仓(包含开仓信号出现的当根k线)到当前的最低价的最小值。

当根K线出现SK信号,AA返回为空值,如果需要返回当根K线上最低价,模型需要修改为:

AA:IFELSE(BARSSK>=1,LLV(L,BARSSK+1),L);

(1)当根K线出现SK信号,BARSSK返回为空值,不满足BARSSK>=1的条件,则取值为当根K线的最低价L

(2)发出SK信号之后K线SARSBK返回卖开仓的K线距离当前K线的周期数,满足BARSSK>=1的条件,则取值为LLV(L,BARSSK+1),即卖开仓(包含开仓信号出现的当根k线)到当前的最低价的最小值。

修改后如果平仓条件中用到了AA的值,当根K线满足了平仓条件,可以出现平仓信号。

3、AA:IFELSE(BARSSK>=1,REF(C,BARSSK),C);//取最近一次卖开仓K线的收盘价

(1)发出SK信号的当根k线BARSSK返回空值,则当根K线不满足BARSSK>=1的条件,AA返回当根k线的收盘价;

(2)发出SK信号之后的k线BARSSK返回卖开仓的K线距离当前K线的周期数,则AA返回REF(C,BARSSK),即开仓k线的收盘价;

(3)例:1、2、3三根k线,1 K线为开仓信号的当根k线,则返回当根k线的收盘价,2、3 K线AA返回值为 1 K线的收盘价。

BARSBP上一次买平信号位置

用法:

BARSBP返回上一次买平仓的K线距离当前K线的周期数(不包含出现BP信号的那根K线);发出BP信号的当根k线BARSBP返回空值。

如果取包含BP信号出现的那根K线到当前K线的周期数,则需要在此函数后+1,即BARSBP+1。由于发出BP信号的当根k线BARSBP返回空值,则BARSBP+1在发出BP信号当根k线返回空值。

注:

文华财经主要函数学习83_文华财经

若当前K线之前无BP信号,则函数返回值为空值

例:

1、BARSBP>10,BK;上一次买平仓(不包含出现买平信号的那根K线)距离当前K线的周期数大于10,买开。

2、AA:HHV(H,BARSBP+1);上一次买平仓(包含平仓信号出现的当根k线)到当前的最高价的最大值。

当根K线出现BP信号,AA返回为空值,如果需要返回当根K线上最高价,模型需要修改为:

AA:IFELSE(BARSBP>=1,HHV(H,BARSBP+1),H);

(1)当根K线出现BP信号,BARSBP返回为空值,不满足BARSBP>=1的条件,则取值为当根K线的最高价H

(2)发出BP信号之后K线BARSBP返回买平仓的K线距离当前K线的周期数,满足BARSBP>=1的条件,则取值为HHV(H,BARSBP+1),即买平仓(包含平仓信号出现的当根k线)到当前的最高价的最大值。

3、AA:IFELSE(BARSBP>=1,REF(C,BARSBP),C);//取最近一次买平仓K线的收盘价(

1)发出BP信号的当根k线BARSBP返回空值,则当根K线不满足BARSBP>=1的条件,AA返回当根k线的收盘价;

(2)发出BP信号之后的k线BARSBP返回买平仓的K线距离当前K线的周期数,则AA返回REF(C,BARSBP),即开仓k线的收盘价;

(3)例:1、2、3三根k线,1 K线为平仓信号的当根k线,则返回当根k线的收盘价,2、3 K线AA返回值为 1 K线的收盘价。

BARSSP上一次卖平信号位置

用法:

BARSSP返回上一次卖平仓的K线距离当前K线的周期数(不包含出现SP信号的那根K线);发出SP信号的当根k线BARSSP返回空值。

如果取包含SP信号出现的那根K线到当前K线的周期数,则需要在此函数后+1,即BARSSP+1。由于发出SP信号的当根k线BARSSP返回空值,则BARSSP+1在发出SP信号当根k线返回空值。

注:

若当前K线之前无SP信号,则函数返回值为空值

例:

1、BARSSP>10,BK;上一次卖平仓(不包含出现卖平信号的那根K线)距离当前K线的周期数大于10,买开。

2、AA:HHV(H,BARSSP+1);上一次,卖平仓(包含平仓信号出现的当根k线)到当前的最高价的最大值。

当根K线出现SP信号,AA返回为空值,如果需要返回当根K线上最高价,模型需要修改为: AA:IFELSE(BARSSP>=1,HHV(H,BARSSP+1),H);

(1)当根K线出现SP信号,BARSSP返回为空值,不满足BARSSP>=1的条件,则取值为当根K线的最高价H

(2)发出SP信号之后K线BARSSP返回买平仓的K线距离当前K线的周期数,满足BARSSP>=1

的条件,则取值为HHV(H,BARSSP+1),即卖平仓(包含平仓信号出现的当根k线)到当前的最高价的最大值。

3、AA:IFELSE(BARSSP>=1,REF(C,BARSSP),C);//取最近一次卖平仓K线的收盘价

(1)发出SP信号的当根k线BARSSP返回空值,则当根K线不满足BARSSP>=1的条件,AA返回当根k线的收盘价;

(2)发出SP信号之后的k线BARSSP返回卖平仓的K线距离当前K线的周期数,则AA返回REF(C,BARSSP),即开仓k线的收盘价;

(3)1、2、3三根k线,1 K线为平仓信号的当根k线,则返回当根k线的收盘价,2、3 K线AA返回值为 1 K线的收盘价

模型买开信号位置的买开信号价位。

用法:

BKPRICE返回最近一次模型买开位置的买开信号价位。

(1)当模型存在连续多个开仓信号(加仓)的情况下,该函数返回的是最后一次开仓信号的价格,而不是开仓均价。

(2)模组运行环境,返回的是BK(BPK)信号发出时的行情的最新价(可以与模组运行界面中“信号记录”中的BK(BPK)信号对应的“当时最新价”比较)。BK信号发出并且已经确认固定后,BKPRICE的值更新为信号发出时的行情的最新价

注意:

a.信号执行方式选择为不进行信号复核或K线走完确认信号下单,则BK委托的时BKPRICE的值更新为信号发出时的行情的最新价;

b.信号执行方式选择为K线走完进行信号复核,则BK信号委托时BKPRICE返回的还是上一次BK信号发出时的行情的最新价;K线走完复核信号确认存在,BKPRICE返回本次BK信号发出时行情的最新价

(3)模组运行环境历史信号取值,返回出信号那根k线的指令价。

(4)含有BKPRICE的模型,模组自动初始化时返回的为上一次买开

信号的指令价;手动初始化,如果上一个信号为买开,BKPRICE返回为初始化弹出框中填入的价格(默认填入上一次买开信号位置的指令价);

(5)效果预览环境,信号执行方式选择K线走完确认信号下单,返回的是出信号那根k线的收盘价;信号执行方式选择出信号立即下单,K线走完复核或者出信号立即下单不进行复核,返回指令价。

(6)主图加载运行,BKPRICE返回的买开信号当根的收盘价

写法示例:

BKPRICE-CLOSE>60 && BKPRICE>0 && BKVOL>0, SP;//如果买开价位比当前价位高出60,且多头持仓存在,卖平仓。

模型卖开信号位置的卖开信号价位。

用法:

SKPRICE返回最近一次模型卖开位置的卖开信号价位。

(1)当模型存在连续多个开仓信号(加仓)的情况下,该函数返回的是最后一次开仓信号的价格,而不是开仓均价。

(2)模组运行环境,返回的是SK(SPK)信号发出时的行情的最新价(可以与模组运行界面中“信号记录”中的SK(SPK)信号对应的“当时最新价”比较)。SK信号发出并且已经确认固定后,SKPRICE的值更新为信号发出时的行情的最新价

注意:

a.信号执行方式选择为不进行信号复核或K线走完确认信号下单,则SK委托的时SKPRICE的值更新为信号发出时的行情的最新价;

b.信号执行方式选择为K线走完进行信号复核,则SK信号委托时SKPRICE返回的还是上一次BK信号发出时的行情的最新价;K线走完复核信号确认存在,SKPRICE返回本次SK信号发出时行情的最新价

(3)模组运行环境历史信号取值,返回出信号那根k线的指令价。

注意: a.信号执行方式选择为不进行信号复核,历史信号清空,所以SKPRICE没有历史信号取值 b.不带AUTOFILTER的非过滤模型,历史信号清空,所以SKPRICE没有历史信号取值

(4)含有SKPRICE的模型,模组自动初始化时返回的为上一次卖开信号的指令价;手动初始化,如果上一个信号为卖开,SKPRICE返回为初始化弹出框中填入的价格(默认填入上一次卖开信号位置的指令价)

(5)效果预览环境,信号执行方式选择K线走完确认信号下单,返回的是出信号那根k线的收盘价;信号执行方式选择出信号立即下单,K线走完复核或者出信号立即下单不进行复核,返回指令价。

(6)主图加载运行,SKPRICE返回的卖开信号当根的收盘价

写法示例:

CLOSE-SKPRICE>60 && SKPRICE>0 && SKVOL>0, BP;//如果卖开价位比当前价位低出60,且空头持仓存在,买平仓。

BKPRICE1 模组中交易合约的买开信号位置的买开信号价位。

用法:

(1)当数据合约和交易合约相同时BKPRICE1值和BKPRICE值相等。

(2)当交易合约另外指定时,BKPRICE1历史数据值与BKPRICE值相等取数据合约价格,盘中BKPRICE取数据合约的价格,BKPRICE1取交易合约价格。

(3)当模型自动初始化时,BKPRICE1取最近的BK信号计算的数据合约的指令价;手动初始化时,BKPRICE1取初始化弹出框中填入的持仓价格(默认显示为买开信号的指令价)。

SKPRICE 模组中交易合约的卖开信号位置的卖开信号价位。

用法:

(1)当数据合约和交易合约相同时SKPRICE1值和SKPRICE值相等。

(2)当交易合约另外指定时SKPRICE1历史数据值与SKPRICE值相等取数据合约价格,盘中SKPRICE取数据合约的价格,SKPRICE1取交易合约价格。

(3)当模型自动初始化时,SKPRICE1取最近的SK信号计算的数据合约的指令价;手动初始化时,SKPRICE1取初始化弹出框中填入的持仓价格(默认为卖开信号的指令价) 买开仓以来的最高价

用法:

BKHIGH返回最近一次模型买开位置到当前的最高价.

(1)模组运行环境,返回bk(bpk)指令发出后到当前的最高价;

a.K线走完确认信号下单,BK(BPK)信号当根K线返回的为信号发出时行情的最新价(即下根K线的开盘价);BK之后的K线返回委托以来的行情的最高价

b.信号执行方式选择K线走完复核,从BK(BPK)信号发出时行情时开始统计行情的最高价;如果信号消失,返回上次买开以来的行情的最

高价,如果信号确认存在,返回当根K线记录的行情的最高价

注:如果BK信号发出后,中间出了信号消失,从最后一次信号出现开始统计最高价

c.信号执行方式选择不进行信号复核,BK(BPK)信号的当根K线返回的从信号发出到K线走完时行情的最高价;BK(BPK)信号之后的K线返回信号发出以来行情的最高价

(2)加载模型时历史数据:

a.K线走完确认信号下单,如果当前K线上出现bk(bpk)信号,返回当前bk(bpk)信号所在K线的收盘价,之后的与当根k线的收盘价做比较取较大值;

b.其他信号执行方式,BK信号当根指令价(根据效果测试计算机制计算得到)与收盘价比较,返回取值较大的值;BK信号以后与BK信号当根的返回值比较取较大值

(3)效果测试中:

a.K线走完确认信号下单,如果当前K线上出现bk(bpk)信号,返回当前bk(bpk)信号所在K线的收盘价,之后的与当根k线的收盘价做比较取较大值;

b.其他信号执行方式,BK信号当根指令价(根据效果测试计算机制计算得到)与收盘价比较,返回取值较大的值;BK信号以后与BK信号当根的返回值比较取较大值

例:

C<BKHIGH-5*MD,SP;//买开位置到当前的最高价回撤5个最小变动价

文华财经主要函数学习83_文华财经

位则止损平仓。

卖开仓以来的最高价

用法:

SKHIGH返回最近一次模型卖开位置到当前的最高价.

(1)模组运行环境,返回SK(SPK)指令发出后到当前的最高价;

a.K线走完确认信号下单,BK(BPK)信号当根K线返回的为信号发出时行情的最新价(即下根K线的开盘价);SK之后的K线返回委托以来的行情的最高价

b.信号执行方式选择K线走完复核,从SK(SPK)信号发出时行情时开始统计行情的最高价;如果信号消失,返回上次卖开以来的行情的最高价,如果信号确认存在,返回当根K线记录的行情的最高价

注:如果SK信号发出后,中间出了信号消失,从最后一次信号出现开始统计最高价

c.信号执行方式选择不进行信号复核,SK(SPK)信号的当根K线返回的从信号发出到K线走完时行情的最高价;SK(SPK)信号之后的K线返回信号发出以来行情的最高价

(2)加载模型时历史数据:

a.K线走完确认信号下单,如果当前K线上出现SK(SPK)信号,返回当前SK(SPK)信号所在K线的收盘价,之后的与当根k线的收盘价做比较取较大值;

b.其他信号执行方式,SK信号当根指令价(根据效果测试计算机制计算得到)与收盘价比较,返回取值较大的值;SK信号以后与SK信号当根的返回值比较取较大值

(3)效果测试中:

a.K线走完确认信号下单,如果当前K线上出现SK(SPK)信号,返回当前SK(SPK)信号所在K线的收盘价,之后的与当根k线的收盘价做比较取较大值;

b.其他信号执行方式,SK信号当根指令价(根据效果测试计算机制计算得到)与收盘价比较,返回取值较大的值;SK信号以后与SK信号当根的返回值比较取较大值

例:

C<SKHIGH-5*MD,BP;//卖开位置到当前的最高价回撤5个最小变动价位则平仓。 买开仓以来的最低价

用法:

BKLOW返回最近一次模型买开位置到当前的最低价.

(1)模组运行环境,返回bk(bpk)指令发出后到当前的最低价;

a.K线走完确认信号下单,BK(BPK)信号当根K线返回的为信号发出时行情的最新价(即下根K线的开盘价);BK之后的K线返回委托以来的行情的最低价

b.信号执行方式选择K线走完复核,从BK(BPK)信号发出时行情时开始统计行情的最低价;如果信号消失,返回上次买开以来的行情的最低价,如果信号确认存在,返回当根K线记录的行情的最低价

注:如果BK信号发出后,中间出了信号消失,从最后一次信号出现开始统计最低价

c.信号执行方式选择不进行信号复核,BK(BPK)信号的当根K线返回的从信号发出到K线走完时行情的最低价;BK(BPK)信号之后的K线返回信号发出以来行情的最低价

(2)加载模型时历史数据:

a.K线走完确认信号下单,如果当前K线上出现bk(bpk)信号,返回当前bk(bpk)信号所在K线的收盘价,之后的与当根k线的收盘价做比较取较小值;

b.其他信号执行方式,BK信号当根指令价(根据效果测试计算机制计算得到)与收盘价比较,返回取值较小的值;BK信号以后与BK信号当根的返回值比较取较小值

(3)效果测试中:

a.K线走完确认信号下单,如果当前K线上出现bk(bpk)信号,返回当前bk(bpk)信号所在K线的收盘价,之后的与当根k线的收盘价做比较取较小值;

b.其他信号执行方式,BK信号当根指令价(根据效果测试计算机制计算得到)与收盘价比较,返回取值较小的值;BK信号以后与BK信号当根的返回值比较取较小值

例:

C>BKLOW+5*MD,SP;//买开位置到当前的最低价上涨5个最小变动价位则平仓。

卖开仓以来的最低价

用法:

SKLOW返回最近一次模型卖开位置到当前的最低价.

(1)模组运行环境,返回SK(SPK)指令发出后到当前的最低价;

a.K线走完确认信号下单,BK(BPK)信号当根K线返回的为信号发出时行情的最新价(即下根K线的开盘价);SK之后的K线返回委托以来的行情的最低价

b.信号执行方式选择K线走完复核,从SK(SPK)信号发出时行情时开始统计行情的最低价;如果信号消失,返回上次卖开以来的行情的最低价,如果信号确认存在,返回当根K线记录的行情的最低价

注:如果SK信号发出后,中间出了信号消失,从最后一次信号出现开始统计最低价

c.信号执行方式选择不进行信号复核,SK(SPK)信号的当根K线返回的从信号发出到K线走完时行情的最低价;SK(SPK)信号之后的K线返回信号发出以来行情的最低价

(2)加载模型时历史数据:

a.K线走完确认信号下单,如果当前K线上出现SK(SPK)信号,返回当前SK(SPK)信号所在K线的收盘价,之后的与当根k线的收盘价做比较取较小值;

b.其他信号执行方式,SK信号当根指令价(根据效果测试计算机制计算得到)与收盘价比较,返回取值较小的值;SK信号以后与SK信号当根的返回值比较取较小值

(3)效果测试中:

a.K线走完确认信号下单,如果当前K线上出现SK(SPK)信号,返回当前SK(SPK)信号所在K线的收盘价,之后的与当根k线的收盘价做比较取较小值;

b.其他信号执行方式,SK信号当根指令价(根据效果测试计算机制计算得到)与收盘价比较,返回取值较小的值;SK信号以后与SK信号当根的返回值比较取较小值

例:

C>SKLOW+5*MD,BP;//卖开位置到当前的最低价回撤5个最小变动价位则平仓。

模组信号多头持仓

用法:

BKVOL返回模组信号多头持仓。

(1)效果测试中

a.信号执行方式选择K线走完确认信号下单或者出信号立即下单,K线走完复核:

BK(BPK)信号出现的当根K线上,BKVOL取值不变,与上根K线上返回值保持一致;

BK(BPK)信号的下根K线上,BKVOL的取值增加开仓手数的数值;

SP(SPK)信号出现的当根K线上,BKVOL取值不变,与上根K线上返回值保持一致;

SP(SPK)信号的下根K线上,BKVOL的取值减少平仓手数的数值; b.信号执行方式选择出信号立即下单,不进行复核:

BK(BPK)信号出现的当根K线上,BKVOL取值增加开仓手数的数值; BK(BPK)信号的下根K线上,BKVOL的取值不变,与上根K线上返回值保持一致;

SP(SPK)信号出现的当根K线上,BKVOL取值减少平仓手数的数值; SP(SPK)信号的下根K线上,BKVOL的取值不变,与上根K线上返回值保持一致;

(2)模组运行中过滤模型初始化上一信号选择买开,并且初始化进来多头持仓为M,BKVOL返回值增加M,选择上一信号为其他信号,BKVOL返回值为0

(3)模组运行中非过滤模型初始化上一信号选择买开或者卖平,并且初始化进来多头持仓为M,BKVOL返回值增加M,选择上一信号为其他信号,BKVOL返回值为0

(4)模组运行过程中BK(BPK)信号出现并且确认固定后,BKVOL的取值增加开仓手数的数值;SP(SPK)信号出现并且确认固定后,BKVOL的取值减少平仓手数的数值

写法示例:

BKVOL=0&&C>O,BK(1);//多头持仓为0并且收盘价大于开盘价时,买开一手

BKVOL>=1&&H>HV(H,5),BK(2); //多头持仓大于等于1,并且当根K线的最高价大于前面5个周期中最高价中最大值时,加仓2手

BKVOL>0&&L<REF(L,5),SP(BKVOL); //多头持仓大于0,并且当根K线的最低价小于5个周期前K线的最低价时,卖平所有多头持仓

注:

1、含有此函数的模型不支持加载到主图及信号预警盒子

2、与未来函数同时使用如ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEAK,PEAKBARS,TROUGH,TROUGHBARS,REFX等可能会导致误差

本函数运算量很大,将占用很多的CPU资源,导致行情刷新速度变慢,请谨慎使用! 模组信号空头持仓

用法:

SKVOL返回模组信号空头持仓。

(1)效果测试中

a.信号执行方式选择K线走完确认信号下单或者出信号立即下单,K线走完复核: SK(SPK)信号出现的当根K线上,SKVOL取值不变,与上根K线上返回值保持一致; SK(SPK)信号的下根K线上,SKVOL的取值增加开仓手数的数值;

BP(BPK)信号出现的当根K线上,SKVOL取值不变,与上根K线上返回值保持一致; BP(BPK)信号的下根K线上,SKVOL的取值减少平仓手数的数值;

b.信号执行方式选择出信号立即下单,不进行复核:

SK(SPK)信号出现的当根K线上,SKVOL取值增加开仓手数的数值;

SK(SPK)信号的下根K线上,SKVOL的取值不变,与上根K线上返回值保持一致; BP(BPK)信号出现的当根K线上,SKVOL取值减少平仓手数的数值;

BP(BPK)信号的下根K线上,SKVOL的取值不变,与上根K线上返回值保持一致;

(2)模组运行中过滤模型初始化上一信号选择卖开,并且初始化进来空头持仓为M,SKVOL返回值增加M,选择上一信号为其他信号,SKVOL返回值为0

(3)模组运行中非过滤模型初始化上一信号选择卖开或者买平,并且初始化进来空头持仓为M,SKVOL返回值增加M,选择上一信号为其他信号,SKVOL返回值为0

(4)模组运行过程中SK(SPK)信号出现并且确认固定后,SKVOL的取值增加开仓手数的数值;BP(BPK)信号出现并且确认固定后,SKVOL的取值减少平仓手数的数值 写法示例:

SKVOL=0&&C<O,SK(1);//空头持仓为0并且收盘价小于开盘价时,卖开一手

SKVOL>=1&&L>LV(L,5),SK(2); //空头持仓大于等于1,并且当根K线的最低价小于前面5个周期中最低价中最小值时,加仓2手

SKVOL>0&&H<REF(H,5),BP(SKVOL); //空头持仓大于0,并且当根K线的最高价大于5个周期前K线的最高价时,买平所有空头持仓

注:

1、含有此函数的模型不支持加载到主图及信号预警盒子

2、与未来函数同时使用如ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEAK,PEAKBARS,TROUGH,TROUGHBARS,REFX等可能会导致误差

本函数运算量很大,将占用很多的CPU资源,导致行情刷新速度变慢,请谨慎使用! 条件单模组关键字

用法:

编写特殊的条件单模型 需要写关键字“CONDITION_ORDER”

例:

C>O,BK(1);

CONDITION_ORDER;

FEE合约手续费

用法:

FEE返回当前合约的手续费(用户启动模组时设置的)。

当交易品种手续费为按手数收取,返回值为手续费

当交易品种手续费按比例收取,返回值为手续费比例(小数)。

注:

1、FEE为资金管理函数,不能加载到主图使用

2、效果测试中FEE取值为载入数据中,对手续费的设置

3、模组运行中FEE取值为模组加载中保证金参数中手续费的设置

(保证金参数中手续费的设置同样作用于模组运行列表中对手续费成本的计算) 注意

1、不能与未来函数同时使用如ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEAK,PEAKBARS,TROUGH,TROUGHBARS,REFX等

2、本函数运算量很大,将占用很多的CPU资源,导致行情刷新速度变慢,请谨慎使用! GROUPBKVOL取模型分组后的模组多头持仓。

用法:

GROUPBKVOL('A')返回模型组A的多头模组持仓。

参数可以取从A-I

注:

相应组的买开信号后,GROUPBKVOL('A')增加,即BK(‘A’),BPK(‘A’),BK(‘A’,1)后GROUPBKVOL('A')增加,其他组的开仓信号,GROUPBKVOL('A')取值不变

相应组的卖平信号后,GROUPBKVOL('A')取值相应的减少,即SP(‘A’),SPK(‘A’),SP(‘A’,1)后,GROUPBKVOL('A')取值减少,其他组的平仓信号后,GROUPBKVOL('A')取值不变 全清信号后,GROUPBKVOL('A')取值减为0

例:

MA1:MA(C,5);

C>MA1,BK(‘A’,1);

C>O,BK(‘B’,1);

GROUPBKVOL('A')>0&&C>REF(H,1),BK(‘A’,1);//A组多头持仓大于0并且最新价大于前一周前最高价,再买开一手

C<MA1,SP(‘A’,GROUPBKVOL('A'));//最新价小于5日均线,卖平所有的A组的多头持仓 C<O,SP(‘B’,GROUPBKVOL('B'));//阴线收阴线,卖平所有的B组多头持仓

注意

1、与未来函数同时使用如ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEAK,PEAKBARS,TROUGH,TROUGHBARS,REFX等可能会导致误差。2、本函数运算量很大,将占用很多的CPU资源,导致行情刷新速度变慢,请谨慎使

文华财经主要函数学习83_文华财经

用!

GROUPSKVOL取模型分组后的模组空头持仓。

用法:

GROUPSKVOL('A')返回模型组A的空头模组持仓。

参数可以取从A-I

注:

相应组的卖开信号后,GROUPSKVOL('A')增加,即SK(‘A’),SPK(‘A’),SK(‘A’,1)后GROUPSKVOL('A')增加,其他组的开仓信号,GROUPSKVOL('A')取值不变

相应组的买平信号后,GROUPSKVOL('A')取值减少,即BP(‘A’),BPK(‘A’),BP(‘A’,1)后,GROUPSKVOL('A')取值减少,其他组的平仓信号后,GROUPSKVOL('A')取值不变

全清信号后,GROUPBKVOL('A')取值减为0

例:

MA1:MA(C,5);

C<MA1,SK(‘A’,1);

C<O,SK(‘B’,1);

GROUPSKVOL('A')>0&&C<REF(L,1),SK(‘A’,1); //A组空头持仓大于0并且最新价大于前一周前最高价,再卖开一手

C>MA1,BP(‘A’,GROUPSKVOL('A')); //最新价大于5日均线,买平所有的A组的空头持仓 C>O,BP(‘B’,GROUPSKVOL('B')); //阴线收阳线,买平所有的B组空头持仓

注意1、与未来函数同时使用如ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEAK,PEAKBARS,TROUGH,TROUGHBARS,REFX等可能会导致误差。

2、本函数运算量很大,将占用很多的CPU资源,导致行情刷新速度变慢,请谨慎使用! GROUPBKPRICE 模型分组指令中某组买开信号位置的买开信号价位。

用法:

GROUPBKPRICE 返回分组指令中最近一次模型买开位置的买开信号价位。

写法示例:

C>O,BK('A');

BB:GROUPBKPRICE('A');//给BB赋值为A组指令中最近一次模型买开位置的买开信号价位。 GROUPSKPRICE 模型分组指令中某组卖开信号位置的卖开信号价位。

用法:

GROUPSKPRICE 返回分组指令中最近一次模型卖开位置的卖开信号价位。

写法示例:

C<O,SK('B');

SS:GROUPSKPRICE('B');//给SS赋值为B组指令中最近一次模型卖开位置的卖开信号价位。 ISLASTBK判断上一个交易信号是否是BK。

用法:

ISLASTBK 如果上一个交易信号是BK则返回1(Yes),否则返回0(No)

注:如果模型中含有BPK条件,且上一个信号为平仓信号时,BPK会自动转化为BK信号发出,此时虽然满足BPK条件,但图中发出的信号为BK信号,所以ISLASTBK返回为1

(1)主图加载,BK信号当根ISLASTBK返回值为0,BK信号的下根ISLASTBK返回值为1

(2)效果测试及模组运行

a.信号执行方式选择K线走完及K线走完进行信号复核,BK信号当根ISLASTBK返回值为0,BK信号的下根ISLASTBK返回值为1

b.信号执行方式选择不进行信号复核,BK信号当根ISLASTBK返回值为1

ISLASTSK判断上一个交易信号是否是SK。

用法:

ISLASTSK 如果上一个交易信号是SK则返回1(Yes),否则返回0(No)

注:如果模型中含有SPK条件,且上一个信号为平仓信号时,SPK会自动转化为SK信号发出,此时虽然满足SPK条件,但图中发出的信号为SK信号,所以ISLASTSK返回为1

(1)主图加载,SK信号当根ISLASTSK返回值为0,SK信号的下根ISLASTSK返回值为1

(2)效果测试及模组运行

a.信号执行方式选择K线走完及K线走完进行信号复核,SK信号当根ISLASTSK返回值为0,SK信号的下根ISLASTSK返回值为1

b.信号执行方式选择不进行信号复核,SK信号当根ISLASTSK返回值为1

ISLASTBP判断上一个交易信号是否是BP。

用法:

ISLASTBP 如果上一个交易信号是BP则返回1(Yes),否则返回0(No)

(1)主图加载,BP信号当根ISLASTBP返回值为0,BP信号的下根ISLASTBP返回值为1

(2)效果测试及模组运行

a.信号执行方式选择K线走完及K线走完进行信号复核,BP信号当根ISLASTBP返回值为0,BP信号的下根ISLASTBP返回值为1

b.信号执行方式选择不进行信号复核,BP信号当根ISLASTBP返回值为1

ISLASTSP判断上一个交易信号是否是SP。

用法:

ISLASTSP 如果上一个交易信号是SP则返回1(Yes),否则返回0(No)

(1)主图加载,SP信号当根ISLASTSP返回值为0,SP信号的下根ISLASTSP返回值为1

(2)效果测试及模组运行

a.信号执行方式选择K线走完及K线走完进行信号复核,SP信号当根ISLASTSP返回值为0,SP信号的下根ISLASTSP返回值为1

b.信号执行方式选择不进行信号复核,SP信号当根ISLASTSP返回值为1

ISLASTBPK判断上一个交易信号是否是BPK。

用法:

ISLASTBPK 如果上一个交易信号是BPK则返回1(Yes),否则返回0(No)

注:如果模型中含有BPK条件,且上一个信号为平仓信号时,BPK会自动转化为BK信号发出,此时虽然满足BPK条件,但图中发出的信号为BK信号,所以ISLASTBPK返回为0

(1)主图加载,BPK信号当根ISLASTBPK返回值为0,BPK信号的下根ISLASTBPK返回值为1(

2)效果测试及模组运行

a.信号执行方式选择K线走完及K线走完进行信号复核,BPK信号当根ISLASTBPK返回值为0,BPK信号的下根ISLASTBPK返回值为1

b.信号执行方式选择不进行信号复核,BPK信号当根ISLASTBPK返回值为1

ISLASTSPK判断上一个交易信号是否是SPK。

用法:

ISLASTSPK 如果上一个交易信号是SPK则返回1(Yes),否则返回0(No)

注:如果模型中含有SPK条件,且上一个信号为平仓信号时,SPK会自动转化为SK信号发出,此时虽然满足SPK条件,但图中发出的信号为SK信号,所以ISLASTSPK返回为0

(1)主图加载,SPK信号当根ISLASTSPK返回值为0,SPK信号的下根ISLASTSPK返回值为1

(2)效果测试及模组运行

a.信号执行方式选择K线走完及K线走完进行信号复核,SPK信号当根ISLASTSPK返回值为0,SPK信号的下根ISLASTSPK返回值为1

b.信号执行方式选择不进行信号复核,SPK信号当根ISLASTSPK返回值为1

ISLASTCLOSEOUT判断上一个信号是否CLOSEOUT 。

用法:

ISLASTCLOSEOUT 如果上一个交易信号是CLOSEOUT则返回1(Yes),否则返回0(No)

(1)主图加载,CLOSEOUT信号当根ISLASTCLOSEOUT返回值为0,CLOSEOUT信号的下根ISLASTCLOSEOUT返回值为1

(2)效果测试及模组运行

a.信号执行方式选择K线走完及K线走完进行信号复核,CLOSEOUT信号当根ISLASTCLOSEOUT返回值为0,CLOSEOUT信号的下根ISLASTCLOSEOUT返回值为1

b.信号执行方式选择不进行信号复核,CLOSEOUT信号当根ISLASTCLOSEOUT返回值为1 LASTSIG当前K线前的最近一个信号

用法:

LASTSIG当前K线前的最近一个信号判断。

例:AA:LASTSIG=BK;当前K线前最近一个信号为BK信号AA返回值为1,否则返回0. LASTSIG的不同返回值代表的信号:

BK:200;

SK:201;

BP:202;

SP:203;

BPK:204;

SPK:205;

注意

1、与未来函数同时使用如ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEAK,PEAKBARS,TROUGH,TROUGHBARS,REFX等可能会导致误差。 2、本函数运算量很大,将占用很多的CPU资源,导致行情刷新速度变慢,请谨慎使用! LONG_VOL模组多头可用持仓

用法:

LONG_VOL取模组的多头可用持仓。

该函数不支持效果测试,只能用于模组运行。

1、模型初始化多头持仓,LONG_VOL取值为初始化多头持仓数量

2、模型发出买开仓信号,并且成交,LONG_VOL取值增加相应的成交数量,开仓委托挂单,LONG_VOL不变

3、模型发出卖平仓信号,LONG_VOL取值减少相应的数量,即使平仓委托挂单,LONG_VOL取值也会发生相应的变化

例:

A,SP(LONG_VOL/2); //满足条件A卖平模组多头持仓的1/2。

SHORT_VOL模组空头可用持仓

用法:

SHORT_VOL取模组的空头可用持仓。

该函数不支持效果测试,只能用于模组运行。

1、模型初始化空头持仓,SHORT_VOL取值为初始化空头持仓数量

2、模型发出卖开仓信号,并且成交,SHORT_VOL取值增加相应的成交数量,开仓委托挂单,SHORT_VOL不变

3、模型发出买平仓信号,SHORT_VOL取值减少相应的数量,即使平仓委托挂单,SHORT_VOL取值也会发生相应的变化

例:

B,BP(SHORT_VOL/2); //满足条件B买平模组空头持仓的1/2。

LONG_PRICE模组多头持仓开仓均价

用法:

该函数不支持效果测试,只能用于模组运行。

1、初始化持仓,LONG_PRICE取值为初始化时该合约的持仓均价,若模型自动初始化,取值为最近的买开指令的指令价;若模型手动初始化,取值为初始化弹出框中的开仓价格(默认填写上一个买开信号的指令价)

2、模组运行过程中,LONG_PRICE取值为多头持仓开仓均价,根据成交价计算得到若BK信号发出后形成挂单,LONG_PRICE取值为0

例:

CLOSE-LONG_PRICE>60 && LONG_PRICE >0 && BKVOL>0, SP;//如果当前价位比多头持仓均价高出60,且多头持仓存在,卖平仓。

SHORT_PRICE取模组空头持仓开仓均价

该函数不支持效果测试,只能用于模组运行。

用法:

1、初始化持仓,SHORT_PRICE取值为初始化时该合约的持仓均价,若模型自动初始化,取值为最近的卖开指令的指令价;若模型手动初始化,取值为初始化弹出框中持仓价格(默认填写上一个卖开信号的指令价)

2、模组运行过程中,SHORT_PRICE取值为空头持仓开仓均价,根据成交价计算得到若SK信号发出后形成挂单,SHORT_PRICE取值为0

示例:

SHORT_PRICE-CLOSE>60 && SHORT_PRICE>0 && SKVOL>0, BP;//如果空头持仓均价比当前价位高出60,且空头持仓存在,买平仓。

MARGIN合约保证金

用法:MARGIN返回当前合约的保证金比率(用户启动模组时设置的)。

注意

1、不能与未来函数同时使用如ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEAK,PEAKBARS,TROUGH,TROUGHBARS,REFX等

2、本函数运算量很大,将占用很多的CPU资源,导致行情刷新速度变慢,请谨慎使用! MONEY模组资金余额

用法:

MONEY返回模组资金余额。

开仓信号:初始资金-持仓占用的保证金(持仓占用的保证金=持仓均价*保证金比例*交易单位*手数)

平仓信号:上一周期可用资金+平仓盈亏+平仓释放的保证金(平仓盈亏=(平仓信号的指令价-持仓均价)*手数*交易单位;平仓释放的保证金=持仓均价*保证金比例*交易单位*手数)

注:持仓均价的计算

(1)初始化的持仓,如果为自动初始化,持仓均价为指令价;如果为手动初始化,持仓均价为初始化框中显示的持仓均价(默认显示上

文华财经主要函数学习83_文华财经

一信号指令价)

(2)模组运行过程中

a.信号执行方式为:K线走完确认信号下单或K线走完进行信号复核,持仓均价为开仓信号当根的收盘价

b.信号执行方式为:不进行信号复核,持仓均价为开仓信号当根的指令价

c.非过滤模型加仓后,持仓均价为收盘价或指令价的均值

(3)效果测试中

a.信号执行方式为:K线走完确认信号下单,持仓均价为开仓信号当根的收盘价

b.信号执行方式为:不进行信号复核或K线走完进行信号复核,持仓均价为开仓信号当根的指令价

c.非过滤模型加仓后,持仓均价为收盘价或指令价的均值 说明:

1、模组运行过程中具体的取值

(1)历史信号,MONEY返回值根据模组起始资金计算

(2)模组初始化持仓后MONEY返回值为初始化框中模组可用资金

(3)模组运行过程中

信号执行方式选择,K线走完或K线走完复核:

a.开仓信号当根,MONEY返回值与上一周期保持不变

b.开仓信号之后,未出现平仓信号时MONEY返回值为开仓信号当根的可用资金-开仓占用的保证金

c.平仓信号当根,MONEY返回值与上一周期保持一致

d.平仓信号持仓为0之后,MONEY返回值为上一周期的可用资金+平仓盈亏+持仓释放的保证金

注:平仓盈亏=(平仓信号的收盘价-持仓均价)*手数*交易单位 信号执行方式选择,不进行信号复核:

a.开仓信号当根,MONEY返回值为上一周期的可用资金-开仓占用的保证金

b.开仓信号之后,未出现平仓信号时MONEY返回值与开仓信号当根保持一致

c.平仓信号当根,持仓减为0,MONEY返回值上一周期的可用资金+平仓盈亏+持仓释放的保证金

注:平仓盈亏=(平仓信号的指令价-持仓均价)*手数*交易单位

2、效果测试中具体的取值

信号执行方式选择,K线走完或K线走完复核:

a.开仓信号当根,MONEY返回值与上一周期保持不变

b.开仓信号之后,未出现平仓信号时MONEY返回值为开仓信号当根的可用资金-开仓占用的保证金

c.平仓信号当根,MONEY返回值与上一周期保持一致

d.平仓信号持仓为0之后,MONEY返回值为上一周期的可用资金+平仓盈亏+持仓释放的保证金

注:信号执行方式选择K线走完确认信号下单时,平仓盈亏=(平仓信号的收盘价-持仓均价)*手数*交易单位;信号执行方式选择出信

号立即下单,K线走完复核时,平仓盈亏=(平仓信号的指令价-持仓均价)*手数*交易单位

信号执行方式选择,不进行信号复核:

a.开仓信号当根,MONEY返回值为上一周期的可用资金-开仓占用的保证金

b.开仓信号之后,未出现平仓信号时MONEY返回值与开仓信号当根保持一致

c.平仓信号当根,持仓减为0,MONEY返回值上一周期的可用资金+平仓盈亏+持仓释放的保证金

注:平仓盈亏=(平仓信号的指令价-持仓均价)*手数*交易单位

(1)如果为非过滤模型,减仓信号后(即平仓信号出现,持仓减为0),MONEY计算公式中,持仓均价不变,手数减少。

(2)MONEY为资金管理函数,不支持主图加载

(3)与未来函数等函数同时使用如ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEAK,PEAKBARS,TROUGH,TROUGHBARS,REFX等可能会导致误差

(4)本函数运算量很大,将占用很多的CPU资源,导致行情刷新速度变慢,请谨慎使用!

资金使用率

用法:

MONEYRATIO返回当前的模组资金的使用率。

注意不能与未来函数同时使用ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEAK,PEAKBARS,TROUGH,TROUGHBARS,REFX等

本函数运算量很大,将占用很多的CPU资源,导致行情刷新速度变慢,请谨慎使用! 如

MONEYTOT模组权益

用法:

MONEYTOT返回当前模组权益(模组可用资金+持仓占用的保证金+浮动盈亏)。

注:

1、持仓占用的保证金=持仓均价*保证金比例*交易单位*手数

2、注意不能与未来函数同时使用如ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEAK,PEAKBARS,TROUGH,TROUGHBARS,REFX等

3、本函数运算量很大,将占用很多的CPU资源,导致行情刷新速度变慢,请谨慎使用! 模型写该函数模型一根K线上只支持一个信号,一根K线上信号固定后不会再出其他信号。没写该函数默认模型支持一根K线多个信号。

非过滤模型写该函数支持同一指令行连续发;不写该函数同一根K线上、不同根K线上同一指令行均不可连续发

用法:

过滤模型、非过滤模型、公式条件单模型,如果要实现一根K线上只有一个信号的效果,需要编写中加入MONO_SIGNAL函数。

加入MONO_SIGNAL函数限制的是一根K线上存在的信号个数,一根K线上只能有一个信号;不限制信号忽闪的次数

例:

1、

CLOSE>OPEN,BPK;

CLOSE<OPEN,SPK;

AUTOFILTER;

MONO_SIGNAL;

编写了MONO_SIGNAL的过滤模型,一根K线上只支持一个信号

当根K线上满足了CLOSE>OPEN并且BPK发出,并且已经确认固定,当根K线后续又满足了CLOSE<OPEN的条件也不会再发出SPK信号,需要等到下根K线再查找满足条件的信号 2、

CLOSE>OPEN,BK(1);

CLOSE<OPEN,SP(1);

MONO_SIGNAL;

(1)编写了MONO_SIGNAL的非过滤模型,一根K线上只支持一个信号,例如当根K线上满足了CLOSE>OPEN并且BK信号已经确认固定,即使当根K线后续又满足了CLOSE<OPEN的条件也不会再发出SP信号,需要等到下根K线再查找满足条件的信号

(2)编写了MONO_SIGNAL的非过滤模型,支持同一指令行连续发,即当根K线满足CLOSE>OPEN,发出BK信号,下根K线又满足CLOSE>OPEN的条件,可以继续发出BK信号 3、

CLOSE>OPEN,BK(1);

CONDITION_ORDER;

MONO_SIGNAL;

编写了MONO_SIGNAL的公式条件模型,一根K线上只支持一个信号,且每个指令行只执行

一次,全部指令行执行完毕后模型自动停止

注意:不编写MONO_SIGNAL函数,要实现多信号的模型:

(1)在模组加载中需要选择出信号立即下单,不进行信号复核、出信号N秒确认下单,不进行信号复核、K线走完前N秒确认信号下单,不进行复核这三个选项,信号发出并且为稳定信号时查找下一个满足条件的信号

(2)效果测试需要选择出信号立即下单,不进行复核

PROFIT模组逐笔浮盈

用法:

PROFIT返回当前的模组逐笔浮动盈亏。

(最新价-持仓均价)*手数*交易单位

注:持仓均价的计算

(1)初始化的持仓,如果为自动初始化,持仓均价为指令价;如果为手动初始化,持仓均价为初始化框中显示的持仓均价(默认显示上一信号指令价)

(2)模组运行过程中

a.信号执行方式为:K线走完确认信号下单或K线走完进行信号复核,持仓均价为开仓信号当根的收盘价

b.信号执行方式为:不进行信号复核,持仓均价为开仓信号当根的指令价

c.非过滤模型加仓后,持仓均价为收盘价或指令价的均值

(3)效果测试中

a.信号执行方式为:K线走完确认信号下单,持仓均价为开仓信号当根的收盘价

b.信号执行方式为:不进行信号复核或K线走完进行信号复核,持仓均价为开仓信号当根的指令价

c.非过滤模型加仓后,持仓均价为收盘价或指令价的均值

说明:

1、模组运行过程中具体的取值

(1)历史信号,PROFIT返回值根据效果测试计算得到

(2)模组初始化持仓后PROFIT返回值为(最新价-持仓均价)*手数*交易单位

(3)模组运行过程中

信号执行方式选择,K线走完或K线走完复核:

a.开仓信号当根,PROFIT返回值为0

b.开仓信号之后,未出现平仓信号时PROFIT返回值为(最新价-持仓均价)*手数*交易单位 c.平仓信号当根,PROFIT返回值为(最新价-持仓均价)*手数*交易单位

d.平仓信号持仓为0之后,PROFIT返回值为0

信号执行方式选择,不进行信号复核:

a.开仓信号当根,PROFIT返回值为(最新价-持仓均价)*手数*交易单位,盘中PROFIT返回值会根据最新价实时变动,K线走完返回值为(收盘价价-持仓均价)*手数*交易单位

b.开仓信号之后,未出现平仓信号时PROFIT返回值为(最新价-持仓均价)*手数*交易单位 c.平仓信号当根,持仓减为0,PROFIT返回值为0

2、效果测试中具体的取值

信号执行方式选择,K线走完或K线走完复核:

a.开仓信号当根,PROFIT返回值为0

b.开仓信号之后,未出现平仓信号时PROFIT返回值为(收盘价-持仓均价)*手数*交易单位

文华财经主要函数学习83_文华财经

c.平仓信号当根,PROFIT返回值为(收盘价-持仓均价)*手数*交易单位

d.平仓信号持仓为0之后,PROFIT返回值为0

注:信号执行方式选择K线走完确认信号下单时,持仓均价为收盘价;信号执行方式选择出信号立即下单,K线走完复核时,持仓均价为指令价

信号执行方式选择,不进行信号复核:

a.开仓信号当根,PROFIT返回值为(收盘价-持仓均价)*手数*交易单位

b.开仓信号之后,未出现平仓信号时PROFIT返回值为(收盘价-持仓均价)*手数*交易单位 c.平仓信号当根,持仓减为0,PROFIT返回值为0

注:

(1)如果为非过滤模型,减仓信号后(即平仓信号出现,持仓为减为0),PROFIT计算公式中,持仓均价不变,手数减少。

(2)PROFIT为资金管理函数,不支持主图加载

(3)不能与未来函数同时使用如ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEAK,PEAKBARS,TROUGH,TROUGHBARS,REFX等

(4)本函数运算量很大,将占用很多的CPU资源,导致行情刷新速度变慢,请谨慎使用! SETDEALPERCENT设置模型下单用的模组资金比例,以后每次下单都按模组资金的比例下单。

用法:

1、SETDEALPERCENT(fPercent)表示每次按资金的fPercent(范围1~100)下单。

(1)SETDEALPERCENT为资金管理函数,不能加载到主图

(2)效果测试根据效果测试中设置的资金、保证金计算下单手数

(3)模组运行中

如果初始化进来仓位,则根据初始资金+初始化持仓释放为可用资金计算下单手数

如果初始化仓位为0,则根据初始资金为可用资金计算下单手数

2、SETDEALPERCENT下单手数计算公式为

(可用资金+平仓释放的保证金+平仓盈亏)*资金比例/(最新价*保证金比例*交易单位)

3、SETDEALPERCENT计算下单手数非整数时,遵循自动向下取整的规则,即:若根据公式计算下单手数为12.9手,则实际按照12手下

单;计算手数小于1,不进行开仓操作

3、SETDEALPERCENT只作用于开仓指令,不作用于平仓指令

过滤模型中平仓指令平掉模组所有持仓;非过滤模型中根据平仓根据指令后面编写的手数平仓

例子:SETDEALPERCENT(20); //每次按资金比例的20%下单

取交易合约的限制拥有持仓数,自动取交易合约的限制拥有持仓数,取不到时返回100000

用法:

UNITLIMIT表示自动取交易合约的限制拥有持仓数,取不到时返回100000(如指数合约)

例子:(BKVOL+1)<=UNITLIMIT&&C>O,BK(1);//多头持仓再增加一手仍然小于交易合约的限制拥有的持仓数,并且满足收盘价大于开盘价的开仓条件时,买开一手。

VOLMARGIN持仓保证金

用法:

VOLMARGIN计算当前的持仓保证金。

注:该保证金为动态的保证金

(1)VOLMARGIN为资金管理函数,不能加载到主图

(2)效果测试

信号执行方式选择K线走完确认信号下单或出信号立即下单,K线走完进行信号复核:

a.开仓信号当根VOLMARGIN返回值不变

b.无信号有持仓K线VOLMARGIN返回值为:当根K线的收盘价*交易单位*手数*保证金比例(效果测试中设置的保证金) c.平仓信号当根VOLMARGIN返回值不变

d.无信号无持仓K线VOLMARGIN返回值为0

信号执行方式选择出信号立即下单,不进行复核

a.开仓信号当根VOLMARGIN返回值为:当根K线的收盘价*交易单位*手数*保证金比例(效果测试中设置的保证金)

b.有持仓K线VOLMARGIN返回值为:当根K线的收盘价*交易单位*保证金比例*手数(效果测试中设置的保证金)

c.无持仓K线VOLMARGIN返回值为0

(3)模组运行

a.历史信号返回值,根据效果测试计算得到

b.盘中运行,模组理论持仓大于0时,VOLMARGIN返回值为:最新价(若K线走完则为收盘价)*交易单位*手数*保证金比例(模组保证金参数中设置的保证金);模组理论持仓为0时,VOLMARGIN返回值为0

注:

1、模组中手动干预可影响理论持仓,故作用于VOLMARGIN的返

回值

2、不能与未来函数同时使用如ISLASTBAR,EMA2,ZIGZAG,BACKSET,PEAK,PEAKBARS,TROUGH,TROUGHBARS,REFX等

3、本函数运算量很大,将占用很多的CPU资源,导致行情刷新速度变慢,请谨慎使用

三 : 文华财经函数大全

文华财经函数大全

1、引用数据

AVPRICE引用均价(在盘后对于国内3个期货交易所指结算价)
SETTLE引用结算价(如果用在周期小于'日'的K线上如5分钟K线,一小时k线,每根k线返回的值表示这根k线当日开盘时到这根k线的为止的结算价(均价)
如果用在周期大于等于'日'的K线上,返回当根K线结束时间所在日的结算价.)
CLOSE引用收盘价(在盘中指最新价),也可简写为C。
HIGH引用最高价,也可简写为H。
LOW引用最低价,也可简写为L。
OPEN引用开盘价,也可简写为O。
OPI引用持仓量
REF(X,N)引用X在N个周期前的值
例:REF(CLOSE,5);
表示引用当前周期前第五个周期的收盘价
REFX(X,N)引用N个周期后的数据。(N为大于等于1的整数)
『未来函数』
例:REFX(CLOSE,5);
表示引用自当前周期后第五个周期的收盘价
VOL引用成交量,也可简写为V。
GETPRICE(N)根据文华码取出某一品种的最新价。
例子:
GETPRICE(1209);返回文华码为1209的合约品种的最新价。

2、金融统计

BACKSET(X,N)若X条件成立,则将当前位置到N周期前的数值设为1。『未来函数』
例:BACKSET(CLOSE>OPEN,3);表示当K线收阳时,自当前位置到3周期前的数值设为1
该函数参数支持变量计算如BACKSET(CLOSE>OPEN,VAR1);//VAR1是变量

BARSLAST(X)求上一次条件成立到当前的周期数。
例:
BARSLAST(X):上一次满足X条件到现在的K线根数。如果本根K线满足X条件,则BARSLAST(X)返回0.

COUNT(X,N)表示统计在N周期内满足X条件的周期数。若N=0则从本地数据的第1个有效值开始。
例:WR:=-100*(HHV(HIGH,N)-CLOSE)/(HHV(HIGH,N)-LLV(LOW,N));COUNT(WR>80,5);
表示统计在五个周期内满足WR>80的次数。

DMA(X,N)返回X的动态移动平均,其中N必须介于0及1之间。
计算方法:DMA(N)=DMA(N-1)*(1-A)+X(N)*A
其中DMA(N-1)为第(N-1)天的DMA值。

EMA(X,N)表示求X在N周期内的平滑移动平均。(指数加权)
计算方法:EMA(X,N)=[2*X+(N-1)*EMA(X,(N-1))]/(N+1)
其中EMA(X,(N-1))为第(N-1)天的EMA值。

EMA2(X,N)表示求X在N周期内的加权平均。(线性加权)
计算方法:EMA2(X,N)=(N*X0+(N-1)*X1+(N-2)*X2+...+1*XN)/(N+(N-1)+(N-2)+...+1),X0表示本周期值,X1表示上一星期期值。

HHV(X,N)得到X在N周期内的最高值,如果N=0,则从本地数据的第1个有效周期开始算起。
例:HHV(HIGH,13);求十三个周期内的最高价的最大值。

HHVBARS(X,N)得到X在N周期内的最高值位置到当前的周期数。如果N=0,则从本地数据的第1个有效周期开始算起。
例:HHVBARS(VOL,0); 求历史成交量最大的周期到当前的周期数。

LLV(X,N)得到X在N周期内的最小值,如果N=0,则从本地数据的第1个有效周期开始算起。
例:LLV(LOW,25);表示求二十五个周期内最低价的最小值。

LLVBARS(X,N)得到X在N周期内的最小值的位置到当前的周期数。如果N=0则从本地数据的第1个有效周期开始算起。
例:LLVBARS(VOL,0);求历史成交量最小的周期到当前的周期数。

MA(X,N)求X在N周期内的简单移动平均。
计算方法:MA=(A1+A2+A3+A4+A5)/5,求A在五个周期内的简单移动平均

ZIGZAG(X,P,N)之字转向,当X变化量超过P时转向,当N取1,P为百分比数;当N取0,P为价位差值绝对值。『未来函数』
例:ZIGZAG(HIGH,10,1);表示最高价的10%的之字转向

ZIGZAG(MA(HIGH,34),100,0);
表示3四个周期内最高价均线的100个价位的之字转向

PEAK(X,P,M,N)取得ZIGZAG前M个波峰的值。其中X为数据,P为转折值(如果N为1,这个值为百分比数,否则为价位差值绝对值),M为大于等于1的整数。『未来函数』
例:PEAK(HIGH,10,1,1);表示最高价的10%的之字转向的上1个波峰的数值;

PEAK(MA(HIGH,34),100,1,0);
表示3四个周期内最高价均线的100个价位的之字转向的上1个波峰的数值。

PEAKBARS(X,P,M,N)取得ZIGZAG前M个波峰到当前周期的周期数。其中X为数据,P为转折值(如果N为1,这个值为百分比数,否则为价位差值绝对值),M为大于等于1的整数。『未来函数』
例:PEAKBARS(HIGH,10,1,1);表示最高价的10%的之字转向的上1个波峰到当前的周期数。

PEAKBARS(MA(HIGH,34),100,1,0);表示3四个周期内最高价均线的100个价位的之字转向的上1个波峰到当前的周期数。

TROUGH(X,P,M,N)取得ZIGZAG前M个波谷的值。其中X为数据,P为转折值(如果N为1,这个值为百分比数,否则为价位差值绝对值),M为大于等于1的整数。『未来函数』
例:TROUGH(LOW,10,1,1);
表示最低价的10%的之字转向的上1个波谷的数值。

TROUGH (MA(LOW,34),100,1,0);
表示3四个周期内最低价均线的100个价位的之字转向的上1个波谷的数值。

TROUGHBARS(X,P,M,N)取得ZIGZAG前M个波谷到当前周期的周期数。其中X为数据,P为转折值(如果N为1,这个值为百分比数,否则为价位差值绝对值),M为大于等于1的整数。『未来函数』

TROUGH(LOW,10,1,1);
表示最低价的10%的之字转向的上1个波谷到当前的周期数。

TROUGH (MA(LOW,34),100,1,0);
表示3四个周期内最低价均线的100个价位的之字转向的上1个波谷到当前的周期数。

SAR(N,Step,Max)得到抛物转向值。N为计算周期,Step为步长,Max为极值。
(系统函数,计算步骤后台自动完成)
例:SAR(17,0.03,0.3);表示计算十七个周期抛物转向,步长为3%,极限值为30%。

SMA(X,N,M)得到X在N个周期内的移动平均,M为权重(M为常数)。
计算方法:SMA(N)=SMA(N-1)*(N-M)/N+X(N)*M/N。

SUM(X,N)得到X在N周期内的总和,如果N=0,则从第1个有效周期开始算起。
例: SUM(VOL,10);表示统计10周期内的成交量总和。

SUMBARS(X,A)得到X向前累加直到大于A时的周期数。

TRMA(X,N)求X在N周期内的三角移动平均。

TSMA(X,N)求X在N周期内的时间序列移动平均。
计算方法:TSMA(X,N)= FOCAST(X,N)+SLOPE(X,N)。

3、数理统计

AVEDEV(X,N)求X在N周期内的平均绝对偏差。
DEVSQ(X,N)数据偏差平方和。

FORCAST(X,N)得到X的N周期线性回归预测值。
例:FORCAST(CLOSE,5);表示求5周期线性回归预测

SLOPE(X,N)得到X在N周期内的线性回归的斜率
例:SLOPE(CLOSE,5);表示求5周期线性回归线的斜率

STD(X,N)得到X在N周期内的标准差
STDP(X,N)得到X在N周期内的总体标准差
VAR(X,N)得到X在N周期内的样本方差
VARP(X,N)得到X在N周期内的总体样本方差
数理统计举例说明:设1个数列,数列中数据的总个数为N,以今天(2005-10-14)五天内的A0605收盘价为例,N就为5。数列的内容为:{2766,2805,2814,2886,2885}。
1、算术平均值MA(CLOSE,5):数据总和除以总个数N。(2766+2805+2814+2886+2885)/5=2831.20。可以用公式MA(CLOSE,5),从今天的值上看出。
2、偏差:每个数据,减去算术平均值的结果。 2766-2831.20=-65.2, 2805-2831.20=-26.2,2814-2831.20=-17.2, 2886-2831.20=54.8, 2885-2831.20=53.8,各偏差相加,应该是等于0的。
3、平均绝对偏差AVEDEV(X,N):将偏差的绝对值相加,除以总个数N。(65.2+26.2+17.2+54.8+53.8)/5=43.44。
4、数据偏差平方和DEVSQ(X,N):将偏差的平方相加。 (-65.2)2+ (-26.2)2+ (-17.2)2+(54.8)2+ (53.8)2=11130.80。
5、总体样本方差VARP(X,N):将偏差的平方相加,总和除以总个数N。用公式可以这样算: (-65.2)2+ (-26.2)2+(-17.2)2+ (54.8)2+ (53.8)2/5=2226.16。
6、样本方差VAR(X,N):是总体方差的N/(N-1)倍。 2226.16*5/(5-1)=2782.70估算样本方差,总比总体样本方差大一点,当N够大时,两者趋于相等。
7、总体标准差STDP(X,N):方差的开方。 [(-65.2)2+ (-26.2)2+ (-17.2)2+ (54.8)2+(53.8)2/5]?=47.18。
8、标准差STD(X,N):估算样本方差的开方。 [2226.16*5/(5-1)]?=52.75同样,估算标准差也比总体标准差大一点,当N够大时,两者趋于相等。

4、逻辑判断

BETWEEN(A,B,C)判断条件“A位于B及C之间”是否成立,如果条件成立则返回1(yes),否则返回0(no)。
例:BETWEEN(CLOSE,MA5,MA40);
表示收盘价介于5日均线与40日均线之间。

CROSS(X,Y)表示X上穿Y。
例:CROSS(CLOSE,MA(CLOSE,5));
表示收盘线从下方向上穿过5日均线

EXIST(COND,N)判断N个周期内是否有满足条件COND的情况发生。
例:EXIST(CLOSE>REF(HIGH,1),10);
表示十个周期中是否存在收盘价大于前1个周期的最高价

EVERY(COND,N)判断过去N个周期内是否一直满足条件COND。
例:EVERY(CLOSE>OPEN,5);表示五个周期内一直是阳线

LAST(COND,N1,N2)判断过去N1到N2周期内是否一直满足条件COND。
例:LAST(CLOSE>OPEN,10,5);
表示从过去第十个周期到第五个周期内一直是阳线

LONGCROSS(A,B,N)如果A在前N个周期内都小于B,本周期上穿B,则返回1。否则返回0。
例:LONGCROSS(CLOSE,MA(CLOSE,10),20);
表示收盘线在10日均线之下持续20周期后从下向上穿过10日均线。

NOFILTER交易模型买卖指令信号过滤函数。(仅适用于交易模型的过滤)
设置模型对产生的交易指令不过滤,则出现的任何交易指令都会执行,如果没有设置“不过滤”,则产生的指令将按照如下规则过滤:
1.连续的同方向指令只有第1个有效,其他的将被过滤;
2.交易指令必须配对出现(例如:前面已经有了买开指令,则后面只允许出现卖平指令,其他的指令都被滤掉。这也就意味着,第1个指令只能是买开或者卖开指令,其他的都被过滤);
3.但是在进行模型效果测试及优化时,无论设置过滤与否,都按照前面的规则对指令进行了过滤。

IFELSE(C,A,B)(08版等以前版本里用IF函数表示)。
如果条件C成立则返回A值,否则返回B值.
例:IFELSE(CLOSE>REF(CLOSE,1),1,0);
表示若今日收盘价高于前一日收盘价,则返回1,否则返回0

ISDOWN判断该周期是否收阴。
ISEQUAL判断该周期是否平盘。
ISUP判断该周期是否收阳。

ISLASTBAR判断当前周期是否为最后一根K线。
例:ISLASTBAR; 如果是最后1个K线返回1(Yes),否则返回0(No)。

VALUEWHEN(COND,DATA)当条件COND满足时,取当时的DATA的值,否则取得前面1个满足条件COND的值。
例:VALUEWHEN(HIGH>REF(HIGH,5),HIGH);
表示当前最高价大于前5个周期最高价的最大值时返回当前最高价。

5、数学运算

ABS(X)求X的绝对值
例:ABS(SAR(17,0.03,0.3));返回抛物转向SAR(17,0.03,0.3)的绝对值。

ACOS(X)求X的反余弦值
ASIN(X)求X的反正弦值
ATAN(X)求X的反正切值
COS(X)返回X的余弦值
EXP(X)返回e的X次幂
CEILING(X)向上舍入,返回沿X数值增大方向最接近的整数。
FLOOR(X)向下舍入,返回沿X数值减小方向最接近的整数。
INTPART(X)取X的整数部分,返回沿X绝对值减小方向最接近的整数。

LN(X)得到X的自然对数,以e为底的对数。
例:LN(OPEN);求开盘价的自然对数。

LOG(X)得到X的常用对数,取得X的以10为底的对数。
例:LOG(OPEN);求开盘价的以10为底的对数。

MAX(A,B)求A,B中的较大者。
例:MAX(CLOSE-OPEN,0);
表示若收盘价大于开盘价返回它们的差值,否则返回0。

MIN(A,B)求A,B中的较小者。
例:MIN(OPEN,CLOSE);返回开盘价和收盘价中的较小值。

MOD(A,B)返回A对B得到模。
例:MOD(CLOSE,OPEN);收盘价除以开盘价所得余数

NOT(X)当X为0时返回1,否则返回0。
例:NOT(TIME=090530);表示该周期对应的时间不是9:05:30AM。

POW(A,B) 得到A的B次幂。
例:POW(CLOSE,2);求得收盘价的2次方。

REVERSE(X)取反,返回符号相反的数值。
例:REVERSE(LOW);返回-LOW。

SGN(X)得到X的符号,如果X>0则返回1,如果X<0则返回-1,否则返回0。
SIN(X)得到X的正弦值。

SQRT(X)得到X的平方根。
例:SQRT(CLOSE);收盘价的平方根。

SQUARE(X)得到X的平方。
例:SQUARE(CLOSE);收盘价的平方。
TAN(X)得到X的正切值。

6、时间函数

BARPOS取得当前K线的位置。
DATE取得当前周期的日数(700101-341231)。
DAY取得当前周期的日数(1-31)。
HOUR取得当前周期的小时数(0-23)。
MINUTE取得当前周期的分钟数(0-59)。
MONTH取得当前周期的月数(1-12)。

TIME取得当前周期的时间数(0-2359),
秒级周期返回值范围为:0-235959。

WEEKDAY取得当前周期的星期数(0-6)。
YEAR取得当前周期的年数(1970-2034)。


7、绘图

DRAWLINE(C1,P1,C2,P2,COLOR)当条件C1及C2均满足时,从P1画直线到P2,颜色为COLOR。
例:
DRAWLINE(MA18CLOSE,CLOSE,COLORCYAN);
表示当收盘价大于18日均线并且小于5日均线时,从开盘价画青色直线到收盘价。

DRAWTEXT(C,P,TEXT)表示当条件C满足时在P上写TEXT文字。
例:DRAWTEXT(CLOSE<OPEN&&REF(CLOSE,1)<REF(OPEN,1) &&REF(VOL,1)*1.1<VOL,LOW,'注');
表示连续两日收阴并且成交量比前一日至少多10%时,在最低价上写“注”字。

DRAWSL
(COND,DATA,SLOPE,LEN,EXPAND,COLOR)画斜线,当条件COND满足时,从DATA开始以每个周期相差SLOPE个点的斜率画斜线,划线长度为LEN个周期,EXPAND为线段的延长方式(0:不延伸;1:向左延伸;2:向右延伸;3:双向延伸)。
例:DRAWSL(LOW=LLV(LOW,50),LOW,5,3,2,COLORRED);
表示当前最低价等于50周期内的最小值时,从当前最小值开始以每隔五个点的斜率画长度为三个周期向右延伸的斜线,颜色为红色。

DRAWNUMBER
(COND,DATA,NUMBER,PRECISION,COLOR)画数字。当条件COND满足时,在DATA位置写数字NUMBER(为数组),精度为PRECISION(小数点后有几位数字)。
例:DRAWNUMBER(CLOSE/OPEN>1.08,HIGH,(CLOSE-OPEN)/OPEN*100,2,COLORRED);
表示当日涨幅大于8%时在最高价位置显示涨幅(相对开盘价的百分比)。

FILLRGN
(COND,DATA1,DATA2,COLOR)填充区域,当条件COND满足时,填充DATA1及DATA2包围的区域。
例:FILLRGN(MA5>MA10,MA5,MA10,COLORRED);
表示MA5>MA10时以红色填充MA5和MA10之间的区域。

POLYLINE
(COND,DATA,COLOR)画折线,当条件COND满足时,连接各个DATA点。
例:POLYLINE(CLOSE>=HHV(CLOSE,100),CLOSE,COLORRED);
表示在收盘价创100天新高点之间画折线。

PARTLINE
(COND,DATA,COLOR)画线段,条件COND满足时,以COLOR颜色的直线连接DATA各点。
例:PARTLINE(HIGH>REF(HIGH,1),HIGH,COLORRED);
表示当期最高价大于前期最高价用红色绘制最高价线段。

STICKLINE
(C,P1,P2,COLOR,EMPTY)如果条件C满足时,从P1到P2画柱线,颜色为Color,如果Empty取1,则为空心柱;如果Empty取0,则为实心柱。
例:STICKLINE(OPEN-CLOSE>0,OPEN,CLOSE,COLORCYAN,0);
表示当开盘价大于收盘价时,从开盘价到收盘价画青色的实心柱,即K线阴线的实体部分。

VERTLINE
(COND,COLOR)画垂直线,当条件COND满足时,画垂直线。
例:VERTLINE(HIGH>=HHV(HIGH,30),COLORRED);
表示在价格创30天新高时画垂直线。

08版本与09版本函数区别:
08版本函数09版本函数
SETTLE日线周期只有盘后才能引用当日的结算价。其他周期计算结果等同于AVPRICE引用结算价(如果用在周期小于'日'的K线上如5分钟K线,一小时k线,每根k线返回的值表示这根k线当日开盘时到这根k线的为止的结算价(均价)
如果用在周期大于等于'日'的K线上,返回当根K线结束时间所在日的结算价.)
BACKSET(X,N)『未来函数』函数参数不支持变量计算函数参数支持变量计算如:BACKSET(CLOSE>OPEN,VAR1);//VAR1是变量
DMA函数参数不支持变量计算DMA(X,N)返回X的动态移动平均,其中N必须介于0及1之间。N支持变量。
计算方法:DMA(N)=DMA(N-1)*(1-A)+X(N)*A
其中DMA(N-1)为第(N-1)天的DMA值。
HHV(X,N)函数参数N不支持变量计算函数参数N支持变量计算
LLV(X,N)函数参数N不支持变量计算函数参数N支持变量计算
COUNT(X,N)函数参数N不支持变量计算函数参数N支持变量计算


09版本新增函数:

GETPRICE(N)根据文华码取出某一品种的最新价。
例:
GETPRICE(1209);返回文华码为1209的合约品种的最新价。

RGB(R,G,B)自定义颜色函数。
R,G,B的数值范围都在0~255之间,例:RGB(225,225,225)表示白色

PARAM[参数名称,最小值,最大值,缺省值]在源码中定义参数。
例:PARAM[N,1,100,12]

MAN:MA(CLOSE,N);
表示参数为N,最小值为1,最大值为100,缺省值为12.
IF(COND)
A,COLOR;
ELSE
B, COLOR;条件循环函数。多层次循环时使用“{}”套用。
例:取得MA5、MA10、MA30三者中最大的数值
MA5:=MA(CLOSE,5);
MA10:=MA(CLOSE,10);
MA30:=MA(CLOSE,30);
IF(MA5>MA10)
MA5,COLORRED;
ELSE
{
IF(MA10>MA30)
MA10,COLORMAGENTA;
ELSE
MA30,COLORGREEN;
}
注意:区别于IFELSE函数,为了使多层次套用看的清楚,以上示例中将“{}”单独空行,实际使用中可以不必这样使用。

#IMPORT [CODE,PERIOD,FORMULA] ASVAR跨周期、跨合约取数据函数。
语句格式:
#IMPORT [CODE,PERIOD,FORMULA] AS VAR
CODE 文华码
(文华码见其他—>期货品种代码表)
PERIOD 被引用的周期
FORMULA 被引用指标名称

例:引用[豆粕1005]合约日K线图周期的指标[KDJ.FML] 中K值、D值:
#IMPORT [1205,DAY,KDJ] AS VARKDJ
K1:KDJ.K;
D1:KDJ.D;

注意点:
1.只能引用1个当前存在的‘.FML文件’(指标文件)中的变量,不支持同时引用多个指标和多个周期。
2.只能引用如下周期 MIN1 MIN3 MIN5 MIN10 MIN15 MIN30 HOUR1 HOUR3 HOUR8 DAYWEEK MONTH;
3.只能短周期引用长周期指标数据,分钟周期上可引用小时、日周期数据,不能日线周期上加载引用分钟数据的指标;
4.被引用的指标中不能存在引用。
5.如果不写文华码,默认引用当前合约。


模型注释符号在2009版本中修改为“//”。2008版本中模型注释语句使用在2009版本中时在{}前面增加//就可以。


(三)编辑平台可以使用的常数
常数意义
COLORRED红色
COLORGREEN绿色
COLORBLUE蓝色
COLORMAGENTA紫色
COLORYELLOW黄色
COLORLIGHTGREY浅灰色
COLORLIGHTRED浅红色
COLORLIGHTGREEN浅绿色
COLORLIGHTBLUE浅蓝色
COLORBLACK黑色
COLORWHITE白色
COLORCYAN青色
COLORSTICK画彩色柱线
VOLUMESTICK画成交量线
BAMBOOLINE画竹线
CIRCLEDOT画圆
OPISTICK画持仓量柱线
RGB(R,G,B)自定义颜色函数。
R,G,B的数值范围都在0~255之间。
例:RGB(225,225,225)表示白色
PARAM[参数名称,最小值,最大值,缺省值]在源码中定义参数。
例:PARAM[N,1,100,12]
MAN:MA(CLOSE,N);
表示参数为N,最小值为1,最大值为100,缺省值为12.

注意:在公式内即使你定义了某种颜色,在显示的时候也未必是此种颜色,取决于背景颜色当前页面里是否保了该指标的颜色及您是否在显示的时候改变了该指标的颜色设置。

欢迎交流:
QQ:419549257
Q群:138709040


(四)编辑平台的语法

1、关于公式名称:
公式的名称不可以和已经存在的公式重复。

2、关于参数:
每个自编公式最多可以定义4个参数,参数的定义如下,首先是参数名称,然后是参数的最小值,最大值,最后是参数的默认值。在定义参数时要注意的是参数名称不可以重复。

3、关于变量名称:
变量名称不可以互相重复,不可以和参数名重复,不可以和函数名称重复。

4、关于公式内容:
公式的每个语句应该以分号结束,包括最后一条语句。在数据公式的时候请您注意一定要使用半角输入。在编写公式的过程中,如果您不记得某个函数的确切写法,可以选择插入函数来插入函数。

5、如果您在编写公式之后,想给这个公式加上注释,说明之类的东西,可以使用公式说明来输入。

(五)编辑平台使用的交易指令
交易模型中的交易指令如下:

图示指令意义

BK 买开指令

BP买平指令

SK卖开指令

SP卖平指令

BPK买平同时等价等量买开指令

SPK卖平同时等价等量卖开指令

套利模型中的交易指令如下:

图示指令意义

BKSK甲合约买开;乙合约卖开信号

BPSP甲合约买平;乙合约卖平信号

SKBK甲合约卖开;乙合约买开信号

SPBP甲合约卖平;乙合约买平信号

请注意,在效果测试使用如下机制:
连续的开仓指令只使用第1个指令进行开仓,开仓时使用当时的全部资金,连续的平仓指令,只有第1个有效,平掉当时的全部持仓,其他的平仓指令算做错误指令!

(六)快速入门

1、如何把熟悉的技术指标转换成交易模型?

第1步:把KDJ指标公式COPY过来。
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;//{算出(收盘价-N周期内的最低价)/(N周期的最高价—N周期内的最低价)*100的值,用RSV来表示。}
BACKGROUNDSTYLE(1);{确定背景的样式,(钝化)}
K:SMA(RSV,M1,1),COLORWHITE;//{RSV的移动加权平均的值用K表示,并且画白色的线。}
D:SMA(K,M2,1),COLORYELLOW;//{K的移动加权平均的值用D表示,并且画黄色的线。}
J:3*K-2*D,COLORMAGENTA;//{3倍的K减去2倍的D的值用J表示,并且画紫色的线。}

第二步:原有公式主要是画线,所以稍作修改。如下:
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;//{第一行不需要修改}
//{第二行删除,在交易模型中不用钝化}
K:=SMA(RSV,M1,1);//{在“:”后加上“=”变为只定义不用画线,所以把后面的颜色函数(COLORWHITE)也去掉}
D:=SMA(K,M2,1);//{同上}
J:=3*K-2*D;//{同上}

第3步:把自己总结的交易条件写上,就可完成交易模型。如下:
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:=SMA(RSV,M1,1);
D:=SMA(K,M2,1);
J:=3*K-2*D;
CROSS(K,D),BK;//{K向上穿越D,发出买开交易指令}
CROSS(J,100),SP;//{J向上穿越100,发出卖平交易指令}
CROSS(D,K),SK;//{K向下穿越D,发出卖开交易指令}
CROSS(0,J),BP;//{J向下穿越0,发出买平交易指令}
//后为文字说明,编写模型时不用写出

2、如何编制交叉(金叉/死叉)类型的交易模型?
MA5:=MA(CLOSE,5);//{五个周期收盘价的简单移动平均}
MA10:=MA(CLOSE,10);//{十个周期收盘价的简单移动平均}
MA20:=MA(CLOSE,20);//{二十个周期收盘价的简单移动平均}
CROSS(MA10,MA20),BK;//{当MA10上穿MA20时,发出买入开仓交易指令}
CROSS(MA10,MA5),SP;//{当MA10上穿MA5时,发出卖出平仓交易指令}
CROSS(MA20,MA10),SK;//{当MA20上穿MA10时,发出卖出开仓交易指令}
CROSS(MA5,MA10),BP;//{当MA5上穿MA10时,发出买入平仓交易指令}//后为文字说明,编写模型时不用写出}


3、如何编制多条件类型的交易模型?
RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
K:=SMA(RSV,3,1);
D:=SMA(K,3,1);
J:=3*K-2*D;//{以上为KDJ公式}
MA5:=MA(CLOSE,5);
MA10:=MA(CLOSE,10);//{以上为定义五个周期收盘价的简单移动平均和十个周期收盘价的简单移动平均}
(CROSS(MA5,MA10)&&REF(J,1)<70)||(CROSS(K,D)&&J<30),BK;//{5周期均线上穿10周期均线并且前1个周期的J值(KDJ)少于70或者KD金叉时并且J值小于30时发出买入开仓交易指令}  
CROSS(D,K)&&REF(J,1)>70,SP;//{KD出现死叉并且前1个周期J值大于70时发出卖出平仓交易指令}
(CROSS(MA10,MA5)&&REF(J,1)>30)||(CROSS(D,K)&&J>70),SK;//{5周期均线下叉10周期均线并且前1个周期的J值(KDJ)大于30或者KD死叉时并且J值大于70时发出卖出开仓交易指令}
CROSS(K,D)&&REF(J,1)<30,BP;//{KD出现金叉并且前1个周期J值小于30时发出买入平仓交易指令}{{}内为文字说明,编写模型时不用写出}


4、如何编制REF(X,N)类型的交易模型?
A:=OPEN-(((REF(HIGH,1)-REF(LOW,1))+(REF(HIGH,2)-REF(LOW,2))+(REF(HIGH,3)-REF
  (LOW,3))+(REF(HIGH,4)-REF(LOW,4)))/4)*1.8;//{A=当前周期的开盘价 -[(1个周期前的最高价减最低价的差+2个周期前的最高价减最低价的差+3个周期前的最高价减最低价的差+4个周期前的最高价减最低价的差)/4]*1.8}
REF(CLOSE,1)<REF(CLOSE,2)&&REF(CLOSE,2)<REF(CLOSE,3)&&REF(CLOSE,3)<<br>REF(CLOSE,4)&&CLOSE>A,BPK;//{连续4个周期的收盘价小于前一星期期的收盘价并且当前周期的收盘价大于A时,发出买平并且买开(反手)交易指令}
REF(CLOSE,1)>REF(CLOSE,2)&&REF(CLOSE,2)>REF(CLOSE,3)&&REF(CLOSE,3)>REF(CLOSE,
  4)&&CLOSE<=A,SPK;//{连续4个周期的收盘价大于前一星期期的收盘价并且当前周期的收盘价小于等于A时,发出卖平并且卖开(反手)交易指令}{{}内为文字说明,编写模型时不用写出}


5、如何编制价差类型的交易模型?
MA5:=MA(CLOSE,5);//{五个周期收盘价的简单移动平均}
MA10:=MA(CLOSE,10);//{十个周期收盘价的简单移动平均}
CROSS(MA10,MA5)||(CLOSE-MA5)>8,SK;//{10周期均线上穿5周期均线或者收盘价与5周期均线的差值大于8时,发出卖出开仓交易指令}
(MA5-CLOSE)>6,BP;//{5周期均线与收盘价的差值大于6时,发出买入平仓交易指令} 
CROSS(MA5,MA10)||(MA5-CLOSE)>8,BK;//{5周期均线上穿10周期均线或者收盘价与5周期均线的差值大于8时,发出买入开仓交易指令}
(CLOSE-MA5)>6,SP;//{收盘价与5周期均线的差值大于6时,发出卖出平仓交易指令}{{}内为
  文字说明,编写模型时不用写出}


6、如何编制简单价差类型的套利模型?
CROSS(300,CLOSE),BKSK;//{CLOSE为2个品种的价差。当价差小于300时,买入开仓前一品种,卖出开仓后一品种}
CROSS(CLOSE,500),SPBP;//{当价差大于500时,卖出平仓前一品种,买入平仓后一品种}  
CROSS(CLOSE,600),SKBK;//{当价差大于600时,卖出开仓前一品种,买入开仓后一品种}  
CROSS(400,CLOSE),BPSP;//{当价差小于400时,买入平仓前一品种,卖出平仓后一品种}  

7、如何编制组合类型的套利模型?
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:=SMA(RSV,M1,1);
D:=SMA(K,M2,1);
J:=3*K-2*D;//{以上为KDJ公式}
CLOSE<300&&CROSS(K,D),BKSK;//{当价差小于300并且K上穿D时,买入开仓前一品种,卖出开仓后一品种}
CROSS(CLOSE,500)||CROSS(D,K),SPBP;//{当价差上穿500或者D上穿K时,卖出平仓前一品种,买入平仓后一品种}
CLOSE>600&&CROSS(D,K),SKBK;//{当价差大于600并且D上穿K时,卖出开仓前一品种,买入开仓后一品种}
CROSS(400,CLOSE)||CROSS(K,D),BPSP;//{当价差下穿400或者K上穿D时,买入平仓前一品种,卖出平仓后一品种}


技术指标模型大全

1 ADTM模型
DTM:=IFELSE(OPEN<=REF(OPEN,1),0,MAX((HIGH-OPEN),(OPEN-REF(OPEN,1))));
DBM:=IFELSE(OPEN>=REF(OPEN,1),0,MAX((OPEN-LOW),(OPEN-REF(OPEN,1))));
STM:=SUM(DTM,N);
SBM:=SUM(DBM,N);
ADTM:=IFELSE(STM>SBM,(STM-SBM)/STM,IFELSE(STM=SBM,0,(STM-SBM)/SBM));
ADT美眉A:=MA(ADTM,M);
ADT美眉A


ADT美眉A>Q,SPK;


2 ARBR模型

AR := SUM(HIGH-OPEN,N)/SUM(OPEN-LOW,N)*100;
BR :=SUM(MAX(0,HIGH-REF(CLOSE,1)),N)/SUM(MAX(0,REF(CLOSE,1)-LOW),N)*100;
(BR<100),BK;//BR比AR低,且指标处于低于100以下时,可考虑逢低买进。
(BR-REF(BR,M))>P && AR-REF(AR,M)

3 ASI模型

LC:=REF(CLOSE,1);
AA:=ABS(HIGH-LC);
BB:=ABS(LOW-LC);
CC:=ABS(HIGH-REF(LOW,1));
DD:=ABS(LC-REF(OPEN,1));
R:=IFELSE(AA>BB&&AA>CC,AA+BB/2+DD/4,IFELSE(BB>CC&&BB>AA,BB+AA/2+DD/4,CC+DD/4));
X:=(CLOSE-LC+(CLOSE-OPEN)/2+LC-REF(OPEN,1));
SI:=16*X/R*MAX(AA,BB);
ASI:=SUM(SI,0);
ASI>REF(ASI,1),BPK;//当前周期ASI指标数值大于前一星期期开多;
ASI

4 ATR模型
TR :=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR := MA(TR,N);
C>MA(C,10) && CROSS(TR,ATR) && ATR>REF(ATR,1)&& ISDOWN,BK;//在上升通道中,ATR真实波幅向上时,且白线上穿黄线,此时K线收阴者买入开仓;
CROSS(MA(C,10),C),SP;//当价格下穿10周期均线平多仓。

5 B3612模型
B36 := MA(CLOSE,3)-MA(CLOSE,6);
B612 := MA(CLOSE,6)-MA(CLOSE,12);
B36
B36>REF(B36,1) && B612>REF(B612,1),BPK;//本周期B36与B612分别小于前一星期期B36与B612时平多开空。

6 BBI模型
BBI1:=(MA(CLOSE,N1)+MA(CLOSE,N2)+MA(CLOSE,N3)+MA(CLOSE,N4))/4;
MA54:=MA(C,54);//以MA54来判断当前价格处于高价区还是低价区。
C
C>MA54 && CROSS(BBI1,C),SPK;

7 BIAS模型
BIAS1 := (CLOSE-MA(CLOSE,L1))/MA(CLOSE,L1)*100;
BIAS1>M1 && MA(C,54)REF(C,54),SK;
BIAS1<-1*P && MA(C,54)P &&MA(C,54)>REF(C,54),BP;
BIAS1M2 && MA(C,54)>REF(C,54),BK;
BIAS1>P && MA(C,54)

REF(C,54),SP;

8 BOLL模型
MID:=MA(CLOSE,N);
TMP2:=STD(CLOSE,M);
TOP:=MID+P*TMP2;
BOTTOM:=MID-P*TMP2;
A:=TOP-C;
B:=C-BOTTOM;
CROSS(C,BOTTOM),BPK;
CROSS(TOP,C),SPK;

9 CCI模型
TYP:=(CLOSE+HIGH+LOW)/3;
CCI:=(TYP-MA(TYP,N))/(0.015*AVEDEV(TYP,N));
CROSS(CCI,100),BK;//CCI从+100~-100的常态区,由下往上突破+100天线时,为买入开仓。
CROSS(100,CCI),SP;//CCI从+100天线之上,由上往下跌破天线时,为卖出平仓。
CROSS(100,CCI),SK;//CCI从+100~-100的常态区,由上往下跌破-100地线时,为卖出开仓。
CROSS(CCI,100),BP;//CCI从-100下方,由下往上突破-100地线时,为买入平仓。

10 CDPV日内模型
PT := REF(HIGH,1)-REF(LOW,1);
CDP := (REF(HIGH,1) + REF(LOW,1) + REF(CLOSE,1))/3;
AH :=MA(CDP + PT,N);
AL :=MA(CDP - PT,N);
NH :=MA(2*CDP-LOW,N);
NL :=MA(2*CDP-HIGH,N);
NQ:=(AH+AL+NH+NL)/4;//计算出CDP中四条指标线的均值NQ
NQ>LLV(NQ,M)*(1+M1*0.001) && TIME>=0900 &&TIME<1455,BP;//当NQ上涨超过前M周期最低值的千分之M1,买开;
NQ=1455,SP;//当NQ下跌超过前M周期最高值的千分之M1,卖开;
NQ=0900 && TIME<1455,SK;//当NQ下跌超过前M周期最高值的千分之M1,卖开;
NQ>LLV(NQ,M)*(1+M1*0.001) ||TIME>=1455,BP;//当NQ上涨超过前M周期最低值的千分之M1,买开。

11 CDP日内模型
PT := REF(HIGH,1)-REF(LOW,1);
CDP := (REF(HIGH,1) + REF(LOW,1) + REF(CLOSE,1))/3;
AH :=MA(CDP + PT,N);
AL :=MA(CDP - PT,N);
NH :=MA(2*CDP-LOW,N);
NL :=MA(2*CDP-HIGH,N);
NQ:=(AH+AL+NH+NL)/4;//计算出CDP中四条指标线的均值NQ
NQ>LLV(NQ,M)*(1+M1*0.001),BPK;//当NQ上涨超过前M周期最低值的千分之P,买平开;
NQ

12 CDP模型
PT := REF(HIGH,1)-REF(LOW,1);
CDP := (REF(HIGH,1) + REF(LOW,1) + REF(CLOSE,1))/3;
AH :=MA(CDP + PT,N);
AL :=MA(CDP - PT,N);
NH :=MA(2*CDP-LOW,N);
NL :=MA(2*CDP-HIGH,N);
NQ:=(AH+AL+NH+NL)/4;//计算出CDP中四条指标线的均值NQ
NQ>LLV(NQ,M)*(1+M1*0.001),BPK;//当NQ上涨超过前M周期最低值的千分之M1,买平开;
NQ

13 CR模型
MID := (HIGH+LOW+CLOSE)/3;
CR:=SUM(MAX(0,HIGH-REF(MID,1)),N)/SUM(MAX(0,REF(MID,1)-LOW),N)*100;
CR
CR>N2,SPK;//CR下跌超过N2时,卖平开。


14说明 文中“//” 后面的文字是解说,实际编写与测试过程中,不用编写。
15 DBCD模型
BIAS:=(CLOSE-MA(CLOSE,N))/MA(CLOSE,N);
DIF:=(BIAS-REF(BIAS,M));
DBCD:=SMA(DIF,T,1);
美眉:=100000*MA(DBCD,5);
美眉>REF(美眉,1),BPK;
美眉

16 DDI模型
TR:=MAX(ABS(HIGH-REF(HIGH,1)),ABS(LOW-REF(LOW,1)));
DMZ:=IFELSE((HIGH+LOW)<=(REF(HIGH,1)+REF(LOW,1)),0,MAX(ABS(HIGH-REF(HIGH,1)),ABS(LOW-REF(LOW,1))));
DMF:=IFELSE((HIGH+LOW)>=(REF(HIGH,1)+REF(LOW,1)),0,MAX(ABS(HIGH-REF(HIGH,1)),ABS(LOW-REF(LOW,1))));
DIZ:=SUM(DMZ,N)/(SUM(DMZ,N)+SUM(DMF,N));
DIF:=SUM(DMF,N)/(SUM(DMF,N)+SUM(DMZ,N));
DDI:=DIZ-DIF;
DDI>0,BPK;//DDI大于零平空开多;
DDI<0,SPK;//DDI小于零平多开空。

17 DMA模型
DDD := (MA(CLOSE,SHORT)-MA(CLOSE,LONG));
AMA := MA(DDD,M);
CROSS(DDD,AMA),BPK;//DMA向上交叉AMA,买进;
CROSS(AMA,DDD),SPK;//DMA向下交叉AMA,卖出。

18 DMI-QL模型
TR :=SMA(MAX(MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1))),ABS(LOW-REF(CLOSE,1))),N,1);
HD := HIGH-REF(HIGH,1);
LD := REF(LOW,1)-LOW;
DMP:= SMA(IFELSE(HD>0&&HD>LD,HD,0),N,1);
D美眉:= SMA(IFELSE(LD>0&&LD>HD,LD,0),N,1);
PDI:= DMP*100/TR;
MDI:= D美眉*100/TR;
ADX:= SMA(ABS(MDI-PDI)/(MDI+PDI)*100,N,1);
ADXR:=(ADX+REF(ADX,M))/2;
CROSS(PDI,MDI),BK;//PDI上穿MDI开多仓。
CROSS(MDI,PDI),SK;//PDI下穿MDI开空仓。
ADX
ADX

19 DMI日内模型
TR :=SMA(MAX(MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1))),ABS(LOW-REF(CLOSE,1))),N,1);
HD := HIGH-REF(HIGH,1);
LD := REF(LOW,1)-LOW;
DMP:= SMA(IFELSE(HD>0&&HD>LD,HD,0),N,1);
D美眉:= SMA(IFELSE(LD>0&&LD>HD,LD,0),N,1);
PDI:= DMP*100/TR;
MDI:= D美眉*100/TR;
ADX:= SMA(ABS(MDI-PDI)/(MDI+PDI)*100,N,1);
ADXR:=(ADX+REF(ADX,M))/2;
CROSS(PDI,MDI) && TIME>0900 &&TIME<1450,BK;//PDI上穿MDI开多仓。
CROSS(MDI,PDI) && TIME>0900 &&TIME<1450,SK;//PDI下穿MDI开空仓。
ADX=1450,BP;//当ADX回落超过前N0周期内的M0%时平多仓。或收盘前平仓。
ADX=1450,SP;//当ADX回落超过前N0周期内的M0%时平空仓。或收盘前平仓

20 DPO模型
DPO:=CLOSE-REF(MA(CLOSE,20),11);

CROSS(DPO,O),BK;//当DPO指标数值上穿0线,开多仓。
DPO
CROSS(0,DPO),SK;//DPO下穿0线时开空仓。
DPO>LLV(DPO,N)*(1-0.01*M),BP;//当DPO指标上涨超过N日最低点的M%时平空仓。

21 EMA2模型
EMA210:=EMA2(CLOSE,10);//定义10周期收盘价的加权平均值。
EMA220:=EMA2(CLOSE,20);//定义20周期收盘价的加权平均值。
CROSS(EMA210,EMA220),BK;//10周期均线上穿20周期均线,发出买入开仓指令。
CROSS(EMA220,EMA210),SK;//10周期均线下穿20周期均线,发出卖出开仓指令。
EMA210
EMA210>REF(EMA210,1)&&EMA220>REF(EMA220,1),BP;//10周期均线和20周期均线都下降时,发出平空仓指令。

22 EMA模型
EMA10:=EMA(CLOSE,10);//定义10周期收盘价的指数平滑移动平均值。
EMA20:=EMA(CLOSE,20);//定义20周期收盘价的指数平滑移动平均值。
CROSS(EMA10,EMA20),BK;//10周期均线上穿20周期均线,发出买入开仓指令。
CROSS(EMA20,EMA10),SK;//10周期均线下穿20周期均线,发出卖出开仓指令。
EMA10
EMA10>REF(EMA10,1)&&EMA20>REF(EMA20,1),BP;//10周期均线和20周期均线都上升时,发出平空仓指令。

23 ENV模型
UPPER := MA(CLOSE,N1)*(1+N2/100);
LOWER := MA(CLOSE,N1)*(1-N2/100);
//以上为ENV公式
CROSS(CLOSE,UPPER),BPK;//收盘价上穿UPPER,买平并买开。
CROSS(LOWER,CLOSE),SPK;//收盘价下穿LOWER,卖平并卖开。

24 EXPMA模型
MA1:=EMA(CLOSE,P1);
MA2:=EMA(CLOSE,P2);
MA3:=EMA(CLOSE,P3);
MA4:=EMA(CLOSE,P4);
//以上为EXPMA指标
CROSS(MA2,MA3)&&CLOSE>MA4,BK;//当MA2上穿MA3,并且收盘价大于MA4,发出买入开仓交易指令。
CROSS(MA2,MA1),SP;//当MA2上穿MA1,发出卖出平仓交易指令。
CROSS(MA3,MA2)&&CLOSE
CROSS(MA1,MA2),BP;//当MA1上穿MA2,发出买入平仓交易指令。

25 HCL模型
MAH:=MA(HIGH,N);
MAL:=MA(LOW,N);
MAC:=MA(CLOSE,N);
//以上为HCL指标公式
MAH>REF(MAH,1)&&MAL>REF(MAL,1)&&MAC>REF(MAC,1),BPK;//MAH,MAL,MAC同时上涨,买平并买开。
MAH

26 KDJ模型
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;//定义RSV
K:=SMA(RSV,M1,1); //定义K
D:=SMA(K,M2,1); //定义D
J:=3*K-2*D; //定义J
//以上为KDJ指标公式
J<30&&CROSS(K,D),BPK;//J值小于30并且K、D金叉,买平并买开。
J>70&&CROSS(D,K),SPK;//J值大于70并且K、D死叉,卖平并卖开。

27 KD模型
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:=SMA(RSV,M1,1);
D:=SMA(K,M2,1);
//以上为KD指标公式
CROSS(K,D),BPK;//K,D金叉,买平并买开。
CROSS(D,K),SPK;//K,D死叉,卖平并卖开。

28 LW&R模型
RSV:=(CLOSE-HHV(HIGH,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;//定义RSV
LWR1:=SMA(RSV,3,1);//定义LWR1
LWR2:=SMA(LWR1,3,1);//定义LWR2
CROSS(LWR1,LWR2),BPK;//LWR1上穿LWR2,买平并买开
CROSS(LWR2,LWR1),SPK;//LWR1下穿LWR2,卖平并卖开

29 LW&R模型1
RSV:= (CLOSE-HHV(HIGH,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
LWR1:=SMA(RSV,M1,1);
LWR2:=SMA(LWR1,M2,1);
//以上为LW&R指标公式
LWR1<30&&CROSS(LWR1,LWR2),BK;//LWR1小于30,并且LWR1上穿LWR2,买开。
LWR1>70&&CROSS(LWR2,LWR1),SK;//LWR一大于70,并且LWR1下穿LWR2,卖开。
LWR1>80&&LWR2>70,BP;//LWR一大于80,并且LWR两大于70,平空仓。
LWR1<20&&LWR2<30,SP;//LWR1小于20,并且LWR2小于30,平多仓。

30 MACD模型
DIFF := EMA(CLOSE,SHORT) - EMA(CLOSE,LONG);//定义DIFF
DEA := EMA(DIFF,M);//定义DEA
//以上为MACD指标公式
(DIFF<0)&&(DEA<0)&&(CROSS(DIFF,DEA)),BPK;//DIFF小于0并且DEA小于0并且DIFF上穿DEA,买平并买开
(DIFF>0)&&(DEA>0)&&(CROSS(DEA,DIFF)),SPK;//DIFF大于0并且DEA大于0并且DIFF下穿DEA,卖平并卖开

31 MASS模型
MASS:=SUM(EMA((HIGH-LOW),N1)/EMA(EMA((HIGH-LOW),N1),N1),N2);//定义MASS
MA9:=MA(CLOSE,9);//定义9周期收盘价的均线
CROSS(26.5,MASS)&&MA9>REF(MA9,1),SPK;//MASS下穿26.5,并且MA9在上升趋势中,卖平并卖开
CROSS(26.5,MASS)&&MA9

32 MA模型
MA1:=MA(CLOSE,N);//定义10周期均线
MA1>REF(MA1,1)&&REF(MA1,1)>REF(MA1,2)&&REF(MA1,3)>REF(MA1,2)&&REF(MA1,4)>REF(MA1,3),BPK;//上拐时买平并买开
MA1

33 MA组合模型
MA1:=MA(CLOSE,P1);
MA2:=MA(CLOSE,P2);
MA3:=MA(CLOSE,P3);
MA4:=MA(CLOSE,P4);
//已上是MA组合指标公式
CROSS(MA2,MA3)&&CLOSE>MA4,BK;//当MA2上穿MA3,并且收盘价大于MA4,发出买入开仓交易指令
CROSS(MA2,MA1),SP;//当MA2上穿MA1,发出卖出平仓交易指令
CROSS(MA3,MA2)&&CLOSE
CROSS(MA1,MA2),BP;//当MA1上穿MA2,发出买入平仓交易指令

34 MFI模型
TYP := (HIGH + LOW + CLOSE)/3;
MR:=SUM(IFELSE(TYP>REF(TYP,1),TYP*VOL,0),N)/SUM(IFELSE(TYP
MFI:=100-(100/(1+MR));
//以上是MFI指标公式
MFIREF(CLOSE,1)&&MFI>20&&MFI<80,BPK;//当MFI处于下降趋势,并且收盘价处于上升趋势,并且MFI大于20并且小于80,买平并买开
MFI>REF(MFI,1)&&CLOSE20&&MFI<80,SPK;//当MFI处于上升趋势,并且收盘价处于下降趋势,并且MFI大于20并且小于80,卖平并卖开

35 MICD模型
MI:=CLOSE-REF(CLOSE,1);
AMI:=SMA(MI,N,1);
DIF:=MA(REF(AMI,1),N1)-MA(REF(AMI,1),N2);
MICD:=SMA(DIF,10,1);
//上述是MICD指标公式
(DIF<0)&&(MICD<0)&&(CROSS(DIF,MICD)),BPK;//DIF小于0并且MICD小于0并且DIFF上穿MICD,买平并买开
(DIF>0)&&(MICD>0)&&(CROSS(MICD,DIF)),SPK;//DIF大于0并且MICD大于0并且DIFF下穿MICD,卖平并卖

36 MIKE模型
TYP:=(HIGH+LOW+CLOSE)/3;
LL:=LLV(LOW,N);
HH:=HHV(HIGH,N);
WR:=TYP+(TYP-LL);
MR:=TYP+(HH-LL);
SR:=2*HH-LL;
WS:=TYP-(HH-TYP);
MS:=TYP-(HH-LL);
SS:=2*LL-HH;
//上述是MIKE指标公式
WRREF(WR,2) && MRREF(MR,2) &&SRREF(SR,2),BPK;//WR,MR,SR同时下拐,买平并买开
WS>REF(WS,1)&&REF(WS,1)REF(MS,1)&&REF(MS,1)REF(SS,1)&&REF(SS,1)

37 MI模型
A:=CLOSE-REF(CLOSE,N);
MI:=SMA(A,N,1);
//上述是MI指标公式
CROSS(A,MI),BPK;//A金叉MI,买平并买开
CROSS(MI,A),SPK;//A死叉MI,卖平并卖开

38 MTM模型
MTM:=CLOSE-REF(CLOSE,N);//定义MTM
CROSS(MTM,0),BPK;//MTM上穿0轴,买平并买开
CROSS(0,MTM),SPK;//MTM下穿0轴,卖平并卖开

39 MV模型
MV1:=SMA(VOL,N,1);
MV2:=SMA(VOL,M,1);
//上述是MV指标公式
MA60:=MA(CLOSE,60);//定义60周期收盘价均线
CLOSE>MA60&&MV1>REF(MV1,1)&&MV2>REF(MV2,1),BPK;//收盘价在60均线上,并且MV1,MV2处于上升状态中,买平并买开
CLOSEREF(MV1,1)&&MV2>REF(MV2,1),SPK;//收盘价在60均线下,并且MV1,MV2处于上升状态中,卖平并卖

40 PRICEOSC模型
PRICEOSC:=(MA(CLOSE,SHORT)-MA(CLOSE,LONG))/MA(CLOSE,SHORT)*100;
CROSS(PRICEOSC,0),BPK;//向上突破0为买点
CROSS(0,PRICEOSC),SPK;//向下突破0为卖点

41 PUBU模型
PB1:=PUBU(CLOSE,0);
PB2:=PUBU(CLOSE,1);
PB3:=PUBU(CLOSE,2);
PB4:=PUBU(CLOSE,3);
PB5:=PUBU(CLOSE,4);
PB6:=PUBU(CLOSE,5);
CROSS(PB1,PB6),BPK;//短线瀑布线向上穿越长线瀑布,买入。
CROSS(PB6,PB1),SPK;//短线瀑布线向下穿越长线瀑布,卖出。

42 RC模型
RC:=CLOSE/REF(CLOSE,N);
ARC:=SMA(REF(RC,1),N,1);
MA10:=MA(CLOSE,10);
MA20:=MA(CLOSE,20);
CROSS(MA10,MA20)&&ARC>1,BPK;//MA10上穿MA20且RC指标在1上,做多
CROSS(MA20,MA10)&&ARC<=1,SPK;//MA0下穿MA20且RC指标在1下,做空

43 REF模型示例
A:=OPEN-(((REF(HIGH,1)-REF(OPEN,1))+(REF(HIGH,2)-REF(OPEN,2))+(REF(HIGH,3)-REF(OPEN,3))+(REF(HIGH,4)-REF(OPEN,4)))/4)*1.8;
//A=当前周期的开盘价 -[(1个周期前的最高价减最低价的差+2个周期前的最高价减最低价的差+3个周期前的最高价减最低价的差+4个周期前的最高价减最低价的差)/4]*1.8

REF(CLOSE,1)A,BPK;
//连续4个周期的收盘价小于前一星期期的收盘价并且当前周期的收盘价大于A时,发出买平并且买开(反手)交易指令
REF(CLOSE,1)>REF(CLOSE,2)&&REF(CLOSE,2)>REF(CLOSE,3)&&REF(CLOSE,3)>REF(CLOSE,4)&&CLOSE<=A,SPK;
//连续4个周期的收盘价大于前一星期期的收盘价并且当前周期的收盘价小于等于A时,发出卖平并且卖开(反手)交易指令

44 ROC模型
ROC:=(CLOSE-REF(CLOSE,N))/REF(CLOSE,N)*100;
ROCMA:=MA(ROC,M);
C>REF(HHV(C,N1),1)&&ROC
CROCMA,BPK;//价格创新低,ROC未配合下降,显示下跌动力减弱

45 RSI模型
LC:=REF(CLOSE,1);//定义LC
RSI1:=SMA(MAX(CLOSE-LC,0),N1,1)/SMA(ABS(CLOSE-LC),N1,1)*100;//定义RSI1
RSI2:=SMA(MAX(CLOSE-LC,0),N2,1)/SMA(ABS(CLOSE-LC),N2,1)*100;//定义RSI2
REF(RSI1,1)<40&&CROSS(RSI1,RSI2),BPK;//上周期的RSI1<40并且RSI1上穿RSI2,买平并买开
REF(RSI1,1)>60&&CROSS(RSI2,RSI1),SPK;//上周期的RSI1>60并且RSI1下穿RSI2,卖平并卖开

46 SAR模型
SARLINE:=ABS(SAR(N,STEP,MVALUE));//定义SARLINE
CROSS(CLOSE,SARLINE),BPK;//最新价上穿SARLINE,买平并买开
CROSS(SARLINE,CLOSE),SPK;//最新价下穿SARLINE,卖平并卖开


47 WR模型
WR:=-100*(HHV(HIGH,14)-CLOSE)/(HHV(HIGH,14)-LLV(LOW,14));
MA60:=MA(CLOSE,60);
C>MA60&&WR<-80,BK;//在60天均线上wr<-80 开多仓
C>MA60&&WR>-20,SP;//在60天均线上wr>-20平多仓
C-20,SK;//在60天均线下wr>-20开空仓
C<-80,BP;//在60天均线下wr<-85平空仓


48 三减六日乖离
B36 := MA(CLOSE,3)-MA(CLOSE,6);
B612 : =MA(CLOSE,6)-MA(CLOSE,12);
REF(B36>REF(HHV(B36,N),1),1)&&B36
REF(B36REF(B36,1),BPK;//反之,买进


49 交叉型模型示例
MA5:=MA(CLOSE,5); //五个周期收盘价的简单移动平均
MA10:=MA(CLOSE,10);//十个周期收盘价的简单移动平均
MA20:=MA(CLOSE,20);//二十个周期收盘价的简单移动平均

CROSS(MA10,MA20),BK;//当MA10上穿MA20时,发出买入开仓交易指令
CROSS(MA10,MA5),SP;//当MA10上穿MA5时,发出卖出平仓交易指令
CROSS(MA20,MA10),SK;//当MA20上穿MA10时,发出卖出开仓交易指令
CROSS(MA5,MA10),BP;//当MA5上穿MA10时,发出买入平仓交易指令

50 价差型模型示例
MA5:=MA(CLOSE,5);//五个周期收盘价的简单移动平均
MA10:=MA(CLOSE,10);//十个周期收盘价的简单移动平均

CROSS(MA10,MA5)||(CLOSE-MA5)>8,SK;
//10周期均线上穿5周期均线或者收盘价与5周期均线的差值大于8时,发出卖出开仓交易指令
(MA5-CLOSE)>6,BP;
//5周期均线与收盘价的差值大于6时,发出买入平仓交易指令
CROSS(MA5,MA10)||(MA5-CLOSE)>8,BK;
//5周期均线上穿10周期均线或者收盘价与5周期均线的差值大于8时,发出买入开仓交易指令
(CLOSE-MA5)>6,SP;
//收盘价与5周期均线的差值大于6时,发出卖出平仓交易指令


51 多条件模型示例
RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;
K:=SMA(RSV,3,1);
D:=SMA(K,3,1);
J:=3*K-2*D;
//以上为KDJ公式

MA5:=MA(CLOSE,5);
MA10:=MA(CLOSE,10);
//以上为定义五个周期收盘价的简单移动平均和十个周期收盘价的简单移动平均

(CROSS(MA5,MA10)&&REF(J,1)<70)||(CROSS(K,D)&&J<30),BK;
//5周期均线上穿10周期均线并且前1个周期的J值(KDJ)少于70或者KD金叉时并且J值小于30时发出买入开仓交易指令
CROSS(D,K)&&REF(J,1)>70,SP;
//KD出现死叉并且前1个周期J值大于70时发出卖出平仓交易指令
(CROSS(MA10,MA5)&&REF(J,1)>30)||(CROSS(D,K)&&J>70),SK;
//5周期均线下叉10周期均线并且前1个周期的J值(KDJ)大于30或者KD死叉时并且J值大于70时发出卖出开仓交易指令
CROSS(K,D)&&REF(J,1)<30,BP;
// KD出现金叉并且前1个周期J值小于30时发出买入平仓交易指令

52 慢速KD模型
RSV:= (CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
FASTK:=SMA(RSV,M1,1);
K:=SMA(FASTK,M2,1);
D:=SMA(K,M3,1);
CROSS(K,D),BPK;
CROSS(D,K),SPK;

53 指标转模型示例
//第1步:把KDJ指标公式COPY过来
//第二步:在":"后加上"="变为只定义不用画线,所以把后面的颜色函数(COLORWHITE)也去掉
//第3步:把自己总结的交易条件写上,就可完成交易模型。如下:
//以下是把KDJ指标公式COPY过来,进行修改后的语句

RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:=SMA(RSV,M1,1);
D:=SMA(K,M2,1);
J:=3*K-2*D;
//以下是加入的交易指令

CROSS(K,D),BK;//K向上穿越D,发出买开交易指令
CROSS(J,100),SP;//J向上穿越100,发出卖平交易指令
CROSS(D,K),SK;//K向下穿越D,发出卖开交易指令
CROSS(0,J),BP;//J向下穿越0,发出买平交易指令

54 时间函数示例
MA5:=MA(CLOSE,5);//定义5周期的简单移动平均线
MA10:=MA(CLOSE,10);//定义10周期的简单移动平均线

TIME>=0905&&TIME<1455&&CROSS(MA5,MA10),BK;//在9点05分之后14点55分之前的时间段内出现5周期线金*10周期线后买开
TIME>=1455,BP;//当时间到14点55分时自动发出买平指令
TIME>=0905&&TIME<1455&&CROSS(MA10,MA5),SK;//在9点05分之后14点55分之前的时间段内出现5周期线死*10周期线后卖开
TIME>=1455,SP;//当时间到14点55分时自动发出卖平指令

四 : NPV 函数 (财务函数)

NPV 函数

适用于:Microsoft Office Excel 2007

通过使用贴现率以及一系列未来支出(负值)和收入(正值),返回一项投资的净现值。

语法

NPV(rate,value1,value2, ...)

Rate    为某一期间的贴现率,是一固定值。

Value1, value2, ...    代表支出及收入的 1 到 254 个参数。

Value1, value2, ...在时间上必须具有相等间隔,并且都发生在期末。

NPV 使用 Value1,Value2, … 的顺序来解释现金流的顺序。所以务必保证支出和收入的数额按正确的顺序输入。

如果参数为数值、空白单元格、逻辑值或数字的文本表达式,则都会计算在内;如果参数是错误值或不能转化为数值的文本,则被忽略。

如果参数是一个数组或引用,则只计算其中的数字。数组或引用中的空白单元格、逻辑值或文本将被忽略。

说明

函数 NPV 假定投资开始于 value1 现金流所在日期的前一期,并结束于最后一笔现金流的当期。函数 NPV 依据未来的现金流来进行计算。如果第一笔现金流发生在第一个周期的期初,则第一笔现金必须添加到函数 NPV 的结果中,而不应包含在 values 参数中。有关详细信息,请参阅下面的示例。

如果 n 是数值参数表中的现金流的次数,则 NPV 的公式如下:

npv NPV 函数 (财务函数)

函数 NPV 与函数 PV(现值)相似。PV 与 NPV 之间的主要差别在于:函数 PV 允许现金流在期初或期末开始。与可变的 NPV 的现金流数值不同,PV 的每一笔现金流在整个投资中必须是固定的。有关年金与财务函数的详细信息,请参阅函数 PV。

函数 NPV 与函数 IRR(内部收益率)也有关,函数 IRR 是使 NPV 等于零的比率:NPV(IRR(...), ...) = 0。

示例 1

如果将示例复制到一个空白工作表中,可能会更易于理解。

npv NPV 函数 (财务函数)

如何复制示例

创建一个空白工作簿或工作表。

选择“帮助”主题中的示例。

注释   请勿选择行标题或列标题。

npv NPV 函数 (财务函数)

从“帮助”中选择示例

按 Ctrl+C。

在工作表中,选择单元格 A1,然后按 Ctrl+V。

若要在查看结果和查看返回结果的公式之间切换,请按 Ctrl+`(重音符),或在“公式”选项卡的“公式审核”组中,单击“显示公式”按钮。

1

2

3

4

5

6

A B

数据 说明

10% 年贴现率

-10,000 一年前的初期投资

3,000 第一年的收益

4,200 第二年的收益

6,800 第三年的收益

公式 说明(结果)

=NPV(A2, A3, A4, A5, A6) 该投资的净现值 (1,188.44)

在上例中,将开始投资的 ¥10,000 作为数值参数中的一个。这是因为付款发生在第一个周期的期末。

示例 2

如果将示例复制到一个空白工作表中,可能会更易于理解。

npv NPV 函数 (财务函数)

如何复制示例

创建一个空白工作簿或工作表。

选择“帮助”主题中的示例。

注释   请勿选择行标题或列标题。

npv NPV 函数 (财务函数)

从“帮助”中选择示例

按 Ctrl+C。

在工作表中,选择单元格 A1,然后按 Ctrl+V。

若要在查看结果和查看返回结果的公式之间切换,请按 Ctrl+`(重音符),或在“公式”选项卡的“公式审核”组中,单击“显示公式”按钮。

1

2

3

4

5

6

7

8

A B

数据 说明

8% 年贴现率。可表示整个投资的通货膨胀率或利率。

-40,000 初期投资

8,000 第一年的收益

9,200 第二年的收益

10,000 第三年的收益

12,000 第四年的收益

14,500 第五年的收益

公式 说明(结果)

=NPV(A2, A4:A8)+A3 该投资的净现值 (1,922.06)

=NPV(A2, A4:A8, -9000)+A3 该投资的净现值,包括第六年中 9000 的赔付 (-3,749.47)

在上例中,一开始投资的 ¥40,000 并不包含在数值参数中,因为此项付款发生在第一期的期初。

“www.61k.com。
本文标题:文华财经函数-DURATION 函数 (财务函数)
本文地址: http://www.61k.com/1161773.html

61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1