以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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等调试函数,来跟踪实际运行中的各个变量。