欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 求教 编写问题

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有2980人关注过本帖树形打印复制链接

主题:求教 编写问题

帅哥哟,离线,有人找我吗?
zengxing
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:505 积分:0 威望:0 精华:0 注册:2014/10/15 13:12:08
求教 编写问题  发帖心情 Post By:2021/3/16 13:37:53    Post IP:123.113.207.74[只看该作者]

编写了一个套利模型,心里没谱,测试感觉有点问题,盈利后不反向 开仓!!

整体思路就是,第一单,到时间开仓
然后
两个品种一共盈利 一定程度(参数) 止盈结束,不做了
两个品种一共亏损 一定程度(参数) 反手,在做循环,一共有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

 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2021/3/16 15:20:01    Post IP:58.246.57.26[只看该作者]

首先这里语法规范上就有问题:
fangxiangs=1;
			
赋值不能这样,要用 := 你好多地方都要统一修改下才行。
其次就是你这里逻辑我没办法一句一句理清,建议你把原始思路以文字描述的形式发上来看下。我看你代码提炼
出你的思路,比直接看你思路的文字描述要困难的多。因为代码如果本身就有问题,要理清就会非常麻烦。
[此贴子已经被作者于2021/3/16 15:20:30编辑过]


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
zengxing
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:505 积分:0 威望:0 精华:0 注册:2014/10/15 13:12:08
  发帖心情 Post By:2021/3/16 22:05:11    Post IP:123.113.207.74[只看该作者]

因为fangxiang是全局变量,要反复赋值,就这么写了,不对吗?
思路很简单 就两句 说了呀
两个品种一共盈利 一定程度(参数) 止盈结束,不做了
两个品种一共亏损 一定程度(参数) 反手,在做循环,一共有10档。

没有其他的了

 回到顶部
帅哥哟,离线,有人找我吗?
gxx978
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:4994 积分:0 威望:0 精华:0 注册:2016/9/1 10:46:51
  发帖心情 Post By:2021/3/17 10:00:01    Post IP:180.169.30.6[只看该作者]

如果是要赋值,那需要使用:=。如果只用了=,那表示是等号,两边的值进行了比较而已,不是赋值啊。你可以使用debugfile输出你的变量值,看是否满足了反向开仓的条件了。

 回到顶部
帅哥哟,离线,有人找我吗?
zengxing
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:505 积分:0 威望:0 精华:0 注册:2014/10/15 13:12:08
  发帖心情 Post By:2021/3/17 13:47:47    Post IP:123.113.207.74[只看该作者]

首次开仓条件:参数时间
参数要求:开仓方向,开仓手数,止盈参数,加仓参数  档位参数, 加仓手数,加仓后的止盈
执行逻辑 :设置好开仓时间,合约开仓一多一空为一组,当一组的浮盈达到x值时平仓继续反方向开仓即为一空一多,达到浮盈x值时,继续反向,一直循环。如果一组开仓浮亏达到x值时,一组的多空同时加仓(参数自己输入加多少手),加仓后的止盈参数(可自己输入盈利多少点)  平仓,止盈出来后继续反向初始仓位操作! 


备注 需要设置15个档位的止盈 跟加仓 参数

 回到顶部
帅哥哟,离线,有人找我吗?
zengxing
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:505 积分:0 威望:0 精华:0 注册:2014/10/15 13:12:08
  发帖心情 Post By:2021/3/17 13:48:40    Post IP:123.113.207.74[只看该作者]

那这个要怎么改呢?

 回到顶部
帅哥哟,离线,有人找我吗?
gxx978
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:4994 积分:0 威望:0 精华:0 注册:2016/9/1 10:46:51
  发帖心情 Post By:2021/3/17 14:23:33    Post IP:180.169.30.6[只看该作者]

梳理了一遍代码,除了需要将你的代码中很多复制语句,需要将=换成:=外,从代码逻辑上未发现问题。只能在实际运行中,加入debugfile调试函数来跟踪了,后台程序化交易基本都要靠调试函数来跟踪问题的,单看代码是看不出什么问题的,只能发现一些简单的编写错误。以下是替你修改完的赋值语句错误。建议在实际运行的时候,用debugfile跟踪调试问题。
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

 回到顶部
帅哥哟,离线,有人找我吗?
zengxing
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:505 积分:0 威望:0 精华:0 注册:2014/10/15 13:12:08
  发帖心情 Post By:2021/3/20 0:51:09    Post IP:36.110.68.66[只看该作者]

还是有问题,同时开两组进去了。
应该是一个品种 一多一空  现在是 一个品种开了 两组。

 回到顶部
帅哥哟,离线,有人找我吗?
zengxing
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:505 积分:0 威望:0 精华:0 注册:2014/10/15 13:12:08
  发帖心情 Post By:2021/3/21 2:05:40    Post IP:123.113.206.213[只看该作者]

还在吗?周末回复吗?

 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2021/3/22 9:25:21    Post IP:58.246.57.26[只看该作者]

 你监控2个品种吧。这种套利只需要监控一个品种即可。因为你下单数据都是调用的。监控一个品种作为驱动即可。


命数如织,当如磐石。
 回到顶部