的数据合约行情的最高价。 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信号的信号手数(反手指令取开仓手数)。
用法:
注:
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信号的信号价位。
用法:
注:
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信号的数量。
用法:
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线位置。
用法:
注:
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,卖平仓 “`
取指定开仓信号的价格。
用法:
注:
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,卖平仓 “`
取指定开仓信号的信号手数。
用法:
注:
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线位置。
用法:
注:
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线,并且没有多头持仓,买开仓 “`
取指定平仓信号的价格。
用法:
注:
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,卖平仓 “`
取指定平仓信号的信号手数。
用法:
注:
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。
用法:
- ## ACCOUNTMONEYTOT
返回交易账户中的权益,等价于```MONEYTOT```。
用法:
```ACCOUNTMONEYTOT```返回交易账户中的权益。
- ## COINS
数字货币现货账户可用币数。
1、用于数字货币现货,获取当前可用币数。
- ## MARGIN
杠杆率。
> 数字货币现货
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
范例:
VARIABLE:N:0;
IF N <> BARPOS AND ISLASTBAR = 1 THEN
BEGIN
N:=BARPOS;
INFO(1, '123');
END