发明者量化My语言(Mylang)文档

Author: 雨幕(youquant), Created: 2021-10-25 16:58:53, Updated: 2024-01-31 12:18:24

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

  • DMA

    动态移动平均

    DMA(X,A):求X的动态移动平均,其中A必须小于1大于0。
    注:
    1、A可以为变量
    2、如果A<=0或者A>=1,返回无效值
    
    计算公式:DMA(X,A)=REF(DMA(X,A),1)*(1-A)+X*A
    
    例1:
    DMA3:=DMA(C,0.3);//计算结果为REF(DMA3,1)*(1-0.3)+C*0.3
    
  • EMA

    指数加权移动平均

    EMA(X,N):求N周期X值的指数加权移动平均(平滑移动平均)。
    
    注:
    1、N包含当前k线。
    2、对距离当前较近的k线赋予了较大的权重。
    3、当N为有效值,但当前的k线数不足N根,按实际根数计算。
    4、N为0或空值时返回值为空值。
    5、N可以为变量
    
    EMA(X,N)=2*X/(N+1)+(N-1)*REF(EMA(X,N),1)/(N+1)
    
    例1:
    EMA10:=EMA(C,10);//求收盘价10周期指数加权移动平均值
    
  • EMA2

    线性加权移动平均

    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线。
    2、当N为有效值,但当前的k线数不足N根,返回值为空值。
    3、N为0或空值时返回值为空值。
    4、N可以为变量
    
    例1:
    EMA2(H,5);//求最高价在5个周期的线性加权移动平均值。
    
  • EMAWH

    指数加权移动平均

    EMAWH(C,N),指数加权移动平均,也叫平滑移动平均,采用指数加权方法,对距离当前较近的K线赋予了较大的权重。
    注:
    1、当N为有效值,当前的k线数不足N根时,或者前面周期的取值仍作用于当前周期时,EMAWH返回值为空值
    因为EMAWH计算公式中着重考虑了当周期的权重,所以当周期较长,前面的周期取值对当前的影响越小,EMAWH从前面数据对当前周期不再影响时的取值开始显示,所以即使选择的数据起始时间不同,当前已经显示的K线的EMAWH的取值也不会发生变化
    2、当N为0或空值时返回值均为空值
    3、N不能为变量
    
    EMAWH(C,N)=2*C/(N+1)+(N-1)*REF(EMAWH(C,N),1)/(N+1)
    
    注:
    EMAWH用法同EMA(C,N)
    
  • HARMEAN

    调和平均值

    HARMEAN(X,N) 求X在N个周期内的调和平均值。
    
    算法举例:HARMEAN(X,5)=1/[(1/X1+1/X2+1/X3+1/X4+1/X5)/5]
    
    注:
    1、N包含当前k线。
    2、调和平均值与倒数的简单平均值互为倒数。
    3、当N为有效值,但当前的k线数不足N根,函数返回空值。
    4、N为0或空值的情况下,函数返回空值。
    5、X为0或空值的情况下,函数返回空值。
    6、N可以为变量。
    
    例:
    HM5:=HARMEAN(C,5);//求5周期收盘价的调和平均值。
    
  • HHV

    最高值

    HHV(X,N):求X在N个周期内的最高值。
    
    注:
    1、N包含当前k线。
    2、若N为0则从第一个有效值开始算起;
    3、当N为有效值,但当前的k线数不足N根,按照实际的根数计算;
    4、N为空值时,返回空值。
    5、N可以是变量。
    
    例1:
    HH:=HHV(H,4);//求4个周期最高价的最大值,即4周期高点(包含当前k线)。
    例2:
    N:=BARSLAST(DATE<>REF(DATE,1))+1;//分钟周期,日内k线根数
    HH1:=HHV(H,N);//在分钟周期上,日内高点
    
  • HV

    除当前 K 线外最高值

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

    前一最高点位置

    HHVBARS(X,N): 求N周期内X最高值到当前周期数
    
    注:
    1、若N为0则从第一个有效值开始算起(不包含当前K线);
    2、当N为有效值,但当前的k线数不足N根,按照实际的根数计算,第一根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)+N;//在分钟周期上,求昨天最高价所在的k线到当前k线之间的周期数。
    
  • LLV

    最低值

    LLV(X,N): 求X在N个周期内的最小值。
    
    注:
    1、N包含当前k线。
    2、若N为0则从第一个有效值开始算起;
    3、当N为有效值,但当前的k线数不足N根,按照实际的根数计算;
    4、N为空值时,返回空值。
    5、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

    除当前 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线根数
    NN:=REF(N,N);
    ZL:=VALUEWHEN(DATE<>REF(DATE,1),LV(L,NN));//在分钟周期上,求昨天最低价。
    例3:
    LV(L,5) 和 REF(LLV(L,5),1) 的结果是一样的,用LV编写更加方便。
    
  • LLVBARS

    前一个最低点位置

    LLVBARS(X,N): 求N周期内X最低值到当前周期数
    
    注:
    1、若N为0则从第一个有效值开始算起(不包含当前K线);
    2、当N为有效值,但当前的k线数不足N根,按照实际的根数计算,第一根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)+N;//在分钟周期上,求昨天最低价所在的k线到当前k线之间的周期数。
    
  • MA

    算数移动平均

    MA(X,N) 求X在N个周期内的简单移动平均
    
    算法:MA(X,5)=(X1+X2+X3+X4+X5)/5
    注:
    1、N包含当前k线。
    2、简单移动平均线沿用最简单的统计学方式,将过去某特定时间内的价格取其平均值。
    3、当N为有效值,但当前的k线数不足N根,函数返回空值。
    4、N为0或空值的情况下,函数返回空值。
    5、N可以为变量
    
    例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。
    
  • MV

    取均值

    MV(A,...P) 取A到P的均值。
    
    注:
    1、支持取2-16个数值的均值
    2、A...P可以为数字也可以为变量
    
    例1:
    MV(CLOSE,OPEN);
    //取收盘价和开盘价的平均值
    
  • NUMPOW

    自然数幂方和

    NUMPOW(X,N,M);自然数幂方和
    算法:
    NUMPOW(x,n,m)=n^m*x+(n-1)^m*ref(x,1)+(n-2)^m*ref(x,2)+...+2^m*ref(x,n-2)+1^m*ref(x,n-1)
    注意:
    1、N为自然数,M为实数;且N与M不能为变量
    2、X为基础变量
    
    例:
    JZ:=NUMPOW(C,5,2);
    
  • SAR

    抛物转向

    SAR(N,STEP,MAX) 返回抛物转向值。
    
    根据公式SAR(n)=SAR(n-1)+AF*(EP(n-1)-SAR(n-1))计算
    
    其中:
    SAR(n-1):上根K线SAR的绝对值
    AF:加速因子,当AF小于MAX时,逐根的通过AF+STEP累加,涨跌发生转换时,AF重新计算
    EP:一个涨跌内的极值,在上涨行情中为上根K线的最高价;下跌行情中为上根K线的最低价
    
    注:
    1、参数N,Step,Max均不支持变量
    
    例1:
    SAR(17,0.03,0.3);//表示计算17个周期抛物转向,步长为3%,极限值为30%
    
  • SMA

    扩展指数加权移动平均

    SMA(X,N,M) 求X的N个周期内的扩展指数加权移动平均。M为权重。
    
    计算公式:SMA(X,N,M)=REF(SMA(X,N,M),1)*(N-M)/N+X(N)*M/N
    注:
    1、当N为有效值,但当前的k线数不足N根,按实际根数计算。
    2、 N为0或空值的情况下,函数返回空值。
    
    例1:
    SMA10:=SMA(C,10,3);//求的10周期收盘价的扩展指数加权移动平均。权重为3。
    
  • SMMA

    通畅移动平均

    SMMA(X,N),X为变量,N为周期,SMMA(X,N)表示当前K线上X在N个周期的通畅移动平均线
    算法:SMMA(X,N)=(SUM1-MMA+X)/N
    其中SUM1=X1+X2+.....+XN
    MMA=SUM1/N
    例1:
    SMMA(C,5);//收盘价的5周期通畅移动平均线
    
  • SORT

    取排序在相应位置的值

    SORT(Type,POS,N1,N2,...,N16); 按升(降)序排列,取第POS个参数对应的值
    
    注:
    1、当Type为0按升序排列,当Type为1按降序排列;
    2、TYPE,POS,不支持变量
    3、N1,...,N16为参数,支持常量、变量,最多支持16个参数
    
    例:
    SORT(0,3,2,1,5,3);//2、1、5、3按升序排列,取排列第三的数字3
    
  • SUM

    求和

    SUM(X,N) 求X在N个周期内的总和。
    
    注:
    1、N包含当前k线。
    2、若N为0则从第一个有效值开始算起。
    3、当N为有效值,但当前的k线数不足N根,按照实际的根数计算。
    4、N为空值时,返回空值。
    5、N可以为变量。
    
    例1:
    SUM(VOL,25);表示统计25周期内的成交量总和
    例2:
    N:=BARSLAST(DATE<>REF(DATE,1))+1;//分钟周期,日内k线根数
    SUM(VOL,N);//分钟周期上,取当天成交量总和。
    
  • SUMBARS

    累加到指定值的周期数

    SUMBARS(X,A):求累加到指定值的周期数
    
    注:
    参数A支持变量
    
    例1:
    SUMBARS(VOL,20000); 将成交量向前累加直到大于等于20000,返回这个区间的周期数。
    
  • TRMA

    三角移动平均

    TRMA(X,N): 求X在N个周期的三角移动平均值。
    
    算法:三角移动平均线公式,是采用算数移动平均,并且对第一个移动平均线再一次应用算数移动平均。
    TRMA(X,N) 算法如下
    ma_half= MA(X,N/2)
    trma=MA(ma_half,N/2)
    
    注:
    1、N包含当前k线。
    2、当N为有效值,但当前的k线数不足N根,函数返回空值。
    3、N为0或空值的情况下,函数返回空值。
    4、N支持使用变量
    
    例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

    时间序列移动平均

    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或空值的情况下,函数返回空值。
    3、N支持使用变量
    例1:
    TSMA5:=TSMA(CLOSE,5);//计算5个周期内收盘价的序列三角移动平均
    
  • 数理统计函数

    • AVEDEV

      平均绝对偏差

      AVEDEV(X,N):返回X在N周期内的平均绝对偏差。
      
      注:
      1、N包含当前k线。
      2、N为有效值,但当前的k线数不足N根,该函数返回空值;
      3、N为0时,该函数返回空值;
      4、N为空值,该函数返回空值;
      5、N不能为变量
      
      算法举例:计算AVEDEV(C,3);在最近一根K线上的值。
      
      用麦语言函数可以表示如下:
      (ABS(C-(C+REF(C,1)+REF(C,2))/3)+ABS(REF(C,1)-(C+REF(C,1)+REF(C,2))/3)+ABS(REF(C,2)-(C+REF(C,1)+REF(C,2))/3))/3;
      
      例:
      AVEDEV(C,5);//返回收盘价在5周期内的平均绝对偏差。
      //表示5个周期内每个周期的收盘价与5周期收盘价的平均值的差的绝对值的平均值,判断收盘价与其均值的偏离程度
      
    • COEFFICIENTR

      皮尔森相关系数

      COEFFICIENTR(X,Y,N) 求X、Y在N个周期内的皮尔森相关系数。
      
      注:
      1、N包含当前k线。
      2、N为有效值,但当前的k线数不足N根,该函数返回空值。
      3、N为0时,该函数返回空值。
      4、N为空值,该函数返回空值。
      5、N可以为变量。
      
      算法举例:计算COEFFICIENTR(O,C,3);在最近一根K线上的值。
      用麦语言函数可以表示如下:
      (((O-MA(O,3))*(C-MA(C,3))+(REF(O,1)-MA(O,3))*(REF(C,1)-MA(C,3))+(REF(O,2)-MA(O,3))*(REF(C,2)-MA(C,3))) /(STD(O,3)*STD(C,3)))/(3-1);
      
      例:
      COEFFICIENTR(C,O,10);   //求在10个周期内的皮尔森相关系数。
                              //皮尔森相关系数是衡量两个随机变量之间的相关程度的指标。
      
    • CORRELATION

      相关系数

      CORRELATION(X,Y,N) 求X、Y在N个周期内的相关系数。
      
      注:
      1、N包含当前k线。
      2、N为有效值,但当前的k线数不足N根,该函数返回空值。
      3、N为0时,该函数返回空值。
      4、N为空值,该函数返回空值。
      5、N可以为变量。
      
      算法举例:计算CORRELATION (O,C,3);在最近一根K线上的值。
      用麦语言函数可以表示如下:
      (((O-MA(O,3))*(C-MA(C,3))+(REF(O,1)-MA(O,3))*(REF(C,1)-MA(C,3))+(REF(O,2)-MA(O,3))*(REF(C,2)-MA(C,3))))/SQRT((SQUARE(O-MA(O,3))+SQUARE(REF(O,1)-MA(O,3))+SQUARE(REF(O,2)-MA(O,3)))*(SQUARE(C-MA(C,3))+SQUARE(REF(C,1)-MA(C,3))+SQUARE(REF(C,2)-MA(C,3))));
      
      例:
      CORRELATION(C,O,10);//求在10个周期内的相关系数。
                           //相关系数是衡量两个随机变量之间的相关程度的指标
      
    • COVAR

      协方差

      COVAR(X,Y,N) 求X、Y在N个周期内的协方差。
      
      注:
      1、N包含当前k线。
      2、N为有效值,但当前的k线数不足N根,该函数返回空值。
      3、N为0时,该函数返回空值。
      4、N为空值,该函数返回空值。
      5、N可以为变量。
      
      算法举例:计算COVAR(O,C,3);在最近一根K线上的值。
      用麦语言函数可以表示如下:
      (((O-MA(O,3))*(C-MA(C,3))+(REF(O,1)-MA(O,3))*(REF(C,1)-MA(C,3))+(REF(O,2)-MA(O,3))*(REF(C,2)-MA(C,3))) )/3;
      
      例:
      COVAR(C,O,10);//求在10个周期内的协方差。
                    //两个不同变量之间的方差就是协方差,如果两个变量的变化趋势一致,那么两个变量之间的协方差就是正值;如果两个变量的变化趋势相反,那么两个变量之间的协方差就是负值。
      
    • DEVSQ

      取得数据偏差平方和

      DEVSQ(X,N): 计算数据X的N个周期的数据偏差平方和。
      
      注:
      1、N包含当前k线。
      2、N为有效值,但当前的k线数不足N根,该函数返回空值;
      3、N为0时,该函数返回空值;
      4、N为空值,该函数返回空值;
      5、N不支持为变量
      
      算法举例:计算DEVSQ(C,3);在最近一根K线上的值。
      
      用麦语言函数可以表示如下:
      SQUARE(C-(C+REF(C,1)+REF(C,2))/3)+SQUARE(REF(C,1)-(C+REF(C,1)+REF(C,2))/3)+SQUARE(REF(C,2)-(C+REF(C,1)+REF(C,2))/3);
      
      例:
      DEVSQ(C,5);计算数据收盘价5个周期的数据偏差平方和。
      //表示收盘价与收盘价均值偏差分别平方之后求和,DEVSQ(C,5)表示5个周期的收盘价与收盘价均值偏差分别平方之后求和。
      
    • FORCAST

      线性回归值

      FORCAST(X,N):为X的N周期线性回归预测值。
      
      注:
      1、N包含当前k线。
      2、N为有效值,但当前的k线数不足N根,该函数返回空值;
      3、N为0时,该函数返回空值;
      4、N为空值,该函数返回空值;
      5、N可以是变量
      
      算法举例:用最小平方法计算FORCAST(C,3)在最近一根K线上的值
      1、建立一元线性方程:y=a+b*i+m
      2、y的估计值:y(i)^=a+b*i
      3、求残差:m^=y(i)-y(i)^=y(i)-a-b*i
      4、误差平方和:
      Q=m(1)*m(1)+...+m(3)*m(3)=[y(1)-a-b*1]*[y(1)-a-b*1]+...+[y(3)-a-b*3]*[y(3)-a-b*3]
      5、对线性方程中的参数a,b求一阶偏导:
      2*{[y(1)-a-b*1]+...+[y(3)-a-b*3]}*(-1)=0
      2*[y(1)-a-b*1]*(-1)+...+[y(3)-a-b*3]*(-3)=0
      6、联立以上两个公式,解出a,b的值:
      a=(y(1)+y(2)+y(3))/3-b(i(1)+i(2)+i(3))/3
      b=(y(1)*i(1)+y(2)*i(2)+y(3)*i(3)-(3*((i(1)+i(2)+i(3))/3)*((y(1)+y(2)+y(3))/3))/((i(1)^2+i(2)^2+i(3)^2)-3*((i(1)+i(2)+i(3))/3)^2)
      7、将a,b,i值带入1,求出y值
      
      以上公式用麦语言函数可以表示如下:
      BB:=(3*C+2*REF(C,1)+REF(C,2)-(3*((1+2+3)/3)*MA(C,3)))/((SQUARE(1)+SQUARE(2)+SQUARE(3))-3*SQUARE((1+2+3)/3));
      AA:=MA(C,3)-BB*(1+2+3)/3;
      YY:=AA+BB*3;
      
      例:
      FORCAST(CLOSE,5);//表示求5周期线性回归预测值
      
    • KURTOSIS

      峰度系数

      KURTOSIS(X,N) 求X在N个周期内的峰度系数。
      
      注:
      1、N包含当前k线。
      2、N为有效值,但当前的k线数不足N根,该函数返回空值。
      3、N为0时,该函数返回空值。
      4、N为空值,该函数返回空值。
      5、N可以为变量。
      6、N至少为4,少于4返回空值。
      
      算法举例:计算KURTOSIS(C,4);在最近一根K线上的值。
      用麦语言函数可以表示如下:
      ((POW(C-MA(C,4),4)+POW(REF(C,1)-MA(C,4),4)+POW(REF(C,2)-MA(C,4),4)+POW(REF(C,3)-MA(C,4),4)) /POW(STD(C,4),4))*(4*(4+1)/((4-1)*(4-2)*(4-3)))-3*SQUARE(4-1)/((4-2)*(4-3));
      
      例:
      KURTOSIS(C,10);
      //表示收盘价的10周期峰值。峰值反映与正态分布相比某一分布的尖锐度或平坦度。正峰值表示相对尖锐的分布。负峰值表示相对平坦的分布。
      
    • NORMPDF

      正态分布概率密度

      NORMPDF(X,MU,SIGMA):返回参数为MU和SIGMA的正态分布密度函数在X处的值
      
      注:
      1、MU或SIGMA为空值,该函数返回空值。
      2、MU和SIGMA支持变量。
      
      算法举例:随机变量X服从一个位置参数为MU、尺度参数为SIGMA的概率分布,其概率密度为NORMPDF(X,MU,SIGMA)。
      
      用麦语言函数可以近似的表示如下:
      (1/(SQRT(2*3.14)*SIGMA))*EXP((-SQUARE(X-MU))/(2*SQUARE(SIGMA)));
      
      例:
      TR:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
      ATR:=MA(TR,26);//求26个周期内的TR的简单移动平均
      ZZ..NORMPDF(ATR,0,1);//定义变量ZZ,返回ATR服从标准正态分布的概率密度。
      
    • SKEWNESS

      偏度系数

      SKEWNESS(X,N) 求X在N个周期内的偏度系数。
      
      注:
      1、N包含当前k线。
      2、N为有效值,但当前的k线数不足N根,该函数返回空值。
      3、N为0时,该函数返回空值。
      4、N为空值,该函数返回空值。
      5、N可以为变量。
      6、N至少为3,少于3返回空值。
      
      算法举例:计算SKEWNESS(C,3);在最近一根K线上的值。
      用麦语言函数可以表示如下:
      ((POW(C-MA(C,3),3)+POW(REF(C,1)-MA(C,3),3)+POW(REF(C,2)-MA(C,3),3)) /POW(STD(C,3),3))*3/((3-1)*(3-2));
      
      例:
      SKEWNESS(C,10);
      //表示收盘价的10周期偏度。偏度反映分布的不对称度。不对称度反映以平均值为中心的分布的不对称程度。正不对称度表示不对称部分的分布更趋向正值。负不对称度表示不对称部分的分布更趋向负值。
      
    • SLOPE

      线性回归的斜率

      SLOPE(X,N):得到X的N周期的线型回归的斜率。
      
      注:
      1、N包含当前k线。
      2、N为有效值,但当前的k线数不足N根,该函数返回空值;
      3、N为0时,该函数返回空值;
      4、N为空值,该函数返回空值;
      5、N可以为变量。
      
      举例:
      用最小平方法计算SLOPE(CLOSE,5)在最近一根K线上的的值:
      1、建立一元线性方程:close=a+slope*i+m
      2、close的估计值:close(i)^=a+slope*i
      3、求残差:m^=close(i)-close(i)^=close(i)-a-slope*i
      4、误差平方和:
      Q=m(1)*m(1)+...+m(5)*m(5)=[close(1)-a-slope*1]*[close(1)-a-slope*1]+...+[close(5)-a-slope*5]*[close(5)-a-slope*5]
      5、对线性方程中的参数a,slope求一阶偏导:
      2*{[close(1)-a-slope*1]+...+[close(5)-a-slope*5]}*(-1)=0
      2*{[close(1)-a-slope*1]+...+[close(5)-a-slope*5]}*(-5)=0
      6、联立以上两个公式,反解出slope的值:
      slope={[5*close(1))+...+1*close(5)]-[close(1)+...+close(5)]*(1+2+3+4+5)/5}/[(1*1+...+5*5)-(1+...+5)(1+...+5)/5]
      
      以上公式用麦语言函数可以表示如下:
      ((5*C+4*REF(C,1)+3*REF(C,2)+2*REF(C,3)+1*REF(C,4))-SUM(C,5)*(1+2+3+4+5)/5)/((SQUARE(1)+SQUARE(2)+SQUARE(3)+SQUARE(4)+SQUARE(5))-SQUARE(1+2+3+4+5)/5);
      
      例:
      SLOPE(CLOSE,5);表示求收盘价5个周期线性回归线的斜率
      
    • STD

      样本标准差

      STD(X,N):求X在N个周期内的样本标准差。
      
      注:
      1、N包含当前k线。
      2、N为有效值,但当前的k线数不足N根,该函数返回空值;
      3、N为0时,该函数返回空值;
      4、N为空值,该函数返回空值。
      5、N可以为变量
      
      算法举例:计算STD(C,3);在最近一根K线上的值。
      
      用麦语言函数可以表示如下:
      SQRT((SQUARE(C-MA(C,3))+SQUARE(REF(C,1)-MA(C,3))+SQUARE(REF(C,2)-MA(C,3)))/2);
      
      例:
      STD(C,10)求收盘价在10个周期内的样本标准差。
      //标准差表示总体各单位标准值与其平均数离差平方的算术平均数的平方根,它反映一个数据集的离散程度。STD(C,10)表示收盘价与收盘价的10周期均线之差的平方和的平均数的算术平方根。样本标准差是样本方差的平方根。
      
    • STDP

      总体标准差

      STDP(X,N):为X的N周期总体标准差。
      
      注:
      1、N包含当前k线。
      2、N为有效值,但当前的k线数不足N根,该函数返回空值;
      3、N为0时,该函数返回空值;
      4、N为空值,该函数返回空值。
      5、N可以为变量
      
      算法举例:计算STDP(C,3);在最近一根K线上的值。
      
      用麦语言函数可以表示如下:
      SQRT((SQUARE(C-MA(C,3))+SQUARE(REF(C,1)-MA(C,3))+SQUARE(REF(C,2)-MA(C,3)))/3);
      
      例:
      STDP(C,10)为收盘价的10周期总体标准差。
      
      //总体标准差是反映研究总体内个体之间差异程度的一种统计指标,总体方差是一组资料中各数值与其算术平均数离差平方和的平均数,总体标准差则是总体方差的平方根。
      
    • VAR

      样本方差

      VAR(X,N)求X在N周期内的样本方差。
      
      注:
      1、N包含当前k线。
      2、N为有效值,但当前的k线数不足N根,该函数返回空值;
      3、N为0时,该函数返回空值;
      4、N为空值,该函数返回空值;
      5、N支持使用变量
      
      算法举例:计算VAR(C,3);在最近一根K线上的值。
      用麦语言函数可以表示如下:
      
      (SQUARE(C-MA(C,3))+SQUARE(REF(C,1)-MA(C,3))+SQUARE(REF(C,2)-MA(C,3)))/(3-1);
      
      例:
      VAR(C,5)求收盘价在5周期内的样本方差。
      //表示总体方差的N/(N-1)倍,VAR(C,5)表示收盘价的5周期总体样本方差的5/4倍。
      
    • VARP

      总体方差

      VARP(X,N):为X的N周期总体方差
      
      注:
      1、N包含当前k线。
      2、N为有效值,但当前的k线数不足N根,该函数返回空值;
      3、N为0时,该函数返回空值;
      4、N为空值,该函数返回空值;
      5、N支持使用变量
      
      算法举例:计算VARP(C,3);在最近一根K线上的值。
      用麦语言函数可以表示如下:
      (SQUARE(C-MA(C,3))+SQUARE(REF(C,1)-MA(C,3))+SQUARE(REF(C,2)-MA(C,3)))/3;
      
      例:
      VARP(C,5)为收盘价的5周期总体方差
      //表示数据偏差平方和除以总周期数N,VARP(C,5)表示收盘价5个周期的数据偏差平方和除以5.
      
  • 数学函数

    • ABS

      绝对值

      ABS(X):取的X的绝对值。
      
      注:
      1、正数的绝对值是它本身;
      2、负数的绝对值是它的相反数;
      3、0的绝对值还是0;
      
      例1:
      ABS(-10);//返回10。
      例2:
      ABS(CLOSE-10);//返回收盘价和的10价差的绝对值。
      例3:
      ABS(C-O);//当前K线实体长度
      
    • ACOS

      反余弦值

      ACOS(X):返回X的反余弦值。
      
      注:
      1、X取值范围[-1,1]。
      2、若X不在取值范围,返回值为空值。
      
      例1:
      ACOS(-1);//求-1的反余弦值;
      例2:
      ACOS(1);//求1的反余弦值;
      
    • ASIN

      反正弦值

      ASIN(X):返回X的反正弦值。
      
      注:
      1、X取值范围[-1,1]。
      2、若X不在取值范围,返回值为空值。
      
      例1:
      ASIN(-1);//求-1的反正弦值;
      例2:
      ASIN(1);//求1的反正弦值;
      
    • ATAN

      反正切值

      ATAN(X):返回X的反正切值。
      
      注:X的取值为R(实数集)
      
      例1:
      ATAN(-1.75);//求-1.75的反正切值;
      例2:
      ATAN(1.75);//求1.75的反正切值;
      
    • CEILING

      向上舍入

      CEILING(X,Y) 返回指定实数(X)在沿绝对值增大的方向上第一个能整除基数(Y)的值。
      
      注:
      1、如果X和Y符号相同,则对值按远离0的方向进行舍入。
      2、X和Y符号不同的情况下:
      (1)如果X为负,Y为正,则对值按朝向0的方向进行向上舍入。
      (2)如果X为正,Y为负,CEILING返回无效值。
      3、X、Y均可以为变量。
      4、若X、Y中任意一个为空值,则该函数返回空值。
      
      例1:
      CEILING(2.1,1);//求得3。
      例2:
      CEILING(-8.8,-2);//求得-10。
      例3:
      CEILING(CLOSE*1.01,1);//求收盘价的1.01倍向上取整
      例4:
      CEILING(-7,2);//求得-6。
      例5:
      CEILING(8,-2);//返回无效值。
      
    • COS

      余弦

      COS(X):返回X的余弦值。
      
      注:
      1、X的取值为R(实数集)
      2、值域为[-1,1]
      
      例1:
      COS(-1.57);//返回-1.57的余弦值
      例2:
      COS(1.57);//返回1.57的余弦值
      
    • CUBE

      立方函数

      CUBE(X):返回X的三次方。
      
      例1:
      CUBE(4);//求4的立方。
      
    • EXP

      指数

      EXP(X):求e的X次幂。
      
      例1:
      C*EXP(0.01);//求收盘价乘以e的0.01次幂
      
    • FLOOR

      向下舍入

      FLOOR(A):向数值减小方向舍入。
      
      注:
      FLOOR(A)返回沿A数值减小方向最接近的整数,若A为整数,则返回值为A。
      
      例1:
      FLOOR(2.1);//返回值为2;
      例2:
      FLOOR(-8.8);//返回值为-9;
      例3:
      FLOOR(5);//返回值为5;
      例4:
      IFELSE(C-INTPART(C)>=0.5,CEILING(C),FLOOR(C));//对收盘价四舍五入后取整数部分。
      
    • INTPART

      取整

      INTPART(X):取X的整数部分。
      
      例1:
      INTPART(12.3);//返回值为12;
      例2:
      INTPART(-3.5);//返回值为-3;
      例3:
      INTPART(10);//返回值为10;
      例4:
      INTPART(C);//求收盘价的整数部分。
      
    • LN

      自然对数

      LN(X):求X的自然对数。
      注:
      1、X取值范围为非0自然数,即1、2、3、4、5……
      2、若X取值为0或负数,返回值为空值。
      
      例:
      LN(OPEN);//求开盘价的对数。
      
    • LOG

      常用对数

      LOG(X) 求X的常用对数值。
      
      注:
      1、该函数中X的取值范围为X>0
      2、0和负数没有对数,X为0或负数时返回值为空值。
      
      例1:
      LOG(100) 返回2.
      例2:
      LOG(0) 返回空值。
      
    • MAX

      最大值

      MAX(A,B):取最大值。取A,B中较大者。
      
      注:
      若A=B,返回值为A或者B的值。
      
      例1:
      MAX(CLOSE,OPEN);//表示取开盘价和收盘价中较大者。
      例2:
      MAX(CLOSE-OPEN,0);//表示若收盘价大于开盘价返回它们的差值,否则返回0。
      例3:
      MAX(A,MAX(B,MAX(C,D)));//求 A B C D四者中的最大值
      
    • MAX1

      取最大值

      MAX1(A...P) 在A到P中取最大值。
      
      注:
      1、支持2-16个数值进行比较。
      2、A...P可以为数字也可以为变量。
      
      例1:
      MAX1(CLOSE,OPEN);//表示取开盘价和收盘价中较大者。
      
      例2:
      MAX1(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16);//表示取数字1-16中的最大值。
      
    • MEDIAN

      求中位数

      MEDIAN(X,N) 求X在N个周期内居于中间的数值。
      
      注:
      1、N个周期内所有X排序后,若N为奇数,则选择第(N+1)/2个为中位数,若N为偶数,则中位数是(N/2以及N/2+1)的平均数。
      2、N可以为变量。
      
      例1:
      豆粕1509最近3日的收盘价为2727、2754、2748,那么当前MEDIAN(C,3)的返回值是2748
      例2:
      豆粕1509最近4日的开盘价为2752、2743、2730、2728,那么当前MEDIAN(O,4)的返回值是2736.5
      
    • MEDIAN1

      求中位数

      MEDIAN1(A,...,P) 求A到P内居于中间的数值。
      
      注:
      1、支持最多16个参数进行计算。
      2、A...P可以为数值也可以为变量。
      3、若参数个数为N,对N个参数排序后,N为奇数,则选择第(N+1)/2个为中位数,若N为偶数,则中位数是(N/2以及N/2+1)的平均数。
      
      例1:
      AA:=MEDIAN1(O,C,H);//开盘价、收盘价、最高价按数值排序,取居中的数值
      例2:
      BB:=MEDIAN1(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16);//表示取数字1-16的中位数,BB返回8.5
      
    • MIN

      最小值

      MIN(A,B):取最小值。取A,B中较小者
      
      注:
      若A=B,返回值为A或者B的值。
      
      例1:
      MIN(OPEN,CLOSE);//表示取开盘价和收盘价中的较小者。
      例2:
      MIN(C,MIN(O,REF(C,1)));//求当前周期的开盘价,收盘价,以及上周期的收盘价间最小的数值
      
    • MIN1

      取最小值

      MIN1(A...P) 在A到P中取最小值。
      
      注:
      1、支持2-16个数值进行比较。
      2、A...P可以为数字也可以为变量。
      
      例1:
      MIN1(CLOSE,OPEN);//表示取开盘价和收盘价中较小者。
      
      例2:
      MIN1(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16);//表示取数字1-16中的最小值。
      
    • MOD

      取模

      MOD(A,B):取模。返回A对B求模。
      
      例1:
      MOD(26,10);//返回6,26除以10所得余数为6,即26对10 的模为6。
      例2:
      MOD(A,2)=0;//判断A为偶数。
      
    • MODE

      求众数

      MODE(X,N) 求X在N个周期内最常出现的值。
      
      注:
      1、如果N个周期内不含有重复的数值,则函数返回空值。
      2、N可以为变量。
      
    • POW

      POW(X,Y):求X的Y次幂。
      
      注:
      1、当X为负数时,Y必须为整数,因为底数为负时,不能进行开方运算,返回值为空值。
      2、X,Y可以为数值,也可以为变量。
      
      例1:
      POW(CLOSE,2);//求得收盘价的2次方。
      例2:
      POW(10,2);//返回值为100
      例3:
      POW(1/2,-2);//返回值为4
      例4:
      POW(100,O-C);//返回100的O-C次方
      
    • RAND

      产生随机数的随机函数

      RAND(X,Y) 产生随机数的随机函数,返回范围在X到Y之间的随机数。
      
      注:
      1、X、Y参数均支持设置为变量。
      2、该函数仅支持返回整数
      3、当X>Y时,函数返回空值。
      4、当X与Y的范围小于1时,函数返回无效值。
      
      例1:
      RAND(1,60);//返回1到60之间的随机数值
      例2:
      RAND(C,O);//返回收盘价到开盘价之间的随机数值
      
    • RANGE

      范围

      RANGE(X,Y,Z):介于某个范围之内。表示X大于Y同时小于Z时返回1,否则返回0
      例1:
      RANGE(5,4,6);//返回值为1;
      例2:
      RANGE(8,3,6);//返回值为0;
      例3:
      MA5:=MA(C,5);
      MA10:=MA(C,10);
      MA20:=MA(C,20);
      RANGE(MA10,MA20,MA5),BK;//10周期均线在5周期均线与20周期均线之间买开仓
      
      //RANGE(MA10,MA20,MA5)=1,BK; 与 RANGE(MA10,MA20,MA5),BK; 表达同等意义
      
    • REVERSE

      取相反值

      REVERSE(X):取相反值,返回-X。
      
      例1:
      REVERSE(LOW);//返回-LOW。
      例2:
      REVERSE(-55);//返回值为55
      例3:
      REVERSE(0);//返回值为0
      
    • ROUND

      指定位数四舍五入

      ROUND(N,M) 对数字N进行位数为M的四舍五入。
      
      注:
      1、N支持写为变量和参数;M不支持写为变量,可以写为参数。
      2、M>0,则对数字N小数点后M位小数进行四舍五入。
      3、M=0,则将数字N四舍五入为整数。
      4、M<0,则在数字N小数点左侧前M位进行四舍五入。
      
      例1:
      ROUND(125.345,2);//返回125.35。
      例2:
      ROUND(125.345,0);//返回125。
      例3:
      ROUND(125.345,-1);//返回130
      
    • SGN

      取符号

      SGN(X):取符号。若X>0返回1,若X<0返回-1,否则返回0。
      
      例1:
      SGN(5);//返回值为1
      例2:
      SGN(-5);//返回值为-1
      例3:
      SGN(0);//返回值为0
      
    • SIN

      求正弦

      SIN(X):求X的正弦值。
      
      注:
      1、X的取值为R(实数集);
      2、值域为(-1,1)。
      
      例1:
      SIN(-1.57);//返回-1.57的正弦值
      例2:
      SIN(1.57);//返回1.57的正弦值
      
    • SQRT

      平方根

      SQRT(X):求X的平方根。
      
      注:
      X的取值为正数,X为负数时返回空值。
      
      例1:
      SQRT(CLOSE);//收盘价的平方根。
      
    • SQUARE

      平方

      SQUARE(X)求X的平方。
      
      例1:
      SQUARE(C);//收盘价的平方。
      例2:
      SQUARE(2);//2的平方。
      
    • TAN

      正切

      TAN(X):返回X的正切值。
      例1:
      TAN(0);//返回0的正切值;
      例2:
      TAN(-3.14);//返回-3.14的正切值。
      
  • 交易指令

    • BK

      BK 买开仓

    • BP

      BP 买平仓

    • SK

      SK 卖开仓

    • SP

      SP 卖平仓

    • BPK

      BPK 买平后买开新仓

    • SPK

      SPK 卖平后卖开新仓

    • CLOSEOUT

      CLOSEOUT 清仓指令,平掉所有方向的持仓

    • SELECT

      SELECT 在符合条件的K线上标识一个图型, 一般用于形态识别

    • TRADE_AGAIN

      TRADE_AGAIN(N),含有该函数的加减仓模型中,同一指令行可以连续出 N 个信号

    • AUTOFILTER

      AUTOFILTER,启用一开一平信号过滤机制。

    • MULTSIG

      MULTSIG(Sec1, Sec2, N),设置一根 k 线多信号的指令价方式(TICK 逐笔回测,可设置回测精度)

      开仓信号出信号 Sec1 秒下单,不复核;
      平仓信号出信号 Sec2 秒下单,不复核;
      
  • 计算控制函数

    • FILTER

      FILTER(COND,N) 过滤连续出现的信号 COND 条件成立时 ,其后N周期内的数据返回0

      例如:

      a:=FILTER(CLOSE>OPEN, 3)     // 查找阳线,3个周期内再次出现的阳线不被记录在内。
      

      注意: 不能与 BKPRICE , BARSBK , SKPRICE , BARSSK 一起使用。

    • AUTOFILTER

      启用一开一平信号过滤机制

      AUTOFILTER 启用一开一平信号过滤机制。
      
      用法:
      模型中含有AUTOFILTER函数,则启用一开一平信号过滤机制。
      模型中不写入该函数,则每个指令都有效,支持加减仓。
      
      模型的过滤规则:
      1、连续的同方向指令只有第一个有效,其他的将被过滤;
      2、交易指令必须先开仓后平仓,一开一平配对出现:
      出现BK指令,下一个指令只允许出现SP\SPK指令;
      出现SK指令,下一个指令只允许出现BP\BPK指令;
      出现SP/BP/CLOSEOUT等平仓指令,下一个可以是BK/SK/SPK/BPK指令任一个;
      反手指令SPK和BPK交叉出现。
      
      例:
      CLOSE>OPEN,BK;
      CLOSE<OPEN,SP;
      AUTOFILTER; //启用一开一平信号过滤机制
      
    • TRADE_AGAIN

      限制信号函数

      TRADE_AGAIN(N) 同一指令行可以连续出N个信号。
      
      用法:
      TRADE_AGAIN(N) 含有该函数的加减仓模型中,同一指令行可以连续出N个信号。
      
      注:
      1、该函数只适用于加减仓模型
      2、模型中写入该函数,一根K线只支持一个信号。不可以和 MULTSIG 函数同时使用。
      3、N个信号必须连续执行,如果期间出现其他信号,则N从新计算。
      4、N不可以写为变量。
      
      例:
      C>O,BK(1);//K线为阳线,买开1手
      C<O,SP(BKVOL);//K线为阴线,卖平多头持仓
      TRADE_AGAIN(3);//同一指令行可以连续执行3次(如果连续三根阳线,则连续三次买开仓)
      
  • 信号记录函数

    • BKPRICE

      返回数据合约最近一次买开信号价位

      BKPRICE 返回数据合约最近一次买开信号价位。
      
      用法:
      BKPRICE 返回数据合约最近一次买开信号发出时的行情的最新价。
      
      注:
      1、当数据合约和交易合约相同时 BKPRICE 值和 BKPRICE1 值相等。
      2、当模型存在连续多个开仓信号(加仓)的情况下,该函数返回的是最近一次开仓信号的价格,而不是开仓均价。
      3、不同信号执行方式,其返回值分别为:
      (1)信号执行方式为不进行信号复核
          历史回测:BKPRICE 返回信号发出时的数据合约行情最新价
      (2)信号执行方式选择 K 线走完确认信号下单
          历史回测:BKPRICE 返回信号发出时数据合约当根 K 线的收盘价
      (3)信号执行方式设置为 K 线走完进行信号复核
          历史回测:BKPRICE 返回信号发出时数据合约当根 K 线的收盘价
      
      例:
      BKPRICE-CLOSE>60 && BKPRICE>0 && BKVOL>0, SP;//如果买开价位比当前价位高出 60,且多头持仓存在,卖平仓。
      
    • BKPRICEAV

      返回数据合约多头开仓均价

      BKPRICEAV 返回数据合约多头开仓均价。
      
      用法:
      BKPRICEAV 返回数据合约多头开仓均价。
      
      注:
      1、一开一平信号过滤模型:
      (1)开仓信号后,未出平仓信号时:BKPRICEAV取值和BKPRICE取值相同。
      (2)平仓信号后:BKPRICEAV返回值为0。
      2、加减仓模型:
      (1)持仓不为0时:BKPRICEAV返回数据合约持仓的开仓均价。
      (2)加减仓模型持仓为0时:BKPRICEAV返回值为0。
      
      注:
      该函数的计算考虑滑点。
      
      例:
      CLOSE-BKPRICEAV>60,SP(BKVOL);//当前价位比多头开仓均价高出60,平掉所有多头持仓
      
    • BKVOL

      买开信号手数

      买开信号手数
      用法:
      BKVOL返回模型当前的多头持仓。
      1、加载运行:
      (1)回测系统运行中,BKVOL不受资金情况的限制,按照信号显示开仓手数。
      2、回测运行中:
      (1)如果资金不够开仓,开仓手数为0,BKVOL返回值为0。
      (2)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线的最低价时,卖平所有多头持仓
      
    • BKHIGH

      返回数据合约买开仓以来的最高价

      返回数据合约买开仓以来的最高价
      用法:
      BKHIGH返回数据合约最近一次模型买开位置到当前的最高价。
      1、不同信号执行方式,其返回值分别为:
      (1)信号执行方式为K线走完确认信号下单
      a.历史信号计算中,BK(BPK)信号之后的K线返回委托以来的数据合约行情的最高价
      b.加载运行过程中,BK(BPK)信号当根K线返回的为信号发出时数据合约行情的最新价,BK之后的K线返回委托以来的数据合约行情最高价
      
      从BK(BPK)信号发出时开始统计数据合约行情的最高价;信号消失,返回上次买开以来的数据合约行情的最高价,信号确认存在,返回当根K线记录的数据合约行情的最高价
      注:BK信号发出后,中间出了信号消失,从最后一次信号出现开始统计数据合约最高价
      (3)信号执行方式选择不进行信号复核(例如:在模型中写入MULTSIG)
      BK(BPK)信号的当根K线返回从信号发出到K线走完时数据合约行情的最高价;BK(BPK)信号之后的K线返回信号发出以来数据合约行情的最高价。
      
      例:
      C>O,BK;
      C>BKPRICE&&C<BKHIGH-5,SP;
      AUTOFILTER;//最新价低于买开仓以来的数据合约最高价5个点,止盈平仓。
      
    • BKLOW

      返回数据合约买开仓以来的最低价

      返回数据合约买开仓以来的最低价
      用法:
      BKLOW返回数据合约最近一次模型买开位置到当前的最低价。
      1、不同信号执行方式,其返回值分别为:
      (1)K线走完确认信号下单
          a.历史信号计算中,BK(BPK)信号之后的K线返回委托以来的数据合约行情的最低价
          b.加载运行过程中,BK(BPK)信号当根K线返回的为信号发出时数据合约行情的最新价,BK之后的K线返回委托以来的数据合约行情最低价
      
      从BK(BPK)信号发出时行情时开始统计数据合约行情的最低价;信号消失,返回上次买开以来的数据合约行情的最低价,信号确认存在,返回当根K线记录的数据合约行情的最低价
      注:BK信号发出后,中间出了信号消失,从最后一次信号出现开始统计数据合约最低价
      (3)信号执行方式选择不进行信号复核(例如:在模型中写入MULTSIG)
      BK(BPK)信号的当根K线返回的从信号发出到K线走完时数据合约行情的最低价;BK(BPK)信号之后的K线返回信号发出以来数据合约行情的最低价。
      
      例:
      C>O,BK;
      C>BKLOW+5,SP;
      AUTOFILTER;//最新价高于买开仓以来数据合约的最低价5个点,平仓。
      
    • SKPRICE

      返回数据合约最近一次卖开信号价位

      SKPRICE 返回数据合约最近一次卖开信号价位。
      
      用法:
      SKPRICE 返回数据合约最近一次卖开信号发出时的行情的最新价。
      
      注:
      1、当数据合约和交易合约相同时SKPRICE值和SKPRICE1值相等。
      2、当模型存在连续多个开仓信号(加仓)的情况下,该函数返回的是最近一次开仓信号的价格,而不是开仓均价。
      3、不同信号执行方式,其返回值分别为:
      (1)信号执行方式为不进行信号复核
          a.历史回测:SKPRICE返回信号发出时的数据合约行情最新价
      (2)信号执行方式选择K线走完确认信号下单
          a.历史回测:SKPRICE返回信号发出时数据合约当根K线的收盘价
      (3)信号执行方式设置为K线走完进行信号复核
          a.历史回测:SKPRICE返回信号发出时数据合约当根K线的收盘价
      
      例:
      CLOSE-SKPRICE>60 && SKPRICE>0 && SKVOL>0, BP;//如果卖开价位比当前价位低出60,且空头持仓存在,买平仓。
      
    • SKPRICEAV

      返回数据合约空头开仓均价

      SKPRICEAV 返回数据合约空头开仓均价。
      
      用法:
      SKPRICEAV 返回返回数据合约空头开仓均价。
      
      注:
      1、一开一平信号过滤模型:
      (1)开仓信号后,未出平仓信号时:SKPRICEAV取值和SKPRICE取值相同。
      (2)平仓信号后:SKPRICEAV返回值为0。
      2、加减仓模型:
      (1)持仓不为0时:SKPRICEAV返回数据合约持仓的开仓均价。
      (2)加减仓模型持仓为0时:SKPRICEAV返回值为0。
      
      注:
      该函数的计算考虑滑点。
      
      例:
      SKPRICEAV-CLOSE>60,BP(SKVOL);//当前价位比空头开仓均价低出60,平掉所有空头持仓
      
    • SKVOL

      卖开信号手数

      卖开信号手数
      用法:
      SKVOL返回模型当前的空头持仓。
      1、加载运行:
      (1)回测系统运行中,SKVOL不受资金情况的限制,按照信号显示开仓手数。
      2、回测运行中:
      (1)如果资金不够开仓,开仓手数为0,SKVOL返回值为0。
      (2)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线的最高价时,买平所有空头持仓
      
    • SKHIGH

      返回数据合约卖开仓以来的最高价

      返回数据合约卖开仓以来的最高价
      用法:
      SKHIGH返回数据合约最近一次模型卖开位置到当前的最高价。
      1、不同信号执行方式,其返回值分别为:
      (1)K线走完确认信号下单
         a.历史信号计算中,SK(SPK)信号之后的K线返回委托以来的数据合约行情的最高价
         b.加载运行过程中,SK(SPK)信号当根K线返回的为信号发出时数据合约行情的最新价,SK之后的K线返回委托以来的数据合约行情最高价
      
      从SK(SPK)信号发出时开始统计数据合约行情的最高价;信号消失,返回上次卖开以来的数据合约行情的最高价,信号确认存在,返回当根K线记录的数据合约行情的最高价
      注:SK信号发出后,中间出了信号消失,从最后一次信号出现开始统计数据合约最高价
      (3)信号执行方式选择不进行信号复核(例如:在模型中写入MULTSIG)
      SK(SPK)信号的当根K线返回的从信号发出到K线走完时数据合约行情的最高价;SK(SPK)信号之后的K线返回信号发出以来数据合约行情的最高价。
      
      例:
      C<O,SK;
      C<SKHIGH-5,BP;
      AUTOFILTER;//最新价低于卖开仓以来数据合约的最高价5个点,平仓。
      
    • SKLOW

      返回数据合约卖开仓以来的最低价

      返回数据合约卖开仓以来的最低价
      用法:
      SKLOW返回数据合约最近一次模型卖开位置到当前的最低价。
      1、不同信号执行方式,其返回值分别为:
      (1)K线走完确认信号下单
         a.历史信号计算中,SK(SPK)信号之后的K线返回委托以来的数据合约行情的最低价
         b.加载运行过程中,SK(SPK)信号当根K线返回的为信号发出时数据合约行情的最新价,SK之后的K线返回委托以来的数据合约行情最低价
      信号发出时行情时开始统计数据合约行情的最低价;信号消失,返回上次卖开以来的数据合约行情的最低价,信号确认存在,返回当根K线记录的数据合约行情的最低价
      注:SK信号发出后,中间出了信号消失,从最后一次信号出现开始统计数据合约最低价
      (3)信号执行方式选择不进行信号复核(例如:在模型中写入MULTSIG)
      SK(SPK)信号的当根K线返回的从信号发出到K线走完时数据合约行情的最低价;SK(SPK)信号之后的K线返回信号发出以来数据合约行情的最低价
      
      例:
      C<O,SK;
      C<SKPRICE&&C>SKLOW+5,BP;
      AUTOFILTER;//最新价高于卖开仓以来数据合约的最低价5个点,止盈平仓。
      
    • ISLASTBK

      判断上一个信号是否是 BK

      ISLASTBK 判断上一个交易信号是否是BK。
      
      用法:
      ISLASTBK 上一个交易信号是BK则返回1(Yes),否则返回0(No)
      
      BK信号未确认时,ISLASTBK返回值0;
      BK信号确认后,ISLASTBK返回1
      b.信号执行方式选择不进行信号复核(例如:在模型中写入MULTSIG),BK信号当根ISLASTBK返回值为1
      
      注:模型中含有BPK条件,且上一个信号为平仓信号时,由BPK指令产生的BK信号,ISLASTBK返回0,ISLASTBPK返回1。
      
      例:
      C>O,BK;
      ISLASTBK&&C>BKPRICE,SP;
      AUTOFILTER;//上一个信号是BK信号,且最新价大于开仓价格,卖平仓
      
    • IS


