以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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=169248)

--  作者:一代天骄
--  发布时间:2019/4/9 10:45:49
--  加仓
加仓次数限制在2次,并且比上次开仓价格高2%如何写?
--  作者:FireScript
--  发布时间:2019/4/9 10:54:03
--  
 加仓次数这个之前这个帖子回过你了的:http://www.weistock.com/bbs/dispbbs.asp?BoardID=4&ID=168920&skin=0
比上次开仓价格高2%这个意思是加仓条件吗?还是加仓价格。
[此贴子已经被作者于2019/4/9 10:59:23编辑过]

--  作者:一代天骄
--  发布时间:2019/4/9 10:54:24
--  
加仓条件
--  作者:FireScript
--  发布时间:2019/4/9 11:00:38
--  
 buy(加仓条件 and c>ENTERPRICE*1.02 and holding>0,1,market);
限制加仓次数的,建议参考下之前回复你的帖子吧。当时给了解决方案的。

--  作者:一代天骄
--  发布时间:2019/4/9 13:44:11
--  我自己写存在一些问题
我是这么写的,VARIABLE:NUM1=0;
                    VARIABLE:NUM2=0;
IF CLOSE>1.02*ENTERPRICE AND HOLDING>0 AND NUM1<2 THEN 
    BEGIN 
   BUY(1,1,LIMIT,CLOSE+3*MINDIFF),IGNORECHECKPRICE;
   NUM1:=NUM1+1;
END 
IF CLOSE<0.98*ENTERPRICE  AND HOLDING<0 AND  NUM2<2 THEN 
   BEGIN
   SELL(1,1,LIMIT,CLOSE-3*MINDIFF),IGNORECHECKPRICE;
   NUM2:=NUM2+1;
END  
然后在每个平仓条件后面加上
NUM1:=0;
NUM2:=0;,
这样写的话多头能自动加仓,空头不能自动加仓,这是哪里出问题?

--  作者:FireScript
--  发布时间:2019/4/9 13:59:51
--  
 给出完整代码吧。不完整代码我处理起来不方便的。
--  作者:一代天骄
--  发布时间:2019/4/9 14:11:18
--  
INPUT:N1(12,5,250,1),N2(151,5,250,1),Z1(2,1,10,1),Z2(2,1,10,1),Z3(4,1,20,1),Z4(4,1,10,1);
MA_D:=MA(CLOSE,N1);
MA_K:=MA(CLOSE,N2);
MA20:=MA(CLOSE,28);
RSV:=(CLOSE-LLV(LOW,24))/(HHV(HIGH,24)-LLV(LOW,24))*100;
K_D:=SMA(RSV,13,1);
D_D:=SMA(K_D,4,1);
K_K:=SMA(RSV,7,1);
D_K:=SMA(K_K,3,1);
VARIABLE:NUM1=0;
VARIABLE:NUM2=0;
MAXPROFIT_D:=(HHV(HIGH,ENTERBARS+2)-AVGENTERPRICE)/AVGENTERPRICE;
CURRENTPROFIT_D:=(CLOSE-AVGENTERPRICE)/AVGENTERPRICE;
CURRENTLOSS_D:=(AVGENTERPRICE-CLOSE)/AVGENTERPRICE;
MAXPROFIT_K:=(AVGENTERPRICE-LLV(LOW,ENTERBARS+2))/AVGENTERPRICE;
CURRENTPROFIT_K:=(AVGENTERPRICE-CLOSE)/AVGENTERPRICE;
CURRENTLOSS_K:=(CLOSE-AVGENTERPRICE)/AVGENTERPRICE;
CD1:=CURRENTLOSS_D>=0.01*Z1 AND HOLDING>0;
CD2:=MAXPROFIT_D>=0.01*Z2 AND CLOSE<=AVGENTERPRICE AND HOLDING>0;
CD3:=MAXPROFIT_D>=0.01*Z3 AND (HHV(HIGH,ENTERBARS+2)-CLOSE)/HHV(HIGH,ENTERBARS+2)>=0.01*Z4 AND HOLDING>0 ;
CD4:=CURRENTLOSS_K>=0.01*Z1 AND HOLDING<0;
CD5:=MAXPROFIT_K>=0.01*Z2 AND CLOSE>=AVGENTERPRICE AND HOLDING<0;
CD6:=MAXPROFIT_K>0.01*Z3 AND (CLOSE-LLV(LOW,ENTERBARS+2))/LLV(LOW,ENTERBARS+2)>=0.01*Z4 AND HOLDING<0;
//止盈止损
IF CD1=1 OR CD2=1 OR CD3=1 THEN 
   BEGIN
   SELL(HOLDING>0,0,LIMIT,CLOSE-3*MINDIFF),IGNORECHECKPRICE;
   DRAWTEXT( 1,LOW ,"平多" );
   NUM1:=0;
END
IF CD4=1 OR CD5=1 OR CD6=1 THEN 
   BEGIN
   SELLSHORT(HOLDING<0,0,LIMIT,CLOSE+3*MINDIFF),IGNORECHECKPRICE;
   DRAWTEXT( 1,LOW ,"平空" );  
   NUM2:=0;
END
//开仓条件 
IF CLOSE>MA_D AND CROSS(K_D,D_D)   THEN 
   BEGIN
   BUY( HOLDING=0,1,LIMIT,CLOSE+3*MINDIFF),IGNORECHECKPRICE;
   DRAWTEXT( 1,LOW ,"开多" );
END
IF CLOSE<MA_K AND CROSS(D_K,K_K)   THEN 
   BEGIN 
   BUYSHORT(HOLDING=0,1,LIMIT,CLOSE-3*MINDIFF),IGNORECHECKPRICE; 
   DRAWTEXT( 1,HIGH ,"开空" );
END
//加仓
IF CLOSE>1.02*ENTERPRICE AND HOLDING>0 AND NUM1<2 THEN 
    BEGIN 
   BUY(1,1,LIMIT,CLOSE+3*MINDIFF),IGNORECHECKPRICE;
   NUM1:=NUM1+1;
END 
IF CLOSE<0.98*ENTERPRICE  AND HOLDING<0 AND  NUM2<2 THEN 
   BEGIN
   SELL(1,1,LIMIT,CLOSE-3*MINDIFF),IGNORECHECKPRICE;
   NUM2:=NUM2+1;
END  

--  作者:FireScript
--  发布时间:2019/4/9 14:22:40
--  
 你加仓这里只有多头加仓么。没有空头加仓:
IF CLOSE<0.98*ENTERPRICE  AND HOLDING<0 AND  NUM2<2 THEN 
   BEGIN
   SELL(1,1,LIMIT,CLOSE-3*MINDIFF),IGNORECHECKPRICE;
   NUM2:=NUM2+1;
END 

这是最后一段代码,是不是写错了,这是一个平多的操作。