以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  为什么同一根K线开平仓?  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=144745)

--  作者:Jlx
--  发布时间:2016/12/14 22:26:28
--  为什么同一根K线开平仓?
老师,
为什么同一根K线开平仓?

此主题相关图片如下:10.png
按此在新窗口浏览图片
INPUT:q(100,5,500,5) m(3,3,18,3) n(2,2,20,2);
VARIABLE:p=0;
w:=q/5;             
y:=if(ISLASTBAR,(if(0<DATATYPE<7,DATATYPE,DRAWNULL)),DRAWNULL);
g:= NUMTOSTR(y ,0 );
ref5k:STKINDIEX(\'\' ,\' ma.ma1(5)\' ,0 , g,-1 ,200 );
ref10k:STKINDIEX(\'\' ,\' ma.ma1(10)\' ,0 ,g,-1 ,200 );
ref20k:STKINDIEX(\'\' ,\' ma.ma1(20)\' ,0 ,g,-1 ,200 );


kd:= ref5k>ref10k
              and ref10k>ref20k
              and ref5k<(CLOSE+n*MINDIFF)
              and ref5k>(L-m*MINDIFF);
              
kd1:= ref5k>ref10k
              and ref10k>ref20k
              and ref5k<(CLOSE+n*MINDIFF)
              and ref5k>(L-m*MINDIFF) ;
bd:= ( (MA(C,10)>MA(C,5))or ((C-ENTERPRICE)>q))
            and  enterbars >1; 
            
ds := (ENTERPRICE-c)>w ; 
                      
kg:=  ref5k<ref10k
              and ref10k<ref20k
              and ref5k>(CLOSE-n*MINDIFF)
              and ref5k<(H+m*MINDIFF);
kg1:=  ref5k<ref10k
              and ref10k<ref20k
              and ref5k>(CLOSE-n*MINDIFF)
              and ref5k<(H+m*MINDIFF);
bg:= ((MA(C,10)<MA(C,5))or ((ENTERPRICE-c)>q))
              and  enterbars >1;
gs := ((C-ENTERPRICE)>w);


IF HOLDING<0 THEN BEGIN
  
   IF  bg  THEN BEGIN   
      平空:SELLSHORT(1,0,THISCLOSE), 
      p:=0;
   END
 
   IF gs THEN BEGIN
      空损:SELLSHORT(1,0,THISCLOSE);
   END
 
   IF p=1 and kg1 THEN BEGIN
      加空:BUYSHORT(1,1,THISCLOSE);
      p:=2;
    END 
 END

IF HOLDING=0 THEN BEGIN
   
      IF kd THEN BEGIN
       多开:BUY(1,30%,THISCLOSE);
      END
END

IF HOLDING>0 THEN BEGIN
    
  IF bd    THEN BEGIN  
      平多:SELL(1,0,THISCLOSE),ORDERQUEUE;
      p:=0;
  END
  
  IF ds THEN BEGIN
       多损:SELL(1,0,THISCLOSE),ORDERQUEUE;
  END
 
END

IF HOLDING=0 THEN BEGIN
 
   IF kg THEN BEGIN
      空开:BUYSHORT(1,1,THISCLOSE);
       p:=1;
   END
END


--  作者:yukizzc
--  发布时间:2016/12/15 8:57:53
--  

平仓的代表条件加一个

enterbars>0就可以了表示当根k开仓后不会平


--  作者:jlx
--  发布时间:2016/12/15 14:06:50
--  
上面平仓条件已经加上enterbars >1了啊!
--  作者:wenarm
--  发布时间:2016/12/15 14:18:52
--  

把你平多和开多的条件输出限制看下当时是否都符合。你输出enterbars ,和holding,应该是在这个位置之前也有历史的开仓位置,

 


--  作者:jlx
--  发布时间:2016/12/25 10:35:42
--  
老师,我看了一下,开平仓同时成立,历史仓位没有,enterbars =0,为什么我都加入enterbars >1了还是有同一个K线有信号的现象。
--  作者:jinzhe
--  发布时间:2016/12/26 9:38:49
--  
那就是先平后开,
--  作者:jlx
--  发布时间:2016/12/27 10:09:25
--  
老师,都沒有历史仓位。
--  作者:jinzhe
--  发布时间:2016/12/27 10:21:22
--  

INPUT:q(100,5,500,5) m(3,3,18,3) n(2,2,20,2);
VARIABLE:p=0;
w:=q/5;            
y:=if(ISLASTBAR,(if(0<DATATYPE<7,DATATYPE,DRAWNULL)),DRAWNULL);
g:= NUMTOSTR(y ,0 );
ref5k:STKINDIEX(\'\' ,\' ma.ma1(5)\' ,0 , g,-1 ,200 );
ref10k:STKINDIEX(\'\' ,\' ma.ma1(10)\' ,0 ,g,-1 ,200 );
ref20k:STKINDIEX(\'\' ,\' ma.ma1(20)\' ,0 ,g,-1 ,200 );

 


kd:= ref5k>ref10k
              and ref10k>ref20k
              and ref5k<(CLOSE+n*MINDIFF)
              and ref5k>(L-m*MINDIFF);
             
kd1:= ref5k>ref10k
              and ref10k>ref20k
              and ref5k<(CLOSE+n*MINDIFF)
              and ref5k>(L-m*MINDIFF) ;
bd:= ( (MA(C,10)>MA(C,5))or ((C-ENTERPRICE)>q))
            and  enterbars >1;
           
ds := (ENTERPRICE-c)>w ;
                     
kg:=  ref5k<ref10k
              and ref10k<ref20k
              and ref5k>(CLOSE-n*MINDIFF)
              and ref5k<(H+m*MINDIFF);
kg1:=  ref5k<ref10k
              and ref10k<ref20k
              and ref5k>(CLOSE-n*MINDIFF)
              and ref5k<(H+m*MINDIFF);
bg:= ((MA(C,10)<MA(C,5))or ((ENTERPRICE-c)>q))
              and  enterbars >1;
gs := ((C-ENTERPRICE)>w);

 


IF HOLDING<0 THEN BEGIN
 
   IF  bg and enterbars>0 THEN BEGIN  
      平空:SELLSHORT(1,0,THISCLOSE),
      p:=0;
   END
 
   IF gs and enterbars>0 THEN BEGIN
      空损:SELLSHORT(1,0,THISCLOSE);
   END
 
   IF p=1 and kg1 THEN BEGIN
      加空:BUYSHORT(1,1,THISCLOSE);
      p:=2;
    END
 END


IF HOLDING=0 THEN BEGIN
  
      IF kd THEN BEGIN
       多开:BUY(1,30%,THISCLOSE);
      END
END


IF HOLDING>0  THEN BEGIN
   
  IF bd   and holding>0 THEN BEGIN 
      平多:SELL(1,0,THISCLOSE),ORDERQUEUE;
      p:=0;
  END
 
  IF ds and holding>0 THEN BEGIN
       多损:SELL(1,0,THISCLOSE),ORDERQUEUE;
  END
 
END


IF HOLDING=0 THEN BEGIN
 
   IF kg THEN BEGIN
      空开:BUYSHORT(1,1,THISCLOSE);
       p:=1;
   END
END

 

 

 

我把enterbars>0的条件加进去了,用户再试试看