以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  请老师帮忙修改一下...  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=76329)

--  作者:jckk
--  发布时间:2015/3/10 13:31:23
--  请老师帮忙修改一下...

请老师帮忙先把下面策略的加仓去除了,谢谢!

 

 

 

input:inb(20,1,500,1),outb(10,1,500,1),risk(2,0,10,0.1);
variable:times=0,i=0,n=0;
 rn:=ema(ref(tr,1),20);
 n:=valuewhen(holding=0,rn);
 rh:=ref(h,1);
 rl:=ref(l,1);
 h1:llv(rh,inb);
 h2:hhv(rl,outb),linedot;
 l1:hhv(rl,inb);
 l2:llv(rh,outb),linedot;
 lotst:asset*risk*0.01/(n*2*multiplier),linethick0;
 lots:=if(risk=0,1,lotst); //如果risk取0,表示固定开1手
tbc:=h<>l;//判断是否停板
partline(holding>0,enterprice-2*n);
 if barpos<inb+1 then exit;
 if holding=0 and tbc then //不是停板才可以交易
begin
 if h>h1 AND time<150000 then //开多
begin
 buyp:=max(o,h1);
 buy(1,lots,limitr,buyp);
 times:=1;
 while h>enterprice+n*0.5 and times<4 do
 begin
 buyp:=max(o,enterprice+n*0.5);
 buy(1,lots,limitr,buyp);
 times:=times+1;
 end;//连续开仓
end;//开多结束
else if l<l1 AND time<150000 then //开空
begin
 sellp:=min(o,l1);
 buyshort(1,lots,limitr,sellp);
 times:=1;
 while l<enterprice-n*0.5 and times<4 do
 begin
 sellp:=min(o,enterprice-n*0.5);
 buyshort(1,lots,limitr,sellp);
 times:=times+1;
 end;//连续开仓
end;
 end;//holding=0
 if holding>0 and tbc then //已有多仓
begin
 exitlongp:=max(enterprice-2*n,l2);
 if l<exitlongp and enterbars<>0 then //出场
begin
 exitp:=min(o,exitlongp);
 sell(1,0,limitr,exitp);
 times:=0;
 end;//出场
else
 begin
 while h>enterprice+n*0.5 and times<4 do //开多
begin
 buyp:=max(o,enterprice+n*0.5);
 buy(1,lots,limitr,buyp);
 times:=times+1;
 end;//连续开仓
end;//else
 end;//holding>0
 if holding<0 and tbc then //已有空仓
begin
 exitlongp:=min(enterprice+2*n,h2);
 if h>exitlongp and enterbars<>0 then //出场
begin
 exitp:=max(o,exitlongp);
 sellshort(1,0,limitr,exitp);
 times:=0;
 end;//出场
else
 begin
 while l<enterprice-n*0.5 and times<4 do //开多
begin
 sellp:=min(o,enterprice-n*0.5);
 buyshort(1,lots,limitr,sellp);
 times:=times+1;
 end;//连续开仓
end;//else
 end;//holding<0
 
 //收盘前平仓
sell(time>151000 and holding>0,holding,market);
 sellshort(time>151000 and holding<0,holding,market);


--  作者:jinzhe
--  发布时间:2015/3/10 13:37:18
--  

input:inb(20,1,500,1),outb(10,1,500,1),risk(2,0,10,0.1);
variable:times=0,i=0,n=0;
 rn:=ema(ref(tr,1),20);
 n:=valuewhen(holding=0,rn);
 rh:=ref(h,1);
 rl:=ref(l,1);
 h1:llv(rh,inb);
 h2:hhv(rl,outb),linedot;
 l1:hhv(rl,inb);
 l2:llv(rh,outb),linedot;
 lotst:asset*risk*0.01/(n*2*multiplier),linethick0;
 lots:=if(risk=0,1,lotst); //如果risk取0,表示固定开1手
tbc:=h<>l;//判断是否停板
partline(holding>0,enterprice-2*n);
 if barpos<inb+1 then exit;
 if holding=0 and tbc then //不是停板才可以交易
begin
 if h>h1 AND time<150000 then //开多
begin
 buyp:=max(o,h1);
 buy(1,lots,limitr,buyp);
 times:=1;
 while h>enterprice+n*0.5 and times<4 do
 begin
 buyp:=max(o,enterprice+n*0.5);
 buy(1,lots,limitr,buyp);
 times:=times+1;
 end;//连续开仓
end;//开多结束
else if l<l1 AND time<150000 then //开空
begin
 sellp:=min(o,l1);
 buyshort(1,lots,limitr,sellp);
 times:=1;
 while l<enterprice-n*0.5 and times<4 do
 begin
 sellp:=min(o,enterprice-n*0.5);
 buyshort(1,lots,limitr,sellp);
 times:=times+1;
 end;//连续开仓
end;
 end;//holding=0
 if holding>0 and tbc then //已有多仓
begin
 exitlongp:=max(enterprice-2*n,l2);
 if l<exitlongp and enterbars<>0 then //出场
begin
 exitp:=min(o,exitlongp);
 sell(1,0,limitr,exitp);
 times:=0;
 end;//出场

 end;//holding>0
 if holding<0 and tbc then //已有空仓
begin
 exitlongp:=min(enterprice+2*n,h2);
 if h>exitlongp and enterbars<>0 then //出场
begin
 exitp:=max(o,exitlongp);
 sellshort(1,0,limitr,exitp);
 times:=0;
 end;//出场

 end;//holding<0
 
 //收盘前平仓
sell(time>151000 and holding>0,holding,market);
 sellshort(time>151000 and holding<0,holding,market);