的数据合约行情的最高价。 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返回数据合约最近一次模型卖开位置到当前的最低价。
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个点,止盈平仓
判断上一个信号是否是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信号,且最新价大于开仓价格,卖平仓
判断上一个信号是否是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信号,且最新价小于开仓价格,买平仓
判断上一个信号是否是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); // 上一个信号是买平仓信号,则减仓一手
判断上一个信号是否是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); // 上一个信号是卖平仓信号,则减仓一手
判断上一个信号是否是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
判断上一个信号是否是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
判断上一个信号是否是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周期均线,开仓一手
判断上一个信号是否是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返回上一次买开仓的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返回上一次卖开仓的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返回上一次卖平仓的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返回上一次买平仓的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线的收盘价。
返回从当根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);
返回从当根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;
统计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周期均线,则买开仓
取指定开仓信号的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(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(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,卖平仓
取指定平仓信号的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(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(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取下单手数。
用法:取下单手数,多用于在加减仓模型加载多个合约的时候的手数计算。
注:
回测:返回回测参数中设置的手数。
例:
// 加载参数中下单手数设置为3时,下面编写BK的下单手数为6
C>O,BK(2*MYVOL);
C<O,SP(BKVOL);
账户可用资金。
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=账户可用资金+持仓保证金。
注:
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自定义,或者计算。
返回交易账户中的可用资金,等价于MONEY
。
用法:
ACCOUNTMONEY
返回交易账户中的可用资金。
返回交易账户中的权益,等价于MONEYTOT
。
用法:
ACCOUNTMONEYTOT
返回交易账户中的权益。
数字货币现货账户可用币数。
1、用于数字货币现货,获取当前可用币数。
杠杆率。
数字货币现货
a := MARGIN; // 固定为值1
数字货币期货
数字货币期货设置杠杆。
a := MARGIN; // 声明变量a,给a赋值当前合约杠杆率
取得TICK
的卖一价。
取得TICK
的卖二价。
取得TICK
的卖三价。
取得TICK
的卖四价。
取得TICK
的卖五价。
取得TICK
的卖一量。
取得TICK
的卖二量。
取得TICK
的卖三量。
取得TICK
的卖四量。
取得TICK
的卖五量。
取得TICK
的买一价。
取得TICK
的买二价。
取得TICK
的买三价。
取得TICK
的买四价。
取得TICK
的买五价。
取得TICK
的买一量。
取得TICK
的买二量。
取得TICK
的买三量。
取得TICK
的买四量。
取得TICK
的买五量。
取得TICK
的最新价。
抛出一个错误文本,程序退出。
EXIT('msg'); // 需要传入参数,字符串参数需要使用''包裹,抛出一个错误,错误文本为字符串msg
日志输出
INFO(cond, param, ...);
1、cond 为条件变量,为真输出日志。
2、条件变量后可跟多个可变参数。
例子:
INFO(1, C, '<-收盘价');
使用CONTRACT获取当前设置的合约映射的交易所合约代码。
INFO(1, CONTRACT);
使用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;
价格最小点数
在BITMEX期货交易所,价格最小点数为0.5。 在OKEX期货交易所,价格最小点数为0.01。
有些合约价格比较低的时候,需要注意定价货币精度,交易品种精度这些参数的设置,是否合适。
变量最长周期数
影响图表K线BAR数量,与javascript
策略中调用SetMaxBarLen
函数作用相同。
麦语言策略,状态栏表格上显示的持仓数量。
均为实际持仓数量。
条件判断(不推荐这样写)。
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
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合约。