以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- 图表策略编写 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=163429) |
-- 作者:cdqwy781 -- 发布时间:2018/5/14 20:22:29 -- 图表策略编写 盈利大于5小于10个点,从最大盈利点回撤0.61,止盈; 盈利大于10小于20个点,从最大盈利点回撤0.5,止盈; 盈利大于20点,从最大盈利点回撤0.38,止盈。 一直不会编写请指教 |
-- 作者:FireScript -- 发布时间:2018/5/15 8:55:10 -- if buycond then buy(holding=0,1,market); maxProfit:hhv(h,ENTERBARS)-ENTERPRICE; if maxProfit>5*mindiff and maxProfit<10*mindiff and holding>0 and c<=0.61*maxProfit then sell(1,holding,market); 其他几条照葫芦画瓢即可。 |
-- 作者:cdqwy781 -- 发布时间:2018/5/15 20:31:37 -- 提示语法错误HHV函数不能在逐K线模式下不能直接在IF控制语句之内使用 另外这是多单的情况下,空单是不是该maxProfit:LLV(L,ENTERBARS)-ENTERPRICE;
|
-- 作者:wenarm -- 发布时间:2018/5/16 8:28:26 -- 你看清楚2楼的代码逻辑在写。 hhv直接放在if语句之外的。 |
-- 作者:cdqwy781 -- 发布时间:2018/5/16 11:29:25 -- 我换了公式的位置提示未定义的变量BUYCOND |
-- 作者:FireScript -- 发布时间:2018/5/16 13:16:25 -- buycond是你自己的初始开仓条件。 |
-- 作者:cdqwy781 -- 发布时间:2018/5/17 16:57:06 -- HH1:=IFELSE(H<REF(H,1)&&REF(H,1)<REF(H,2),REF(H,2),0); LL1:=IFELSE(L>REF(L,1)&&REF(L,1)>REF(L,2),REF(L,2),0); HH2:=VALUEWHEN(HH1>0,HH1); LL2:=VALUEWHEN(LL1>0,LL1); K1:=IFELSE(CLOSE>HH2,-3,IFELSE(CLOSE<LL2,1,0)); K2:=VALUEWHEN(K1<>0,K1); 手数:=4; //交易条件 VARIABLE:n1=0,n2=0,n3=0,n4=0 ; 开多条件:=CROSS(-2,K2); 平多条件:CROSS(K2,0); 开空条件:=CROSS(K2,0); 平空条件:=CROSS(-2,K2); //交易系统 平空:SELLSHORT(平空条件,0,MARKET); 平多:SELL(平多条件,0,MARKET); if 开多条件 then buy(holding=0,1,market); maxProfit:hhv(h,ENTERBARS)-ENTERPRICE; if maxProfit>5*mindiff and maxProfit<10*mindiff and holding>0 and c<=0.61*maxProfit then sell(1,holding,market); 这样也不行,另外持有空单时该如何写呢?
|
-- 作者:FireScript -- 发布时间:2018/5/17 17:17:55 -- 空头的时候 盈利计算方式 ENTERPRICE-llv(l,ENTERBARS); 这样处理就可以了。交易语句相应的替换成sellshort就可以。 另外你上面语句也没有开空的语句。 |
-- 作者:cdqwy781 -- 发布时间:2018/5/18 12:20:43 -- HH1:=IFELSE(H<REF(H,1)&&REF(H,1)<REF(H,2),REF(H,2),0); LL1:=IFELSE(L>REF(L,1)&&REF(L,1)>REF(L,2),REF(L,2),0); HH2:=VALUEWHEN(HH1>0,HH1); LL2:=VALUEWHEN(LL1>0,LL1); K1:=IFELSE(CLOSE>HH2,-3,IFELSE(CLOSE<LL2,1,0)); K2:=VALUEWHEN(K1<>0,K1); 手数:=4; //交易条件 VARIABLE:n1=0,n2=0,n3=0,n4=0 ; 开多条件:=CROSS(-2,K2); 平多条件:CROSS(K2,0); 开空条件:=CROSS(K2,0); 平空条件:=CROSS(-2,K2); //交易系统 平空:SELLSHORT(平空条件,0,MARKET); 平多:SELL(平多条件,0,MARKET); 我就加到这个策略里具体该如何写呢
|
-- 作者:FireScript -- 发布时间:2018/5/18 13:18:08 -- 做一些修正,以空头为例。 HH1:=IFELSE(H<REF(H,1)&&REF(H,1)<REF(H,2),REF(H,2),0); LL1:=IFELSE(L>REF(L,1)&&REF(L,1)>REF(L,2),REF(L,2),0); HH2:=VALUEWHEN(HH1>0,HH1); LL2:=VALUEWHEN(LL1>0,LL1); K1:=IFELSE(CLOSE>HH2,-3,IFELSE(CLOSE<LL2,1,0)); K2:=VALUEWHEN(K1<>0,K1); 手数:=4; //交易条件 VARIABLE:n1=0,n2=0,n3=0,n4=0 ; 开多条件:=CROSS(-2,K2); 平多条件:CROSS(K2,0); 开空条件:=CROSS(K2,0); 平空条件:=CROSS(-2,K2); //交易系统 平空:SELLSHORT(平空条件,0,MARKET); 开多:buy(holding=0 and 开多条件,1,market); 平多:SELL(平多条件,0,MARKET); 开空:buyshort(holding=0 and 开空条件,1,market); maxProfit:ENTERPRICE-llv(l,ENTERBARS); if maxProfit>5*mindiff and maxProfit<10*mindiff and holding<0 and ENTERPRICE-c<=0.61*maxProfit then 止盈:sellshort(1,holding,market); 持仓:holding; |