以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- 求教老师 发单 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=156700) |
-- 作者:zengxing -- 发布时间:2017/8/10 11:04:25 -- 求教老师 发单 如何能做到,开仓是K线走完确认发单,平仓是K线中满足条件平仓? 看 http://www.weistock.com/bbs/dispbbs.asp?boardid=10&Id=9439没有看懂,老师能直接指点一下吗?谢谢 源码如下: 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); //交易条件 if K2<=0 then begin sellshort(holding<0,holding,marketr); buy(holding=0,holding,marketr); end if K2>0 then begin sell(holding>0,holding,marketr); buyshort(holding=0,holding,marketr); end VARIABLE:nb=0,mb=0,ns=0,ms=0; h1:=hhv(h,enterbars+1); l1:=llv(l,enterbars+1); zuidab:=h1-enterprice; zuidas:=enterprice-l1; if zuidab>=10*mindiff and zuidab<20*mindiff then nb:=1; if nb=1 and 2*(h1-c)>=zuidab and holding>0 then begin sell(1,0.75*holding,marketr); nb:=0; end if zuidab>20*mindiff then mb:=1; if mb=1 and 5*(h1-c)>=2*zuidab and holding>0 then begin sell(1,0.75*holding,marketr); mb:=0; end if zuidas>=10*mindiff and zuidas<20*mindiff then ns:=1; if ns=1 and 2*(c-l1)>=zuidas and holding>0 then begin sellshort(1,0.75*holding,marketr); ns:=0; end if zuidas>20*mindiff then ms:=1; if ms=1 and 5*(c-l1)>=2*zuidas and holding>0 then begin sellshort(1,0.75*holding,marketr); ms:=0; end if K2<=0 then begin sellshort(holding<0,holding,marketr); buy(holding=0,holding,marketr); end if K2>0 then begin sell(holding>0,holding,marketr); buyshort(holding=0,holding,marketr); end |
-- 作者:pyd -- 发布时间:2017/8/10 11:10:55 -- http://www.weistock.com/bbs/dispbbs.asp?BoardID=10&ID=151891&skin=0 看这个例子写的很清楚的,您先看下如果还是不会改的话再帮您改写。 |
-- 作者:zengxing -- 发布时间:2017/8/10 11:15:10 -- 这个例子和刚刚的不一样。我修改如下,老师看看可以吗? 这样修改的话,是选择,固定时间发单吗? 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); //交易条件 VARIABLE:nb=0,mb=0,ns=0,ms=0; h1:=hhv(h,enterbars+1); l1:=llv(l,enterbars+1); zuidab:=h1-enterprice; zuidas:=enterprice-l1; if zuidab>=10*mindiff and zuidab<20*mindiff then nb:=1; if nb=1 and 2*(h1-c)>=zuidab and holding>0 then begin sell(1,0.75*holding,marketr); nb:=0; end if zuidab>20*mindiff then mb:=1; if mb=1 and 5*(h1-c)>=2*zuidab and holding>0 then begin sell(1,0.75*holding,marketr); mb:=0; end if zuidas>=10*mindiff and zuidas<20*mindiff then ns:=1; if ns=1 and 2*(c-l1)>=zuidas and holding>0 then begin sellshort(1,0.75*holding,marketr); ns:=0; end if zuidas>20*mindiff then ms:=1; if ms=1 and 5*(c-l1)>=2*zuidas and holding>0 then begin sellshort(1,0.75*holding,marketr); ms:=0; end if ref(K2,1)<=0 then begin sellshort(holding<0,holding,marketr); buy(holding=0,holding,marketr); end if ref(K2,1)>0 then begin sell(holding>0,holding,marketr); buyshort(holding=0,holding,marketr); end |
-- 作者:wenarm -- 发布时间:2017/8/10 11:31:19 -- 是的,使用固定时间间隔,对于你希望走完k的条件,直接引用上一根已经走完k的信号。 |
-- 作者:zengxing -- 发布时间:2017/8/11 9:17:33 -- 现在这么改,不止盈了,是怎么回事?就是一下代码不运行了 VARIABLE:nb=0,mb=0,ns=0,ms=0; h1:=hhv(h,enterbars+1); l1:=llv(l,enterbars+1); zuidab:=h1-enterprice; zuidas:=enterprice-l1; if zuidab>=10*mindiff and zuidab<20*mindiff then nb:=1; if nb=1 and 2*(h1-c)>=zuidab and holding>0 then begin sell(1,0.75*holding,marketr); nb:=0; end if zuidab>20*mindiff then mb:=1; if mb=1 and 5*(h1-c)>=2*zuidab and holding>0 then begin sell(1,0.75*holding,marketr); mb:=0; end |
-- 作者:pyd -- 发布时间:2017/8/11 10:07:37 -- 注释下你的4个if条件 分别要表达什么意思 |