以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  条件语句  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=173474)

--  作者:thomasv
--  发布时间:2019/12/10 16:47:01
--  条件语句
我有两个条件condA和condB,哪个条件先满足就先执行它的语句改怎么写。用两个if分开写吗。
--  作者:FireScript
--  发布时间:2019/12/10 16:51:57
--  
 分开写2个if语句。但是如果同时满足 就按照代码前后顺序执行。

--  作者:thomasv
--  发布时间:2019/12/11 16:59:10
--  
我分开写了两个if语句,但是测试的时候发现会先后开两个仓,在先后平两个仓。我语句里用了holding=0的判断
--  作者:FireScript
--  发布时间:2019/12/11 17:10:44
--  
 方便的话,帖下你的代码。
--  作者:thomasv
--  发布时间:2019/12/11 17:25:39
--  
开多条件1:=ALL(cond1,zz) && High>=MA1 && HOLDING = 0;
开多价格1:=MA1;
开多条件2:=HIGH>=MA4 && High>= Middlehv && HOLDING = 0 ;
开多价格2:=max(MA4,Middlehv);

if KD:=开多条件1>0 then begin
   priceKD:= MAX(OPEN,开多价格1);
    BUY(1,Tc,LIMITR,priceKD+1);
end

if KD:=开多条件2>0  then begin
   priceKD:= MAX(OPEN,开多价格2);
   BUY(1,Tc,LIMITR,priceKD+1);
end

if PD:=平多条件>0 then begin
   pricePD:= Min(Open,平多价格1);
  SELL(1,Tc,LIMITR,pricePD-1);

end

会出现两个先后买入,然后先后卖出。我的本意哪个条件先满足,就先执行,另一个不用执行。

--  作者:FireScript
--  发布时间:2019/12/12 9:12:20
--  
 看代码逻辑应该不会出现你说的问题。然后这里最好改下,你之前写的不规范。
if 开多条件1 then begin
   priceKD:= MAX(OPEN,开多价格1);
    BUY(1,Tc,LIMITR,priceKD+1);
end

if 开多条件2  then begin
   priceKD:= MAX(OPEN,开多价格2);
   BUY(1,Tc,LIMITR,priceKD+1);
end


--  作者:thomasv
--  发布时间:2019/12/12 11:24:33
--  
如何控制在一根k线上只允许开一次仓
--  作者:yukizzc
--  发布时间:2019/12/12 11:31:04
--  
if enterbars=-1 or enterbars>0 then 
buy();


用开仓历史来控制