以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  关于跨周期  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=50201)

--  作者:empty01711
--  发布时间:2013/3/25 12:57:16
--  关于跨周期
您好,我想在这个模型中把跨周期的思路加进去,就按照上面的思路进行修改,当MA5大于MA20的时候,才开始持续准备开多头的仓位;反之, 当MA5小于MA20的时候,才开始持续准备开空头的仓位。
input:inb(20,1,500,1),outb(10,1,500,1),risk(0,0,10,0.1); 
//和风版海龟源码 
variable:times=0,i=0; 
rn:=ema(ref(tr,1),20); 
A:=valuewhen(holding=0,rn); 
rh:=ref(h,1); 
rl:=ref(l,1); 
h1:hhv(rh,inb); 
h2:hhv(rh,outb),linedot; 
l1:llv(rl,inb); 
l2:llv(rl,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 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 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


--  作者:empty01711
--  发布时间:2013/3/25 12:58:51
--  
请问老大如果用日线收盘价做的MA5大于MA20的时候,日内的交易会有忽闪情况吗?
--  作者:empty01711
--  发布时间:2013/3/25 13:06:19
--  
您好,我想在这个模型中把跨周期的思路加进去,当日线MA5大于MA20的时候,才开始持续准备开多头的仓位(日内30分钟或者60分钟);反之, 当MA5小于MA20的时候,才开始持续准备开空头的仓位。
--  作者:just
--  发布时间:2013/3/25 13:26:18
--  
小周期引用大周期可能存在未来函数现象,你如果要规避那么就需要把引用的大周期数据向前推一个周期
--  作者:empty01711
--  发布时间:2013/3/25 13:29:22
--  
那您就帮我向前推一个周期吧,能不能帮我在最上面的那个模型内部加上啊?
--  作者:just
--  发布时间:2013/3/25 13:40:18
--  
指标A 
MA5:=MA(C,5);
MA20:=MA(C,20);

公式B
input:inb(20,1,500,1),outb(10,1,500,1),risk(0,0,10,0.1); 
//和风版海龟源码 
variable:times=0,i=0; 
rn:=ema(ref(tr,1),20); 
X1:=STKINDI(\'\',\'A.MA5\',0,6,-1);
X2:=STKINDI(\'\',\'A.MA20\',0,6,-1);
A:=valuewhen(holding=0,rn); 
rh:=ref(h,1); 
rl:=ref(l,1); 
h1:hhv(rh,inb); 
h2:hhv(rh,outb),linedot; 
l1:llv(rl,inb); 
l2:llv(rl,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 X1>X2 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 X1<X2 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


--  作者:empty01711
--  发布时间:2013/3/25 13:42:03
--  
非常感谢客服
--  作者:empty01711
--  发布时间:2013/3/25 13:56:38
--  
请问客服,为什么我这里只显示成没有信号啊


--  作者:just
--  发布时间:2013/3/25 14:31:55
--  
没有信号???? 请注意 我发表的代码公式是需要建立两个公式的
还有我只截了部分代码(由于代码过长一个帖子里放不下)
[此贴子已经被作者于2013-3-25 14:32:55编辑过]

--  作者:empty01711
--  发布时间:2013/3/25 14:44:17
--  
请问您有QQ吗?
我给您接过去图看看行吗?