以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  交易策略发布专区  (http://weistock.com/bbs/list.asp?boardid=10)
----  [分享]期权投机策略的测试模块  (http://weistock.com/bbs/dispbbs.asp?boardid=10&id=137780)

--  作者:fantasynew
--  发布时间:2016/8/10 2:45:02
--  [分享]期权投机策略的测试模块

这个本来用对应合约来做更准确,但是历史合约无法调用,干脆直接生成虚拟合约来测试。模拟投机高α的合约,基本不涉及时间价值损耗。

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;


--  作者:fantasynew
--  发布时间:2016/8/10 2:50:12
--  

加了点注释,理想版本应该是能根据行权日期做价格修正,难度有点大,运算量也很大。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;


--  作者:fantasynew
--  发布时间:2016/8/10 3:15:28
--  

图片点击可在新窗口打开查看此主题相关图片如下:20160810031356.png
图片点击可在新窗口打开查看

--  作者:fantasynew
--  发布时间:2016/8/10 3:16:32
--  
金字塔里有两个510050,分属不同服务器,只能连接一个的情况下如何区分
--  作者:马良
--  发布时间:2016/8/10 8:15:15
--  
前面加市场前缀,上海SH,期权QQ
--  作者:a89578251
--  发布时间:2016/8/16 1:11:59
--  
kdd没定义
--  作者:fantasynew
--  发布时间:2016/8/18 15:39:09
--  
那是需要自己去定义开仓信号