0
关注
169
关注者

优宽量化My语言(Mylang)文档

创建于: 2021-10-25 16:58:53, 更新于: 2024-01-31 12:18:24
comments   7
hits   4316
判断上一个信号是否是 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信号的信号手数(反手指令取开仓手数)。

    用法:

    
    
    注:
    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信号的信号价位。

    用法:

    
    
    注:
    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信号的数量。

    用法:

    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线位置。

    用法:

    
    
    注:
    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

    取指定开仓信号的价格。

    用法:

    
    
    注:
    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

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

    用法:

    
    
    注:
    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线位置。

    用法:

    
    
    注:
    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

    取指定平仓信号的价格。

    用法:

    
    
    注:
    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

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

    用法:

    
    
    注:
    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

    用法:

    
    - ## ACCOUNTMONEYTOT
    
    
    返回交易账户中的权益,等价于```MONEYTOT```。
    
    
    用法:
    ```ACCOUNTMONEYTOT```返回交易账户中的权益。
    
    - ## MARGIN
    
    
    杠杆率
    
    
    > 商品期货
    
    
    

    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获取当前设置的虚拟合约对应的真正的合约。

    (*backtest
    start: 2020-01-21 00:00:00
    end: 2020-02-12 00:00:00
    period: 1d
    basePeriod: 1h
    exchanges: [{"eid":"Futures_CTP","currency":"FUTURES"}]
    *)
    
    
    INFO(1, CONTRACT);
    C>HV(H, 10),SPK;
    C<LV(L, 15),BPK;
    AUTOFILTER;
    

    优宽量化My语言(Mylang)文档

    • ## DATA

    使用DATA指令加载数据。

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

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

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

    优宽量化My语言(Mylang)文档

  • 其它

    • 麦语言类库参数

      • 价格最小点数

    优宽量化My语言(Mylang)文档

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

    • 变量最长周期数

    影响图表K线BAR数量,与javascript策略中调用SetMaxBarLen函数作用相同。

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

    均为 实际持仓数量。

    优宽量化My语言(Mylang)文档

    • 条件判断(不推荐这样写)。
      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
    
更多内容
全部留言
avatar of pcx3610
pcx3610
搜索:OPI
2022-08-29 20:30:20
avatar of jkyei-cn
jkyei-cn
没有CCL持仓量函数(只有VOL),赶快加一下啊大佬。
2022-08-22 12:37:12
avatar of 雨幕(youquant)
雨幕(youquant)
好的,这边已经报过了。临时可以用以上方法暂时替代,这边很快兼容上这个指令。
2022-08-30 09:05:38
avatar of jkyei-cn
jkyei-cn
也谢谢你能给我回复。你推荐的我是知道的。问题是我的文华策略有许多处引用,且都有参数值,这样就彻底破坏了MY语言的简洁严密和一致了。 试想一下文华要是没有持仓量(OPI/CCL)这个函数,能有多少客户。
2022-08-29 22:17:26
avatar of 雨幕(youquant)
雨幕(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; ```
2022-08-29 21:25:00
avatar of jkyei-cn
jkyei-cn
那不是MY 语言,具体引用时候非常麻烦。并且实盘与回测用法不同,结果一致性存疑。 所有量化软件都有封装好的CCL,FMZ应该能把这个MY语言做的更好。 期待早日有MY 语言的CCL持仓量函数。
2022-08-22 20:34:28
avatar of 雨幕(youquant)
雨幕(youquant)
这个文档页面上,用ctrl + f 搜索“持仓量”有解决方案。
2022-08-22 13:42:21