更多内容

pcx3610 搜索:OPI

jkyei-cn 没有CCL持仓量函数(只有VOL),赶快加一下啊大佬。

雨幕(youquant) 好的,这边已经报过了。临时可以用以上方法暂时替代,这边很快兼容上这个指令。

jkyei-cn 也谢谢你能给我回复。你推荐的我是知道的。问题是我的文华策略有许多处引用,且都有参数值,这样就彻底破坏了MY语言的简洁严密和一致了。 试想一下文华要是没有持仓量(OPI/CCL)这个函数,能有多少客户。

雨幕(youquant) 好的,感谢提出问题。这个这边报下。暂时可以这样使用代替: ``` // JavaScript语言中GetTicker接口返回数据中的持仓量,OpenInterest属性 %% scope.OPI = function() { var OpenInterest = 0; if(exchange.IO("status") && scope.canTrade){ var ticker = exchange.GetTicker(); if(ticker){ OpenInterest = ticker.Info.OpenInterest; // 回测不支持,会报错。回测可以使用ticker.OpenInterest } } return OpenInterest; } %% 持仓量..OPI; ```

jkyei-cn 那不是MY 语言,具体引用时候非常麻烦。并且实盘与回测用法不同,结果一致性存疑。 所有量化软件都有封装好的CCL,FMZ应该能把这个MY语言做的更好。 期待早日有MY 语言的CCL持仓量函数。

雨幕(youquant) 这个文档页面上,用ctrl + f 搜索“持仓量”有解决方案。