以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  各位大侠,请问以下的加仓交易语句该怎么写,谢谢!  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=166305)

--  作者:yzy666
--  发布时间:2018/11/4 22:31:44
--  各位大侠,请问以下的加仓交易语句该怎么写,谢谢!
各位大侠,请问以下的加仓交易语句该怎么写,谢谢!
     当持有多仓时,当满足条件A和(and)条件B或(or)条件C时,加多仓2手(只要以后满足这些条件全加仓2手,直到平多仓为止)
     当持有空仓时,当满足条件A和(and)条件B或(or)条件C时,加空仓2手(只要以后满足这些条件全加仓2手,直到平空仓为止)

--  作者:wenarm
--  发布时间:2018/11/5 8:01:21
--  

条件c和谁是并列的?or的优先级低于and,你可以根据自己的思想进行修正,目前不清楚你的条件c与谁属于并列关系。

如果是和整个条件语句并列就是下面的,

if  HOLDING>0  and 条件A and 条件B or 条件C then begin
 buy(1,2,MARKET); 
end

如果是和条件B并列的话,就是

if  HOLDING>0  and 条件A and (条件B or 条件C) then begin
 buy(1,2,MARKET); 
end


--  作者:yzy666
--  发布时间:2018/11/5 11:43:21
--  请问大侠以下限价交易的语句是否正确,谢谢
请问大侠以下限价交易的语句是否正确,谢谢
  BUY(KD,2,limitr,ma1+15*MINDIFF);   //当满足KD条件时,在MA1价至MA1+15点这范围内开多2手(如MA1=3200,则在3200至3215这区间任意价格开多2手)
 
另一个止损语句是
  SELL((cross(MA1-25*MINDIFF,askprice)),0,MARKETR);  //当现价低于MA1-25点时,以市价全部平多(MA1=3200,如现价<=3175,则以市价全部平仓)

--  作者:FireScript
--  发布时间:2018/11/5 13:15:46
--  
  KD满时候,会直接按照ma1+15*MINDIFF的价格报单。最后成交肯定是当价格低于ma1+15*MINDIFF才会成交。
[此贴子已经被作者于2018/11/5 13:17:05编辑过]

--  作者:yzy666
--  发布时间:2018/11/5 13:35:07
--  
那后面的那个止损语句对吗,应用到图表上怎么没有开多信号和止损信号,谢谢
--  作者:FireScript
--  发布时间:2018/11/5 13:54:13
--  
 语法没问题。你要看下条件是否满足。你最好把交易条件单独定义成几个变量里面输出下。这样也能直观看到条件是否触发了。你目前给的代码看不出来为什么没有下单信号的。

你这句代码实际会在cross(MA1-25*MINDIFF,askprice)触发时候就下单。也就是价格从MA1-25*MINDIFF<askprice 反转到
MA1-25*MINDIFF>askprice的时候。




[此贴子已经被作者于2018/11/5 13:55:06编辑过]

--  作者:yzy666
--  发布时间:2018/11/5 21:24:56
--  大侠能否再帮我看一下我这程序放到图表上怎么没信号
大侠能否再帮我看一下我这程序放到图表上怎么没信号(要嘛就是全是开多的,),是不是哪里有语句不对的地方,谢谢指导!


MA1:=MA(CLOSE,5);
MA2:=MA(CLOSE,10);

VAR1:=ref(hhv(high,10),ENTERBARS+1);//开仓前10个K最高价
VAR2:=cross(CLOSE,ma1);//收盘价上穿ma1
VAR3:=REF(LLV(LOW,10),ENTERBARS+1);
VAR4:=cross(ma1,CLOSE);
VAR5:=cross(MA1-25*MINDIFF,askprice);
VAR6:=cross(bidprice,MA1+25*MINDIFF);

KD:=close>ma2 and VAR2;//开多条件
PD:=VAR5;//平多条件
KK:=close<ma2 and VAR4;//开空条件
PK:=VAR6;//平空条件

开多:BUY(KD,2,limitr,ma1+15*MINDIFF);          //开多信号
平多:SELL(PD,0,MARKETR);             //平多信号
开空:BUYSHORT(KK,2,limitr,ma1-15*MINDIFF);     //开空信号
平空:SELLSHORT(PK,0,MARKETR);        //平空信号


if  HOLDING>0  and KD and CLOSE>VAR1 then begin
buy(1,2,limitr,ma1+15*MINDIFF); 
end

if  HOLDING>0  and KK and CLOSE<VAR3 then begin
buy(1,2,limitr,ma1-15*MINDIFF); 
end