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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 问题代码求助老师帮助修正

   

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


  共有2601人关注过本帖平板打印复制链接

主题:问题代码求助老师帮助修正

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


加好友 发短信
等级:新手上路 帖子:70 积分:285 威望:0 精华:0 注册:2011/10/12 15:57:24
问题代码求助老师帮助修正  发帖心情 Post By:2016/11/22 15:49:15    Post IP:220.163.43.40[只看该作者]


我的问题策略模型代码要求说明:

1,非多即空;底仓交易手ss=2;
2,若平仓盈利时,不加仓;
3,若平仓亏损,则:亏1次,加仓1手ss+1,连亏2次,加仓2手ss+2... 直到连亏6次时,加仓6手ss+6;此后若再出现连亏,停止加仓,直到反向交易,从ss=2手开始交易。

我写的后台交易代码如下,经反复测试,或变通改写,均不能正确满足我的设计要求。出现的技术问题是,开多、开空起步交易正常,当出现多次连亏后,多空反手交易仅能前2次加仓正确,

多头仓到ss+1=3,空头仓到ss+2=-4,后面的连亏交易就不会增加加仓量了。求金老师及各位专家老师帮助修改正确之,谢谢!

-----------------------------

详细代码如下:

runmode:0;                     //以0逐K线模式运行(1系列模式)     

//声明参数
input:ss(2,1,10,1);            //底仓交易手数
//声明变量                          
globalvariable:kcs=0;           //连亏次数
globalvariable:jyss=0;          //交易手数(底仓+加仓)


////一、平空

   IF (平空条件) and tholding<0 then begin
   tsellshort(1,0,mkt);                        
   END                        
   if tnumprofit(1)>=0 or time=closetime(0) or time=opentime(1) then kcs:=0;            
   if tnumprofit(1)<0 then kcs:=kcs+1;

//连亏交易手数
   if kcs=0 then jyss:=ss;
   if kcs=1 then jyss:=ss+1;                                                       
   if kcs=2 then jyss:=ss+2;   
   if kcs=3 then jyss:=ss+3; 
   if kcs=4 then jyss:=ss+4;        
   if kcs=5 then jyss:=ss+5;  
   if kcs>=6 then jyss:=ss+6;

////开多加仓               
IF (开多条件) and tholding=0 then begin           
   tbuy(jyss>0,jyss,mkt);  
   kcs:=0;   
   jyss:=0;   
   END 

////二、平多
   IF(平多条件)and tholding>0 then begin
   tsell(1,0,mkt);                             //全平多,若有
   END
   if tnumprofit(1)>=0 or time=closetime(0) or time=opentime(1) then kcs:=0;            
   if tnumprofit(1)<0 then kcs:=kcs+1;

//连亏交易手数
   if kcs=0 then jyss:=ss;
   if kcs=1 then jyss:=ss+1;                                                       
   if kcs=2 then jyss:=ss+2;   
   if kcs=3 then jyss:=ss+3; 
   if kcs=4 then jyss:=ss+4;        
   if kcs=5 then jyss:=ss+5;  
   if kcs>=6 then jyss:=ss+6;

//开空加仓  
IF(开空条件)and tholding=0 then begin          
   tbuyshort(jyss>0,jyss,mkt);        
   kcs:=0;   
   jyss:=0;      
   END 

 

 


 回到顶部
总数 20 1 2 下一页