以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://www.weistock.com/bbs/list.asp?boardid=4)
----  [原创]  (http://www.weistock.com/bbs/dispbbs.asp?boardid=4&id=135744)

--  作者:我不是新手
--  发布时间:2016/7/19 11:21:42
--  [原创]
老师帮我看看这代码出错在哪了、是不是这开平仓的顺序搞错了,放在图表中这信号都是错的、

我检查了一个上午了都没找出原因、麻烦了、谢谢!!

INPUT:P(6,2,150,2),S(12,2,150,2),M(20,2,100,6);
variable:zs=c,hl=c;
MA6:MA(C,P);
MA12:MA(C,S);
MA20:MA(C,M);

buycond:C>ref(hhv(h,5),1) AND C>MA20 ;//开多
sellcond:C<ref(llv(l,5),1) AND C<MA20 ;//开空

K1:CROSS(MA12,MA6);
K2:CROSS(MA6,MA12);

HH:=HHV(H,ENTERBARS+1 );
LL:=LLV(L,ENTERBARS+1 );


if holding>0 then begin
 多止损:zs;
 if l<zs then sell(1,1,limitr,min(o,zs)-mindiff);
 else if K1 then sell(1,1,limitr,c);
end
if holding<0 then begin
 空止损:zs;
 if h>zs then sellshort(1,1,limitr,max(o,zs)+mindiff);
 else if K2 then sellshort(1,1,limitr,c);
end

//盈
if  HOLDING>0 AND HH<=AVGENTERPRICE+0.03*AVGENTERPRICE then begin//多盈
sell(1,1,MARKET);
end
if HOLDING<0 AND  LL>=AVGENTERPRICE-0.03*AVGENTERPRICE then begin //空盈
sellshort(1,1,MARKET);
end

if holding=0 and buycond then begin
 buy(1,1,limitr,c);
 zs:=AVGENTERPRICE-0.01*AVGENTERPRICE;
 hl:=c;
end
if holding=0 and sellcond then begin
 buyshort(1,1,limitr,c);
 zs:=AVGENTERPRICE+0.01*AVGENTERPRICE;
 hl:=c;
end

if holding>0 and enterbars>0 and HH>=hl+0.02*AVGENTERPRICE then begin
 hl:=AVGENTERPRICE;
 zs:=hl+0.01*AVGENTERPRICE;
end
if holding<0 and enterbars>0 and LL<=hl-0.02*AVGENTERPRICE then begin
 hl:=AVGENTERPRICE;
 zs:=hl-0.01*AVGENTERPRICE;
end


当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;

--  作者:jinzhe
--  发布时间:2016/7/19 13:21:40
--  
请具体的讲一下,错误的信号在哪里,正确的该是什么样的
--  作者:我不是新手
--  发布时间:2016/7/19 14:53:40
--  
这里开仓条件是破前5根的最高点并且大于20日均线开仓、  止损是1%,若盈利2% 上移止盈1%,还有一种出场方式是金叉和死叉出场、



但是这个加载到图表上是当根K线就出场了,你可以把代码放到公司里面去看看、、我觉得逻辑没错啊

--  作者:jinzhe
--  发布时间:2016/7/19 15:21:35
--  

INPUT:P(6,2,150,2),S(12,2,150,2),M(20,2,100,6);
variable:zs=0,hl=10000000;
MA6:MA(C,P);
MA12:MA(C,S);
MA20:MA(C,M);


buycond:C>ref(hhv(h,5),1) AND C>MA20 ;//开多
sellcond:C<ref(llv(l,5),1) AND C<MA20 ;//开空


K1:CROSS(MA12,MA6);
K2:CROSS(MA6,MA12);


if holding=0 and buycond then begin
 buy(1,1,limitr,c);
 zs:=AVGENTERPRICE-0.01*AVGENTERPRICE;
 hl:=c;
end
if holding=0 and sellcond then begin
 buyshort(1,1,limitr,c);
 zs:=AVGENTERPRICE+0.01*AVGENTERPRICE;
 hl:=c;
end

HH:=HHV(H,ENTERBARS+1 );
LL:=LLV(L,ENTERBARS+1 );


if holding>0 and enterbars>0 and HH>=hl+0.02*AVGENTERPRICE then begin
 hl:=AVGENTERPRICE;
 zs:=hl+0.01*AVGENTERPRICE;
end
if holding<0 and enterbars>0 and LL<=hl-0.02*AVGENTERPRICE then begin
 hl:=AVGENTERPRICE;
 zs:=hl-0.01*AVGENTERPRICE;
end

 

 if l<enterprice*0.99 and enterbars>0 then 止损多1:sell(1,1,limitr,min(o,zs)-mindiff);
 if K1 then 止损多2:sell(1,1,limitr,c);
 if hh>enterprice*1.02 and l<enterprice*1.01 and enterbars>0 then 移动止损多:sell(1,1,limitr,open)

 if h>enterprice*1.01 and enterbars>0 then 止损空1: sellshort(1,1,limitr,max(o,zs)+mindiff);
 if K2 then  止损空2:sellshort(1,1,limitr,c);
 if ll<enterprice*0.98 and h>enterprice*0.99 and enterbars>0 then sellshort(1,0,limitr,close);

 

//盈
if  HOLDING>0 AND HH>=AVGENTERPRICE+0.03*AVGENTERPRICE and enterbars>0 then begin//多盈
多赢:sell(1,1,MARKET);
end
if HOLDING<0 AND  LL<=AVGENTERPRICE-0.03*AVGENTERPRICE and enterbars>0 then begin //空盈
空赢:sellshort(1,1,MARKET);
end

 


当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;