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

Author: 小小梦, Created: 2018-11-30 13:29:33, Updated: 2022-12-09 17:46:10

的数据合约行情的最高价。 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信号,且最新价大于开仓价格,卖平仓
    
  • ISLASTSK

    判断上一个信号是否是SK。

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

    判断上一个信号是否是BP。

    ISLASTBP判断上一个交易信号是否是BP。
    
    用法:
    ISLASTBP上一个交易信号是BP则返回1(Yes),否则返回0(No)。
    
    BP信号未确认时,ISLASTBP返回值0。
    BP信号确认后,ISLASTBP返回1。
    b.信号执行方式选择不进行信号复核(例如:在模型中写入MULTSIG),BP信号当根ISLASTBP返回值为1。
    
    例:
    C<O,SK(2);
    C>O,BP(1);
    ISLASTBP,BP(1);                                    // 上一个信号是买平仓信号,则减仓一手
    
  • ISLASTSP

    判断上一个信号是否是SP。

    ISLASTSP判断上一个交易信号是否是SP。
    
    用法:
    ISLASTSP,上一个交易信号是SP则返回1(Yes),否则返回0(No)。
    
    SP信号未确认时,ISLASTSP返回值0。
    SP信号确认后,ISLASTSP返回1。
    b.信号执行方式选择不进行信号复核(例如:在模型中写入MULTSIG),SP信号当根ISLASTSP返回值为1。
    
    例:
    C>O,BK(2);
    C<O,SP(1);
    ISLASTSP,SP(1);                                   // 上一个信号是卖平仓信号,则减仓一手
    
  • ISLASTBPK

    判断上一个信号是否是BPK。

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

    判断上一个信号是否是SPK。

    ISLASTSPK判断上一个交易信号是否是SPK。
    
    用法:
    ISLASTSPK上一个交易信号是SPK则返回1(Yes),否则返回0(No)。
    
    SPK信号未确认时,ISLASTSPK返回值0。
    SPK信号确认后,ISLASTSPK返回1。
    b.信号执行方式选择不进行信号复核(例如:在模型中写入MULTSIG),SPK信号当根ISLASTSPK返回值为1。
    
    注:模型中含有SPK条件,且上一个信号为平仓信号时,由SPK指令产生的SK信号,ISLASTSK返回0,ISLASTSPK返回1。
    
    例:
    C<O,SPK;
    ISLASTSPK&&C>O,BPK;
    AUTOFILTER;                                     // 上一个信号是SPK信号,则反手BPK
    
  • ISLASTSTOP

    判断上一个信号是否是STOP。

    ISLASTSTOP判断上一个交易信号是否是STOP。
    
    用法:
    ISLASTSTOP上一个交易信号是STOP则返回1(Yes),否则返回0(No)。
    
    注:收盘价模型STOP信号下根K线ISLASTSTOP返回值为1;指令价模型STOP信号当根K线ISLASTSTOP返回值为1。
    
    例:
    CROSS(C,MA(C,5)),BK(2);
    STOP(0,5);
    ISLASTSTOP&&CROSS(C,MA(C,10)),BK(1);           // 上一个信号是STOP信号,且价格上穿10周期均线,开仓一手
    
  • ISLASTCLOSEOUT

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

    ISLASTCLOSEOUT判断上一个信号是否CLOSEOUT。
    
    用法:
    ISLASTCLOSEOUT上一个交易信号是CLOSEOUT返回1(Yes),否则返回0(No)。
    
    CLOSEOUT信号未确认时,ISLASTCLOSEOUT返回值0。
    CLOSEOUT信号确认后,ISLASTCLOSEOUT返回1。
    b.信号执行方式选择不进行信号复核(例如:在模型中写入MULTSIG),CLOSEOUT信号当根ISLASTCLOSEOUT返回值为1。
    
    例:
    ISLASTCLOSEOUT&&C>O,BK(1);                     // 上一个信号是清仓信号,并且当根K线是阳线,则买开一手
    
  • BARSBK

    上一次买开信号位置。

    BARSBK上一次买开信号位置。
    
    用法:
    BARSBK返回上一次买开仓的K线距离当前K线的周期数(不包含出现BK信号的那根K线)。
    取包含BK信号出现的那根K线到当前K线的周期数,则需要在此函数后+1,即BARSBK+1;由于发出BK信号的当根k线BARSBK返回空值,则BARSBK+1在发出BK信号当根k线返回空值。
    
    注:
    1、若当前K线之前无BK信号,则函数返回值为空值。
    2、BK信号固定后BARSBK返回为空值。
    (1)设置信号执行方式为K线走完确认信号下单。
    BARSBK返回值为上一个BK信号距离当前的K线根数(包含当前K线)
    (2)设置信号执行方式为出信号立即下单,不复核(例如:在模型中写入MULTSIG)
        a.历史信号计算中,出现BK信号的当根K线,BARSBK返回空值。
        b.加载运行过程中,信号固定后BARSBK返回空值。
    
    BARSBK返回值为上一个BK信号距离当前的K线根数(包含当前K线)。
    
    例:
    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上一次卖开信号位置。
    
    用法:
    BARSSK返回上一次卖开仓的K线距离当前K线的周期数(不包含出现SK信号的那根K线)。
    取包含SK信号出现的那根K线到当前K线的周期数,需要在此函数后+1,即BARSSK+1;由于发出SK信号的当根k线BARSSK返回空值,则BARSSK+1在发出SK信号当根k线返回空值。
    
    注:
    1、若当前K线之前无SK信号,则函数返回值为空值。
    2、SK信号固定后BARSSK返回为空值。
    (1)设置信号执行方式为K线走完确认信号下单。
    BARSSK返回值为上一个SK信号距离当前的K线根数(包含当前K线)
    (2)设置信号执行方式为出信号立即下单,不复核(例如:在模型中写入MULTSIG)
        a.历史信号计算中,出现SK信号当根K线,BARSSK返回空值。
        b.加载运行过程中,SK信号当根K线,信号固定后BARSSK返回空值。
    
    BARSSK返回值为上一个SK信号距离当前的K线根数(包含当前K线)。
    
    例:
    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线,1K线为开仓信号的当根k线,则返回当根k线的收盘价,2、3K线AA返回值为1K线的收盘价。
    
  • BARSSP

    上一次卖平信号位置。

    BARSSP上一次卖平信号位置。
    
    用法:
    BARSSP返回上一次卖平仓的K线距离当前K线的周期数(不包含出现SP信号的那根K线)。
    取包含SP信号出现的那根K线到当前K线的周期数,则需要在此函数后+1,即BARSSP+1。由于发出SP信号的当根k线BARSSP返回空值,则BARSSP+1在发出SP信号当根k线返回空值。
    
    注:
    1、若当前K线之前无SP信号,则函数返回值为空值。
    2、SP信号固定后BARSSP返回为空值。
    (1)设置信号执行方式为K线走完确认信号下单。
    BARSBP返回值为上一个BP信号距离当前的K线根数(包含当前K线)。
    (2)设置信号执行方式为出信号立即下单,不复核(例如:在模型中写入MULTSIG)
        a.历史信号计算中,出现SP信号当根K线,BARSSP返回空值。
        b.加载运行过程中,SP信号当根K线,信号固定后BARSSP返回空值。
    BARSSP返回值为上一个SP信号距离当前的K线根数(包含当前K线)。
    
    例:
    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线的收盘价。
    
  • BARSBP

    上一次买平信号位置。

    BARSBP上一次买平信号位置。
    
    用法:
    BARSBP返回上一次买平仓的K线距离当前K线的周期数(不包含出现BP信号的那根K线)。
    取包含BP信号出现的那根K线到当前K线的周期数,则需要在此函数后+1,即BARSBP+1。由于发出BP信号的当根k线BARSBP返回空值,则BARSBP+1在发出BP信号当根k线返回空值。
    
    注:
    1、若当前K线之前无BP信号,则函数返回值为空值。
    2、BP信号固定后BARSBP返回为空值。
    (1)设置信号执行方式为K线走完确认信号下单。
    BARSBP返回值为上一个BP信号距离当前的K线根数(包含当前K线)
    (2)设置信号执行方式为出信号立即下单,不复核(例如:在模型中写入MULTSIG)
        a.历史信号计算中,出现BP信号当根K线,BARSBP返回空值。
        b.加载运行过程中,BP信号当根K线,信号固定后BARSBP返回空值。
    
    BARSBP返回值为上一个BP信号距离当前的K线根数(包含当前K线)。
    
    例:
    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线的收盘价。
    
  • REFSIG_VOL

    返回从当根K线开始倒数第N个固定的Sig信号的信号手数(反手指令取开仓手数)。

    用法: REFSIG_VOL(Sig,N);,判断从当根K线开始倒数第N个固定的Sig信号的手数。如果没有Sig信号,或者没有固定的Sig信号,则该函数返回0。

    注: 1、Sig位置支持的信号有:BK,SK,BP,SP,BPK,SPK,CLOSEOUT,STOP。 2、如果倒数第N个固定的Sig信号在当根K线上,那么该函数返回当前信号手数。 4、N为0或空值时,该函数返回0。 5、参数N支持变量。

    例:

    // 如果从当根K线开始倒数第3个固定的BK信号所在的距离当前K线有5根K线,并且信号手数大于2,平掉所有持仓
    REFSIG_PLACE(BK,3)=5&&REFSIG_VOL(BK,3)>2,SP(BKVOL);
    
  • REFSIG_PRICE

    返回从当根K线开始倒数第N个固定的Sig信号的信号价位。

    用法: REFSIG_PRICE(Sig,N);,判断从当根K线开始倒数第N个固定的Sig信号的信号价位。如果没有Sig信号,或者没有固定的Sig信号,则该函数返回空值。

    注: 1、Sig位置支持的信号有:BK,SK,BP,SP,BPK,SPK,CLOSEOUT,STOP。 2、如果当根K线上有固定的Sig信号,那么该函数计算信号时,包括当根K线的信号。 3、N为0或空值时,该函数返回空值。 4、参数N支持变量。

    例:

    // 如果从当根K线开始倒数第3个固定的BK信号的开仓价位为3000,并且多头持仓大于0,卖平仓
    REFSIG_PRICE(BK,3)=3000&&BKVOL>0,SP;
    
  • COUNTSIG

    统计N周期内,X信号的数量。

    用法: COUNTSIG(X,N);统计N周期内,X信号的数量。 X可以为BK,SK,SP,BP,SPK,BPK,CLOSEOUT,STOP

    注: 1、统计周期时, (1)包含当前k线。 (2)若N为0则从第一个有效值算起。 (3)当N为有效值,但当前的k线数不足N根,从第一根统计到当前周期。 (4)N为空值时返回值为空值。 (5)N可以为变量。 2、统计信号时: (1)信号执行方式选择为K线走完确认信号或者K线走完复核(例如:在模型中写入CHECKSIG(SIG,‘A’,0,‘D’,0,0);),不包含当根K线上未固定的信号,即返回已经固定的信号个数。 (2)信号执行方式选择为不进行信号复核(例如:在模型中写入MULTSIG或MULTSIG_MIN;),包含当根K线上信号发出并且固定后的信号。 3、由BPK指令产生的BK信号按BPK信号处理,SPK指令产生的SK信号同理。

    例:

    N:=BARSLAST(DATE<>REF(DATE,1))+1;
    BKN:=COUNTSIG(BK,N);
    MA5:=MA(C,5);
    BKN=0&&C>MA5,BK;                        // 当日内日未出现过BK信号并且最新价大于5周期均线,则买开仓
    
  • ENTRYSIG_PLACE

    取指定开仓信号的K线位置。

    用法: ENTRYSIG_PLACE(N);,取一次完整交易中第N个开仓信号所在K线的位置。如果没有开仓信号,则该函数返回空值。

    注: 1、开仓信号有:BK,SK,BPK,SPK。 2、从开仓到持仓为0被视为一次完整交易。 3、一次完整交易中开仓信号个数小于N时,该函数返回空值。 4、K线位置是指当前K线到指定开仓信号所在K线的根数。 5、N为0或空值时,该函数返回空值。 6、参数N不支持为变量。

    例:

    ENTRYSIG_PLACE(3)=5&&BKVOL>0,SP;        // 如果第3个开仓信号所在K线距离当前K线有5根K线,并且多头持仓大于0,卖平仓
    
  • ENTRYSIG_PRICE

    取指定开仓信号的价格。

    用法: ENTRYSIG_PRICE(N);,取一次完整交易中第N个开仓信号的价格。如果没有开仓信号,则该函数返回空值。

    注: 1、开仓信号有:BK,SK,BPK,SPK。 2、从开仓到持仓为0被视为一次完整交易。 3、一次完整交易中开仓信号个数小于N时,该函数返回空值。 4、N为0或空值时,该函数返回空值。 5、参数N不支持为变量。 6、该函数的计算包含滑点。 7、收盘价模型:在指定信号的当根K线函数的取值不会发生变化。 指令价模型:在指定信号的当根K线返回当次交易第N个开仓信号的价格。

    例:

    ENTRYSIG_PRICE(3)=3000&&BKVOL>0,SP;     // 如果第3个固定的开仓信号的开仓价位为3000,并且多头持仓大于0,卖平仓
    
  • ENTRYSIG_VOL

    取指定开仓信号的信号手数。

    用法: ENTRYSIG_VOL(N);,取一次完整交易中第N个开仓信号的信号手数。如果没有开仓信号,则该函数返回空值。

    注: 1、开仓信号有:BK,SK,BPK,SPK。 2、从开仓到持仓为0被视为一次完整交易。 3、一次完整交易中开仓信号个数小于N时,该函数返回空值。 4、N为0或空值时,该函数返回空值。 5、参数N不支持为变量。 6、收盘价模型:在指定信号的当根K线函数的取值不会发生变化。 指令价模型:在指定信号的当根K线返回当次交易第N个开仓信号的信号手数。

    例:

    ENTRYSIG_PRICE(3)=3000&&ENTRYSIG_VOL(3)>2,SP;     // 如果第3个固定的开仓信号的开仓价位为3000,并且第3个固定的开仓信号的信号手数大于2,卖平仓
    
  • EXITSIG_PLACE

    取指定平仓信号的K线位置。

    用法: EXITSIG_PLACE(N);,取一次完整交易中第N个平仓信号所在K线的位置。如果没有平仓信号,则该函数返回空值。

    注: 1、平仓信号有:BP,SP,CLOSEOUT,STOP。 2、从开仓到持仓为0被视为一次完整交易。 3、平仓信号个数小于N时,该函数返回空值。 4、K线位置是指当前K线到指定平仓信号所在K线的根数。 5、N为0或空值时,该函数返回空值。 6、参数N不支持为变量。

    例:

    EXITSIG_PLACE(3)=5&&BKVOL<=0,BK;                  // 如果第3个平仓信号所在K线距离当前K线有5根K线,并且没有多头持仓,买开仓
    
  • EXITSIG_PRICE

    取指定平仓信号的价格。

    用法: EXITSIG_PRICE(N);,取一次完整交易中第N个平仓信号的价格。如果没有平仓信号,则该函数返回空值。

    注: 1、平仓信号有:BP,SP,CLOSEOUT,STOP。 2、从开仓到持仓为0被视为一次完整交易。 3、一次完整交易中平仓信号个数小于N时,该函数返回空值。 4、N为0或空值时,该函数返回0。 5、参数N不支持为变量。 6、该函数的计算包含滑点 7、收盘价模型:在指定信号的当根K线函数的取值不会发生变化。 指令价模型:在指定信号的当根K线返回当次交易第N个平仓信号的价格。

    例:

    EXITSIG_PRICE(3)=3000&&BKVOL>0,SP;               // 如果第3个固定的平仓信号的平仓价位为3000,并且多头持仓大于0,卖平仓
    
  • EXITSIG_VOL

    取指定平仓信号的信号手数。

    用法: EXITSIG_VOL(N)取一次完整交易中第N个平仓信号的信号手数。如果没有平仓信号,则该函数返回空值。

    注: 1、平仓信号有:BP,SP,CLOSEOUT,STOP。 2、从开仓到持仓为0被视为一次完整交易。 3、一次完整交易中平仓信号个数小于N时,该函数返回空值。 4、N为0或空值时,该函数返回0。 5、参数N不支持为变量。 6、收盘价模型:在指定信号的当根K线函数的取值不会发生变化。 指令价模型:在指定信号的当根K线返回当次交易第N个平仓信号的信号手数。

    例:

    EXITSIG_PRICE(3)=3000&&EXITSIG_VOL(3)>2,BK;      // 如果第3个固定的平仓信号的平仓价位为3000,并且第3个固定的平仓信号的信号手数大于2,买开仓
    
  • 头寸函数

    • MYVOL

      取下单手数。

      MYVOL取下单手数。
      
      用法:取下单手数,多用于在加减仓模型加载多个合约的时候的手数计算。
      
      注:
      回测:返回回测参数中设置的手数。
      
      例:
      // 加载参数中下单手数设置为3时,下面编写BK的下单手数为6
      C>O,BK(2*MYVOL);
      C<O,SP(BKVOL);
      
    • MONEY

      账户可用资金。

      MONEY账户可用资金。
      
      用法:MONEY返回账户可用资金,用于仓位、手数等计算。
      
      计算方法:
      1、账户中MONEY的初始值为保证金参数中设置的起始资金。
      2、历史回测中MONEY的初始值为回测参数中设置的初始资金。
      3、开仓信号当根k线的MONEY值:开仓前可用资金-持仓保证金-手续费,其中持仓保证金=开仓价格*保证金比例*交易单位*手数。
      4、开仓后未平仓的k线的MONEY值=开仓信号前k线的MONEY值+浮动盈亏PROFIT。
      5、平仓信号当根k线的MONEY值:平仓前可用资金+平仓盈亏+平仓释放的保证金-手续费,其中平仓释放的保证金=开仓价格*保证金比例*交易单位*手数。
      
      注:
      1、信号执行方式为,‘K线走完确认下单’或‘XX下单,K线走完复核’:
        a.开仓信号当根K线,MONEY返回值为上根K线的可用资金-开仓保证金-手续费。
        b.平仓信号当根K线,MONEY返回值为上根K线的可用资金+平仓盈亏+持仓释放的保证金-手续费。
      2、信号执行方式选择,‘出信号下单,不进行复核’:
        a.开仓信号当根K线,MONEY返回值为当根k线开仓之前的可用资金-开仓保证金-手续费。
        b.平仓信号当根K线,MONEY返回值为当根K线平仓之前的可用资金+平仓盈亏+平仓释放的保证金-手续费。
      3、信号执行方式为‘K线走完确认信号下单’时,平仓盈亏=(平仓信号当根K线的收盘价-开仓价格)*手数*交易单位-手续费。
      4、信号执行方式为‘出信号立即下单,不复核’时,平仓盈亏=(平仓信号的指令价-开仓价格)*手数*交易单位-手续费。
      5、账户初始化后,MONEY返回值为初始化框中可用资金。
      
      例:
      K:=MONEY*0.2/(C*MARGIN*UNIT+FEE);               // 账户可用资金的20%可以开仓的手数(此写法适用于按固定手数收取手续费的合约),FEE自定义,或者计算
      
    • MONEYTOT

      账户权益。

      MONEYTOT账户权益。
      
      用法:MONEYTOT返回当前账户权益,模型进行仓位控制、下单手数等资金管理时使用。
      
      计算方法:MONEYTOT=账户可用资金+持仓保证金。
      
      注:
      1、账户中MONEYTOT的初始值为保证金参数中设置的起始资金。
      2、历史回测中MONEYTOT的初始值为回测参数中设置的初始资金。
      3、账户初始化时:
        a.当前信号为开仓信号,MONEYTOT返回值为初始化框中账户可用资金。
        b.当前信号为平仓信号,则MONEYTOT返回初始化框中账户可用资金+持仓保证金。
      4、开仓信号当根k线:MONEYTOT=账户可用资金+持仓保证金。
      5、开仓后平仓前:MONEYTOT返回当前账户可用资金+持仓保证金。
      6、平仓信号当根k线:持仓为0时,MONEYTOT=可用资金;持仓不为0时,MONEYTOT=可用资金+持仓占用的保证金。
      注:
      持仓列表可用资金为包含了浮动盈亏的可用资金(= 当前权益 - 持仓占用的保证金)。
      
      例:
      K:=MONEYTOT*0.2/(C*MARGIN*UNIT+FEE); // 账户权益的20%可以开仓的手数(此写法适用于按固定手数收取手续费的合约),FEE自定义,或者计算。
      
    • ACCOUNTMONEY

      返回交易账户中的可用资金,等价于MONEY

      用法: ACCOUNTMONEY返回交易账户中的可用资金。

    • ACCOUNTMONEYTOT

      返回交易账户中的权益,等价于MONEYTOT

      用法: ACCOUNTMONEYTOT返回交易账户中的权益。

    • COINS

      数字货币现货账户可用币数。

      1、用于数字货币现货,获取当前可用币数。
      
    • MARGIN

      杠杆率。

      数字货币现货

      a := MARGIN;   // 固定为值1
      

      数字货币期货

      数字货币期货设置杠杆。

      img

      a := MARGIN;   // 声明变量a,给a赋值当前合约杠杆率
      
  • TICK数据函数

    • ASK1

      取得TICK的卖一价。

    • ASK2

      取得TICK的卖二价。

    • ASK3

      取得TICK的卖三价。

    • ASK4

      取得TICK的卖四价。

    • ASK5

      取得TICK的卖五价。

    • ASK1VOL

      取得TICK的卖一量。

    • ASK2VOL

      取得TICK的卖二量。

    • ASK3VOL

      取得TICK的卖三量。

    • ASK4VOL

      取得TICK的卖四量。

    • ASK5VOL

      取得TICK的卖五量。

    • BID1

      取得TICK的买一价。

    • BID2

      取得TICK的买二价。

    • BID3

      取得TICK的买三价。

    • BID4

      取得TICK的买四价。

    • BID5

      取得TICK的买五价。

    • BID1VOL

      取得TICK的买一量。

    • BID2VOL

      取得TICK的买二量。

    • BID3VOL

      取得TICK的买三量。

    • BID4VOL

      取得TICK的买四量。

    • BID5VOL

      取得TICK的买五量。

    • NEW

      取得TICK的最新价。

  • 系统

    • EXIT

      抛出一个错误文本,程序退出。

      EXIT('msg');   // 需要传入参数,字符串参数需要使用''包裹,抛出一个错误,错误文本为字符串msg
      
    • INFO

      日志输出

      INFO(cond, param, ...);
      
      1、cond 为条件变量,为真输出日志。
      2、条件变量后可跟多个可变参数。
      例子:
      INFO(1, C, '<-收盘价');
      
    • CONTRACT

      使用CONTRACT获取当前设置的合约映射的交易所合约代码。

      INFO(1, CONTRACT);
      

      img

    • DATA

      使用DATA指令加载数据。

      (*backtest
      start: 2020-01-21 00:00:00
      end: 2020-02-12 00:00:00
      period: 1d
      basePeriod: 1h
      exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
      *)
      A:DATA('https://www.fmz.com/upload/asset/32bf73a69fc12d36e76.json');
      INFO(1, CONTRACT, A);
      C>HV(H, 10),SPK;
      C<LV(L, 15),BPK;
      AUTOFILTER;
      

      使用['属性名称']取数据中的某个属性值,https://www.fmz.com/upload/asset/1ef31d778467ed9dd00.json为外部数据链接,可以是其它服务程序提供数据的链接,也可以是发明者量化交易平台数据中心提供的数据,例如例子中注释的部分(*消费指数:DATA('CPI')['城市'];*),使用代码CPI获取数据(数据暂时未全部开放)。

      (*backtest
      start: 2018-01-21 00:00:00
      end: 2020-02-12 00:00:00
      period: 1d
      basePeriod: 1d
      exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
      *)
      
      消费指数:DATA('https://www.fmz.com/upload/asset/1ef31d778467ed9dd00.json')['城市'];
      (*消费指数:DATA('CPI')['城市'];*)
      消费指数>HV(消费指数, 90),BPK;
      消费指数<LV(消费指数, 90),SPK;
      AUTOFILTER;
      

      img

  • 其它

    • 麦语言类库参数

      • 价格最小点数

        img

        在BITMEX期货交易所,价格最小点数为0.5。 在OKEX期货交易所,价格最小点数为0.01。

        有些合约价格比较低的时候,需要注意定价货币精度,交易品种精度这些参数的设置,是否合适。

      • 变量最长周期数 影响图表K线BAR数量,与javascript策略中调用SetMaxBarLen函数作用相同。

      • 麦语言策略,状态栏表格上显示的持仓数量。

        均为实际持仓数量。

        img

      • 条件判断(不推荐这样写)。

        IF H > C THEN
        BEGIN
            X:=10;
        END
        
    • 范例:

      • 实时价模型时,新增K线Bar时检测:

        VARIABLE:N:0;
        IF N <> BARPOS AND ISLASTBAR = 1 THEN
        BEGIN
            N:=BARPOS;
            INFO(1, '123');
        END
        

