以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4) ---- 套利模型求教 (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=184239) |
-- 作者:zengxing -- 发布时间:2021/2/8 17:28:46 -- 套利模型求教 编写了一个套利模型,心里没谱,测试感觉有点问题,求帮看一眼 整体思路就是,第一单,到时间开仓 然后 两个品种一共盈利 一定程度(参数) 止盈结束,不做了 两个品种一共亏损 一定程度(参数) 反手,在做循环,一共有10档。 fangxiang:=1; shijian:=111500; riqi:=210202; zhiying:=4000; ctshoushu1:=1; ctshoushu2:=2; ctshoushu3:=3; ctshoushu4:=4; ctshoushu5:=5; ctshoushu6:=6; ctshoushu7:=7; ctshoushu8:=8; ctshoushu9:=9; ctshoushu10:=10; ctzhisun1:=10000; ctzhisun2:=10000; ctzhisun3:=10000; ctzhisun4:=10000; ctzhisun5:=10000; ctzhisun6:=10000; ctzhisun7:=10000; ctzhisun8:=10000; ctzhisun9:=10000; ctzhisun10:=10000; GLOBALVARIABLE:ct:=1;//默认从1开始 GLOBALVARIABLE:ctshoushu:=1; GLOBALVARIABLE:ctzhisun:=1; GLOBALVARIABLE:fangxiangs:=0; //***************************** 账户:\'1000\'; 套利品种1:\'IF11\'; 套利品种2:\'IF12\'; //***************************** dyk1:=dynainfo2(7,套利品种1)-TAVGENTERPRICEEX2(\'\',套利品种1,0);//多盈亏 dyk2:=dynainfo2(7,套利品种2)-TAVGENTERPRICEEX2(\'\',套利品种1,0);//多盈亏 kyk1:=TAVGENTERPRICEEX2(\'\',套利品种1,1)-dynainfo2(7,套利品种1);//空盈亏 kyk2:=TAVGENTERPRICEEX2(\'\',套利品种2,1)-dynainfo2(7,套利品种2);//空盈亏 yingkui:=dyk1+dyk2+kyk1+kyk2; if ct=1 then begin ctzhisun=ctzhisun1; ctshoushu=ctshoushu1; end if riqi>date-1000000 or (riqi=date-1000000 and shijian>=time) and fangxiangs=0 then begin if fangxiang=1 then begin TBUYSHORT(1,ctshoushu,MKT ,0,0,账户,套利品种1); TBUY(1,ctshoushu,MKT ,0,0,账户,套利品种2); fangxiangs=1; end
if fangxiang=-1 then begin TBUYSHORT(1,ctshoushu,MKT ,0,0,账户,套利品种2); TBUY(1,ctshoushu,MKT ,0,0,账户,套利品种1); fangxiangs=-1; end
end
if yingkui>zhiying then begin TSELL(1,ct,MKT ,0,0,账户,套利品种1); TSELL(1,ct,MKT ,0,0,账户,套利品种2); TSELLSHORT(1,ct,MKT ,0,0,账户,套利品种1); TSELLSHORT(1,ct,MKT ,0,0,账户,套利品种2); ct:=1;//连续止损中断的地方,务必重置全局变量CT。这里是止盈的地方重置了,你如果还有其他地方要终止连续止损的统计,同样也要重置这个全局变量 fangxiangs:=2; end if yingkui<ctzhisun then begin //平仓语句 ct:=ct+1;//止损的地方累计这个全局变量的值 //在反手的语句里,可以直接用ct作为反手下单的手数 if ct=2 then begin ctzhisun=ctzhisun2; ctshoushu=ctshoushu2; end if ct=3 then begin ctzhisun=ctzhisun3; ctshoushu=ctshoushu3; end if ct=4 then begin ctzhisun=ctzhisun4; ctshoushu=ctshoushu4; end if ct=5 then begin ctzhisun=ctzhisun5; ctshoushu=ctshoushu5; end if ct=6 then begin ctzhisun=ctzhisun6; ctshoushu=ctshoushu6; end if ct=7 then begin ctzhisun=ctzhisun7; ctshoushu=ctshoushu7; end if ct=8 then begin ctzhisun=ctzhisun8; ctshoushu=ctshoushu8; end if ct=9 then begin ctzhisun=ctzhisun9; ctshoushu=ctshoushu9; end if ct=10 then begin ctzhisun=ctzhisun10; ctshoushu=ctshoushu10; end if fangxiangs=1 then begin TBUYSHORT(1,ctshoushu,MKT ,0,0,账户,套利品种1); TBUY(1,ctshoushu,MKT ,0,0,账户,套利品种2); fangxiangs=-1; end if fangxiangs=-1 then begin TBUYSHORT(1,ctshoushu,MKT ,0,0,账户,套利品种2); TBUY(1,ctshoushu,MKT ,0,0,账户,套利品种1); fangxiangs=1; end end |
-- 作者:gxx978 -- 发布时间:2021/2/9 8:44:19 -- 看了下,逻辑编写上未发现问题,建议用模拟盘运行下,遇到问题可以用debugout、debugfile等调试函数,来跟踪实际运行中的各个变量。 |