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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 后台轮询方式出现多空单互锁

   

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


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

主题:后台轮询方式出现多空单互锁

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


加好友 发短信
等级:论坛游侠 帖子:520 积分:0 威望:0 精华:0 注册:2013/10/20 14:07:21
后台轮询方式出现多空单互锁  发帖心情 Post By:2014/3/2 18:22:38    Post IP:114.244.20.195[只看该作者]

我的模型使用1秒钟轮询一次在后台运行,有时会出现既有多仓又有空仓的情况,而代码中已经通过THOLDING进行控制了,不知道那里出了问题。

开平仓的代码如下:

 //多头平仓 
IF THOLDING>0 THEN BEGIN 
  平多A:TSELL(平多1,THOLDING,MKT);
  平多B:TSELL(平多2,THOLDING,MKT);          
END 

 //空头平仓
IF THOLDING<0 THEN BEGIN 
 平空A:TSELLSHORT(平空1,THOLDING,MKT); 
 平空B:TSELLSHORT(平空2,THOLDING,MKT);           
END

//开仓
IF 交易时间 AND THOLDING=0 THEN BEGIN 
 IF  THOLDING=0 THEN BEGIN 
     开多A:TBUY(开多2,手数,MKT);
 END 
 IF  THOLDING=0 THEN BEGIN 
     开空A:TBUYSHORT(开空2,手数,MKT);  
 END
 
 IF  THOLDING=0 THEN BEGIN 
     开多B:TBUY(开多1,手数,MKT);
 END
 IF  THOLDING=0 THEN BEGIN 
     开空B:TBUYSHORT(开空1,手数,MKT);
 END
END 


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


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2014/3/3 9:34:42    Post IP:58.246.57.26[只看该作者]

如果需要判断多空仓,那么使用具体的持仓判断函数:tbuyholding和tsellholding


金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

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


加好友 发短信
等级:论坛游侠 帖子:520 积分:0 威望:0 精华:0 注册:2013/10/20 14:07:21
  发帖心情 Post By:2014/3/6 19:48:43    Post IP:221.217.18.219[只看该作者]

按照你说的我改成了tbuyholding和tsellholding,但是多空互锁的情况仍然存在,难道需要加入什么错误处理的代码吗?

代码如下
IF TBUYHOLDING(1)>0 THEN BEGIN 
 //多头平仓 
  IF TBUYHOLDING(1)>0 THEN
  平多A:TSELL(平多1,TBUYHOLDING(1),MKT);
  IF TBUYHOLDING(1)>0 THEN 
  平多B:TSELL(平多2,TBUYHOLDING(1),MKT);

 //多头止损    
 IF LOST>=MaxLost AND TBUYHOLDING(1)>0 THEN
     止损平多:TSELL(1,TBUYHOLDING(1),MKT);        
 //多头收盘平仓
 IF TIME>=151400 AND TBUYHOLDING(1)>0 THEN 
     收盘平多:TSELL(1,TBUYHOLDING(1),MKT);               
END 



IF TSELLHOLDING(1)>0 THEN BEGIN 
 
 //空头平仓
 IF  TSELLHOLDING(1)>0 THEN  
 平空A:TSELLSHORT(平空1,TSELLHOLDING(1),MKT);
 IF  TSELLHOLDING(1)>0 THEN   
 平空B:TSELLSHORT(平空2,TSELLHOLDING(1),MKT);

  //空头止损    
 IF LOST>=MaxLost AND TSELLHOLDING(1)>0 THEN
     止损平空:TSELLSHORT(1,TSELLHOLDING(1),MKT);            
  //空头收盘平仓 
 IF TIME>=151400 AND TSELLHOLDING(1)>0 THEN 
     收盘平空:TSELLSHORT(1,TSELLHOLDING(1),MKT);                 
END

IF 交易时间 AND THOLDING=0 THEN BEGIN
 
 IF  THOLDING=0 THEN  
     开多B:TBUY(开多2,手数,MKT); 
 IF  THOLDING=0 THEN  
     开空B:TBUYSHORT(开空2,手数,MKT);  
 IF  THOLDING=0 THEN  
     开多A:TBUY(开多1,手数,MKT);
 IF  THOLDING=0 THEN  
     开空A:TBUYSHORT(开空1,手数,MKT);
END 




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


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2014/3/7 9:04:03    Post IP:58.246.57.26[只看该作者]

IF  THOLDING=0 THEN  
     开多B:TBUY(开多2,手数,MKT); 
 IF  THOLDING=0 THEN  
     开空B:TBUYSHORT(开空2,手数,MKT);  
 IF  THOLDING=0 THEN  
     开多A:TBUY(开多1,手数,MKT);
 IF  THOLDING=0 THEN  
     开空A:TBUYSHORT(开空1,手数,MKT);
END 

 

 

1.这里的也改了

 

2.平仓手数都写0



金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部