一开一平信号过滤模型是开平对应的,开仓后只能是与之对应的平仓操作。可有时我们想实现加减仓等策略,显然一开一平信号过滤模型无法实现,而加减仓模型开仓后可继续加仓,实现了自由加减仓以及更高级的资金管理策略。
加减仓模型编写规则:
1、源码中不能有AUTOFILTER一开一平信号过滤函数。
2、不支持不带手数的开平仓指令(如,BK;)和反手指令(如,BPK、SPK)。
3、支持的指令BK(N)、BP(N)、SK(N)、SP(N)、SPK(N)、BPK(N)、CLOSEOUT;支持指令分组。
什么是加减仓模型:
加减仓模型,允许连续出开仓信号或者连续出平仓信号,可实现加仓、减仓。下图为编写示范及运行效果。
加减仓模型有哪些作用:
对于需要进行加、减仓操作的交易者,在策略执行的时候希望开仓后的下一个动作依然可以是开 仓,或者能够连续分批平仓。如果是一开一平信号过滤模型,开仓后只能是与之对应的平仓操作,这样就无法实现加仓、减仓策略。加减仓模型允许连续出开仓信号或者连续出平仓信号,可解决这个问题。
加减仓模型编写时需要注意的问题有哪些:
A、加仓模型中,加仓语句需要判断是否是第一次开仓;方法:可利用判断当前是否有持仓或判断上一个信号是否是相同信号的方法确定是否是第一次开仓。如,加仓条件&&BKVOL>0,BK(N);或者加仓条件&&ISLASTBK=1,BK(N);
B、减仓模型中,减仓语句需要判断当前是否有可平持仓;方法:可利用BKVOL或SKVOL这样的函数来判断持仓情况。如,平仓条件&&BKVOL>0,SP(BKVOL);
C、要注意考虑前一信号的方向防止锁仓;方法:在开仓语句中加入判断前一信号方向的函数。如,开仓条件&&ISLASTBK=0,SK(N);
为什么加减仓模型编写时指令后面一定要有手数:
由于加减仓模型中可进行加仓,或者减仓,每笔交易的手数可能会不一样,所以需要具体指定;
为什么我的加减仓模型不加仓:
在加减仓模型运行时“一个指令行,在一次“开仓->平仓”交易过程中只发一次信号”。如果想让加减仓模型的同一行开仓或平仓指令重复执行可在模型中加入TRADE_AGAIN(N)函数。
例:
CLOSE>OPEN,BK(1);
CLOSE<OPEN,SP(1);
TRADE_AGAIN(5);
注:有TRADE_AGAIN(N)函数的模型支持同一指令连续发,因此能够实现加减仓。