以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 高级功能研发区 (http://weistock.com/bbs/list.asp?boardid=5) ---- 请老师帮忙编译下 谢谢了 (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=90794) |
|
-- 作者:qq代人发帖 -- 发布时间:2016/1/28 14:49:06 -- 请老师帮忙编译下 谢谢了 w=windmatlab; %连接万德 Feb_list_call=w.wset(\'OptionChain\',\'date=20160127;us_code=510050.SH;option_var=510050OP.SH;month=201602;call_put=call;field=option_code\'); %读取2月认购合约代码 n=length(Feb_list_call); interval=0; %设置合约间隔 fee=12; %策略固定费用 pos=0; %开平仓标识,1为开,0为平 SUMMARY=cell(1,9); %设置输出变量title SUMMARY{1,1}=\'时间\';SUMMARY{1,2}=\'低行权价合约代码\';SUMMARY{1,3}=\'低行权价合约价格\';SUMMARY{1,4}=\'居中行权价合约代码\';SUMMARY{1,5}=\'居中行权价合约价格\';SUMMARY{1,6}=\'高行权价合约代码\';SUMMARY{1,4}=\'高行权价合约价格\';SUMMARY{1,5}=\'浮动盈亏\';SUMMARY{1,6}=\'开平标识\'; summary=[]; t1=datenum(\'2015-12-03 09:30:00\'); t2=datenum(\'2015-12-03 11:30:00\'); t3=datenum(\'2015-12-03 13:00:00\'); t4=datenum(\'2015-12-03 14:32:00\'); starttimenum1=rem(t1,1); endtimenum1=rem(t2,1); starttimenum2=rem(t3,1); endtimenum2=rem(t4,1); while (rem(now,1)>=starttimenum1&&rem(now,1)<=endtimenum1)||(rem(now,1)>=starttimenum2&&rem(now,1)<=endtimenum2) for interval=0:fix((n-3)/2) for i=1:n-(interval*2+2) Price=w.wsq(Feb_list_call,\'rt_bid1,rt_ask1\'); %读取实时行情价格 T=w.wsq(\'510050.SH\',\'rt_time\'); %读取时间 if pos>0 %若有开仓 C2_call_buy=Price(i+interval,2); %记录中间行权价合约价格 C2_call_code=Feb_list_call(i+interval); %记录中间行权价合约代码 C1_call_sell=Price(i,1); %记录低行权价合约价格 C1_call_code=Feb_list_call(i); %记录低行权价合约代码 C3_call_sell=Price(i+2*interval,1); %记录高行权价合约价格 C3_call_code=Feb_list_call(i+2*interval,1); %记录高行权价合约代码 Profit_or_Loss=C1_call_sell-C1_call_buy+C2_call_sell-C2_call_buy+C3_call_sell-C3_call_buy; %记录浮动盈亏 if Price(i+interval,2)-0.5*Price(i,1)-0.5*Price(i+2*interval,1)-fee<0 %若满足平仓条件 pos=0; %更新pos end summary=[summary;T,C1_call_code,C1_sell,C2_call_code,C2_buy,C3_call_code,C3_sell,Profit_or_Loss,pos]; %记录行情 end if pos==0 && Price(i+interval,1)-0.5*Price(i,2)-0.5*Price(i+2*interval,2)-fee>0 %若满足开仓条件 pos=1; %更新pos C2_call_sell=Price(i+interval,1); %同上 C2_call_code=Feb_list_call(i+interval); C1_call_buy=Price(i,2); C1_call_code=Feb_list_call(i); C3_call_buy=Price(i+2*interval,2); C3_call_code=Feb_list_call(i+2*interval,1); Profit_or_Loss=0; %开仓时浮动盈亏为0 summary=[summary;T,C1_call_code,C1_call_buy,C2_call_code,C2_call_sell,C3_call_code,C3_call_buy,Profit_or_Loss,pos]; %记录行情 end end interval=interval+1; %更新合约间隔 end end S=num2cell(summary); %修改矩阵类型 SUMMARY=[SUMMARY;S]; 就是随便写了一个简单的认购期权凸性套利的策略的例子,主要是想看看PEL是怎么实现这些matlab函数的 不过写的比较简单,如果老师比较熟悉期权的话,能完善一下“全市场扫描合约”这样的过程就更好了~ 其实就是期权凸性套利了 老师搜一下这个套利原理也可以,就一个公式 |
|
-- 作者:fly -- 发布时间:2016/1/28 16:35:21 -- http://www.weistock.com/bbs/dispbbs.asp?boardid=5&Id=12481 matlab相关的,您先看看这个帖子,看是否有帮助。 |
|
-- 作者:vivi -- 发布时间:2016/1/29 13:17:50 -- 老师您好,怎么用PEL语言实现 "搜寻整个期权市场所有的期权合约,找出其中某三个合约满足 2*C2-C1-C3>0条件的”呢? |
|
-- 作者:vivi -- 发布时间:2016/1/29 13:19:59 -- 以下是引用fly在2016/1/28 16:35:21的发言:
http://www.weistock.com/bbs/dispbbs.asp?boardid=5&Id=12481 matlab相关的,您先看看这个帖子,看是否有帮助。
|
|
-- 作者:王锋 -- 发布时间:2016/1/29 16:58:48 -- 2*C2-C1-C3>0条件的定义请注明一下 |