More

98K-系列高阶交易指标 k线上穿j1 收阳线站上j1后 回踩j1 开单 ,可回测时 却在阴线且没有站上j1的位置 也开单了 ,小梦老师 请教下 这是哪里错误了 D1:=if(jk<0 && CROSS(close,j1) and CLOSE>OPEN and close>j1,j1,0); D1,BK; /upload/asset/2af6fee82ea8bb3725687.png

98K-系列高阶交易指标 国内的爱交易平台 有麦语言的函数库 ,不知以后可否兼容下,像兼容tradingview上的函数一样,这样两边的指标策略,直接就可以平移到发明者上来量化了

98K-系列高阶交易指标 isLast(x) 函数说明:判断当前数据是否为最后一条数据。发明者上的这个函数功能有吗

wanghehe711@qq.com 麦语言可以实现一个实盘多品种运行吗

ltcrem 如果要挂MARK单需要嵌入JAVA或PYHON吗?能否给个例子?

麦语言支持okex合约吗?能接入okex合约的api吗

小小梦 好的,这边看下。

小小梦 暂时,没有支持这个isLast指令

小小梦 麦语言是单品种单平台策略,只能操作一个品种,一个账号。

小小梦 这样设计 比较复杂, 建议如果 是挂单策略,直接使用JS,PY 编写策略。

小小梦 支持,可以用于OKEX合约。