以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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条件 分别要表达什么意思