首页 文华财经主要函数学习

文华财经主要函数学习

举报
开通vip

文华财经主要函数学习文华财经主要函数学习 金融统计函数 BARSLAST(COND):上一次条件COND成立到当前的周期数 1、条件成立的当根k线上BARSLAST(COND)的返回值为0 2、本函数运算量很大,将占用很多的CPU资源,导致行情刷新速度变慢,请谨慎使用! BARSLAST(OPEN>CLOSE); //上一根阴线到现在的周期数。 N:=BARSLAST(DATE<>REF(DATE,1))+1;//分钟周期,当日k线数。 //由于条件成立的当根k线上BARSLAST(COND)的返回值为0,所以“+1”才是当日k线根数...

文华财经主要函数学习
文华财经主要函数学习 金融统计函数 BARSLAST(COND):上一次条件COND成立到当前的周期数 1、条件成立的当根k线上BARSLAST(COND)的返回值为0 2、本函数运算量很大,将占用很多的CPU资源,导致行情刷新速度变慢,请谨慎使用! BARSLAST(OPEN>CLOSE); //上一根阴线到现在的周期数。 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 为空值时返回值为空值 。 N:=BARSLAST(DATE<>REF(DATE,1))+1;//分钟周期,当日k线数。 M:COUNT(ISUP,N);//统计分钟周期上开盘以来阳线的根数。 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。 计算 公式 小学单位换算公式大全免费下载公式下载行测公式大全下载excel公式下载逻辑回归公式下载 :DMA(N)=DMA(N-1)*(1-A)+X(N)*A 其中DMA(N-1)为第(N-1)天的DMA值 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 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资源,导致行情刷新速度变慢,请谨慎使用! EMA2(H,5);//求最高价在5个周期的加权移动平均值。 Exponential Moving Average,指数移动平均,也叫平滑移动平均,采用指数加权 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 ,对距离当前较近的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可以是变量。 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可以是变量。 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线); 2、当N为有效值,但当前的k线数不足N根,按照实际的根数计算,第一根k线返回空值; 3、N为空值时,返回空值。 4、N可以是变量。 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可以是变量。 LL:LLV(L,5);//求5根k线最低点(包含当前k线)。 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可以是变量。 LL:LV(L,10);//求前面10根k线的最低点。(不包含当前k线) N:=BARSLAST(DATE<>REF(DATE,1))+1;//分钟周期,日内k线根数 ZL:VALUEWHEN(DATE<>REF(DATE,1),LV(L,N));//在分钟周期上,求昨天最低价。 LV(L,5) 和 REF(LLV(L,5),1) 的结果是一样的,用LV编写更加方便。 LLVBARS(X,N): 求N周期内X最低值到当前周期数 1、若N为0则从第一个有效值开始算起(不包含当前K线); 1、若N为0则从第一个有效值开始算起。 2、当N为有效值,但当前的k线数不足N根,按照实际的根数计算。 3、N为空值时,返回空值。 4、N可以是变量。 SUM(VOL,25);表示统计25周期内的成交量总和 N:=BARSLAST(DATE<>REF(DATE,1))+1;//分钟周期,日内k线根数 SUM(VOL,N);//分钟周期上,取当天成交量总和。 SUMBARS(X,A):求累加到指定值的周期数 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或空值的情况下,函数返回空值。 TRMA5:TRMA(CLOSE,5);//计算5个周期内收盘价的三角移动平均。(N不能被2整除) //TRMA(CLOSE,5)=MA(MA(CLOSE,(5+1)/2)),(5+1)/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或空值的情况下,函数返回空值。 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)。 BETWEEN(CLOSE,MA5,MA10); //表示收盘价介于5日均线与10日均线之间。 CROSS(A,B) 表示A从下方向上穿过B,成立返回1(Yes),否则返回0(No) 1、满足穿越的条件必须上根k线满足A<=B,当根k线满足A>B才被认定为穿越。 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)编写更利于理解。 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)编写更利于理解 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 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。 EVERY(CLOSE>OPEN,5);//表示5个周期内一直是阳线 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 EXIST(CLOSE>REF(HIGH,1),10);表示10个周期中是否存在收盘价大于前一个周期的最高价,存在返回1,不存在则返回0. 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可以是条件,也可以是数值。 IFELSE(ISUP,H,L);//如果k线为阳线,取最高价,否则取最低价 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=1000,CLOSEOUT;//如果当根k线是交割日并且时间是10:00,则全平。 ISLASTBAR 判断该周期是否为最后一根k线 1、该函数属于未来函数。 大值时返回当前最高价 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=HM*0.95,80,IFELSE(MM>=HM*0.9&&MM=HM*0.85&&MM=HM*0.8&&MM=HM*0.95,80,IFELSE(MM>=HM*0.9&&MM=HM*0.85&&MM=HM*0.8&&MMREF(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=H M*0.85&&MM=HM*0.8&&MMREF(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; CLOSEOPEN,BK; CLOSE10,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线返回空值。 若当前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)信号发出时行情时开始统计行情的最高价;如果信号消失,返回上次买开以来的行情的最 位则止损平仓。 卖开仓以来的最高价 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信号当根的返回值比较取较大值 CBKLOW+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=1&&L>LV(L,5),SK(2); //空头持仓大于等于1,并且当根K线的最低价小于前面5个周期中最低价中最小值时,加仓2手 SKVOL>0&&H0&&CMA1,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 返回分组指令中最近一次模型卖开位置的卖开信号价位。 写法示例: COPEN,BPK; CLOSEOPEN并且BPK发出,并且已经确认固定,当根K线后续又满足了CLOSEOPEN,BK(1); CLOSEOPEN并且BK信号已经确认固定,即使当根K线后续又满足了CLOSEOPEN,发出BK信号,下根K线又满足CLOSE>OPEN的条件,可以继续发出BK信号 3、 CLOSE>OPEN,BK(1); CONDITION_ORDER; MONO_SIGNAL; 编写了MONO_SIGNAL的公式条件模型,一根K线上只支持一个信号,且每个指令行只执行 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资源,导致行情刷新速度变慢,请谨慎使用 金融统计函数 BARSLAST(COND):上一次条件COND成立到当前的周期数 1、条件成立的当根k线上BARSLAST(COND)的返回值为0 2、本函数运算量很大,将占用很多的CPU资源,导致行情刷新速度变慢,请谨慎使用! BARSLAST(OPEN>CLOSE); //上一根阴线到现在的周期数。 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 为空值时返回值为空值 。 N:=BARSLAST(DATE<>REF(DATE,1))+1;//分钟周期,当日k线数。 M:COUNT(ISUP,N);//统计分钟周期上开盘以来阳线的根数。 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值 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 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资源,导致行情刷新速度变慢,请谨慎使用! 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可以是变量。 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可以是变量。 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线); 2、当N为有效值,但当前的k线数不足N根,按照实际的根数计算,第一根k线返回空值; 3、N为空值时,返回空值。 4、N可以是变量。 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可以是变量。 LL:LLV(L,5);//求5根k线最低点(包含当前k线)。 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可以是变量。 LL:LV(L,10);//求前面10根k线的最低点。(不包含当前k线) N:=BARSLAST(DATE<>REF(DATE,1))+1;//分钟周期,日内k线根数 ZL:VALUEWHEN(DATE<>REF(DATE,1),LV(L,N));//在分钟周期上,求昨天最低价。 LV(L,5) 和 REF(LLV(L,5),1) 的结果是一样的,用LV编写更加方便。 LLVBARS(X,N): 求N周期内X最低值到当前周期数 1、若N为0则从第一个有效值开始算起(不包含当前K线);
本文档为【文华财经主要函数学习】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_682974
暂无简介~
格式:doc
大小:22KB
软件:Word
页数:37
分类:
上传时间:2017-06-11
浏览量:142