这个本来用对应合约来做更准确,但是历史合约无法调用,干脆直接生成虚拟合约来测试。模拟投机高α的合约,基本不涉及时间价值损耗。
runmode:0;
VARIABLE:CHOLDING=0,PHOLDING=0;
KD:CHOLDING=0 AND kdd,NODRAW; //开多条件
PD:CHOLDING=1 AND pdd,NODRAW; //平多条件
KK:PHOLDING=0 AND kkk,NODRAW; //开空条件
PK:PHOLDING=1 AND pkk,NODRAW; //平空条件
QS:CALLSTOCKEX(STKLABEL,VTCLOSE , 6, -1, 1000000); //标的前收
JJ:=IF(QS<=3,0.05,IF(QS>3 AND QS<=5,0.1,0.25)); //行权间距简化版
B2J:=QS*10000-MOD(QS*10000,JJ*10000)-20000*JJ; //call行权价
S2J:=QS*10000-MOD(QS*10000,JJ*10000)+20000*JJ; //put行权价
ttt:HOLDING,NODRAW;
REFS2J:=REF(S2J,ENTERBARS); //记录当前持仓是哪个合约
REFB2J:=REF(B2J,ENTERBARS);
IF PK THEN
BEGIN
平空:SELL(1,0,LIMITR,MAX(0,REFS2J-C*10000)),IGNORECHECKPRICE; //平空信号
PHOLDING:=0;
END
IF PD THEN
BEGIN
平多:sell(1,0,LIMITR,MAX(0,C*10000-REFB2J)),IGNORECHECKPRICE; //平多信号
CHOLDING:=0;
END
IF KD THEN
BEGIN
开多:buy(1,2%,LIMITR,C*10000-B2J),IGNORECHECKPRICE; //开多信号
CHOLDING:=1;
END
IF KK THEN
BEGIN
开空:BUY(1,2%,LIMITR,S2J-C*10000),IGNORECHECKPRICE; //开空信号
PHOLDING:=1;
END
资产:ASSET,NOAXIS,COLORMAGENTA;
加了点注释,理想版本应该是能根据行权日期做价格修正,难度有点大,运算量也很大。vix经常偏离历史值,使得估计偏差放大。
runmode:0;
VARIABLE:CHOLDING=0,PHOLDING=0;
KD:CHOLDING=0 AND kdd,NODRAW; //开多条件
PD:CHOLDING=1 AND pdd,NODRAW; //平多条件
KK:PHOLDING=0 AND kkk,NODRAW; //开空条件
PK:PHOLDING=1 AND pkk,NODRAW; //平空条件
QS:CALLSTOCKEX(STKLABEL,VTCLOSE , 6, -1, 1000000); //标的前收
JJ:=IF(QS<=3,0.05,IF(QS>3 AND QS<=5,0.1,0.25)); //行权间距简化版
B2J:=QS*10000-MOD(QS*10000,JJ*10000)-20000*JJ; //认购行权价
S2J:=QS*10000-MOD(QS*10000,JJ*10000)+20000*JJ; //认沽行权价
ttt:HOLDING,NODRAW;
REFS2J:=REF(S2J,ENTERBARS); //记录当前持仓是哪个合约
REFB2J:=REF(B2J,ENTERBARS);
IF PK THEN
BEGIN
平空:SELL(1,0,LIMITR,MAX(0,REFS2J-C*10000)),IGNORECHECKPRICE; //平认沽
PHOLDING:=0;
END
IF PD THEN
BEGIN
平多:sell(1,0,LIMITR,MAX(0,C*10000-REFB2J)),IGNORECHECKPRICE; //平认购
CHOLDING:=0;
END
IF KD THEN
BEGIN
开多:buy(1,2%,LIMITR,C*10000-B2J),IGNORECHECKPRICE; //call认购
CHOLDING:=1;
END
IF KK THEN
BEGIN
开空:BUY(1,2%,LIMITR,S2J-C*10000),IGNORECHECKPRICE; //call认沽
PHOLDING:=1;
END
资产:ASSET,NOAXIS,COLORMAGENTA;