以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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);
HH:=HHV(H,ENTERBARS+1 );
if l<enterprice*0.99 and enterbars>0 then 止损多1:sell(1,1,limitr,min(o,zs)-mindiff); if h>enterprice*1.01 and enterbars>0 then 止损空1: sellshort(1,1,limitr,max(o,zs)+mindiff);
//盈
|