以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  请帮忙检测一下漏洞-->股指换月合约代码  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=12811)

--  作者:小欤
--  发布时间:2012/7/6 10:12:48
--  请帮忙检测一下漏洞-->股指换月合约代码

以下代码是按自己的思路编写的一个代码,虽然按历史数据计算出来的结果来看基本上都没有什么问题,但是不知道会不会存在其它的问题,所以请教一个各位高手,帮忙看一下是否有什么漏洞,顺便也探讨一下公式上的编写提高一下编程的能力,谢谢!

 

 

mon:=month;
w:=weekday;
dy:=if(month<>ref(month,1) or barscount(c)=1,if((day-weekday)<3,1,
   if(fracpart((day-weekday)/7)<=0.4,intpart((day-weekday)/7)+1,intpart((day-weekday)/7)+2)),0);
b:=barscount(mon)=1;

jgxq:=intpart(((day-weekday)-(ref(day,1)+(7-ref(weekday,1))))/7);
jq:=mon=ref(mon,1) and (day-ref(day,1))>3;
dr:=if(jq and jgxq>0,jgxq,if(jq and (weekday-ref(weekday,1))=1,1,0));


u:=c-c;
zd:=barpos-min(barscount(w),barscount(mon));
for i=zd[datacount] to datacount do begin 
    if b[i]>0 then
       u[i]:=dy[i];
    else if mon[i]<>mon[i-1] then
       u[i]:=dy[i];
    else if mon[i]=mon[i-1] and w[i]<w[i-1] and dr[i]<=0 then
       u[i]:=u[i-1]+1;
    else if mon[i]=mon[i-1] and w[i]<w[i-1] and dr[i]>0 then
       u[i]:=u[i-1]+1+dr[i];
    else if mon[i]=mon[i-1] and w[i]>w[i-1] and dr[i]>0 then
       u[i]:=u[i-1]+dr[i];
    else  u[i]:=u[i-1];end;
u:=u;

hys:=if(u<3,mon,if(u=3 && w<=4,mon,if(u=3 && w>4,mon+1,if(u>3,mon+1,0))));
uc:if(date>=1100416 and date<=1100501,5,if(hys>12,1,hys));//第三个星期的周五换合约,遇节假日顺延

 

 

 


--  作者:jinzhe
--  发布时间:2012/7/6 10:18:12
--  

http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=10259

判断主力合约的话可以看这个


--  作者:小欤
--  发布时间:2012/7/6 10:21:55
--  
以下是引用jinzhe在2012-7-6 10:18:12的发言:

http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=10259

判断主力合约的话可以看这个

其实是因为有时候想提前一两天把合约转到下一个合约去。所以编写一个可以自己定义它是星期三或者星期四就转换合约的换合约过程,才编写了以上的程式的,但是不知道会不会有什么漏洞,所以贴出来大家探讨一下

[此贴子已经被作者于2012-7-6 10:22:17编辑过]