以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  请教开仓问题  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=54601)

--  作者:he3617
--  发布时间:2013/8/2 15:30:40
--  请教开仓问题

RSI:=ref(SMA(MAX(CLOSE-REF(CLOSE,1),0),N1,1)/SMA(ABS(CLOSE-REF(CLOSE,1)),N1,1)*100,1);
UP:=ref(hhv(h,20),1);
LD:=ref(llv(l,20),1);

开多条件:=H>UP AND RSI<80;

开空条件:=L<LD AND RSI>20;

 

我的思路是价格突破20天高点时并且RSI值小于80开仓,如果大于80,则这个交易到下一个空单之前不开多单,但上面这种写法是一旦RSI回到80一下,就会开多但,这个是我不想要的,请高手指点!


--  作者:jinzhe
--  发布时间:2013/8/2 15:35:14
--  

把原来的代码都贴出来


--  作者:he3617
--  发布时间:2013/8/2 15:41:43
--  

input:lots(1,0,9,1);
input:n(4,0,9,1);
input:n1(0.002,0.001,1,0.001);
input:M(30,0,50,1);
VARIABLE:maxprofit=0;
win:=0;
win2:=0;
cc:=ref(c,1);
cyc:=barslast(date>ref(date,1))+1;
今高:=HHV(H,cyc);
今低:=llv(l,cyc);
BF:=ref(今高-今低,1);
今开:=if(cyc=1,open,ref(open,cyc-1));
昨收:="RXMA.ZC#DAY";
昨高:="RXMA.ZH#DAY";
昨低:="RXMA.ZL#DAY";
10日平均波幅:="RXMA.MA10#DAY";
RSI:=ref(SMA(MAX(CLOSE-REF(CLOSE,1),0),N1,1)/SMA(ABS(CLOSE-REF(CLOSE,1)),N1,1)*100,1);
UP:=ref(hhv(h,20),1);
LD:=ref(llv(l,20),1);
if time>=091600 and time<150500  then begin
 
  if holding=0 then begin
 
    if h>=up and RIS<80 then begin
      buy(holding=0,lots,limitr,max(open,up));
      maxprofit:=0;
  
    end
   
    if l<=ld AND RIS>20 then begin
      buyshort(holding=0,lots,limitr,min(open,ld));
      maxprofit:=0;
     
    end
  end
end
 if holding>0 and enterbars>0 then begin
    win:=c-enterprice;
    if win>maxprofit then
     maxprofit:=win;
     win2:=(maxprofit-win)/maxprofit*100;
   end
     if holding>0 and enterbars>0 then begin
   多止损:sell(win<=-10,lots,LIMITR,c);
   多止盈:sell(maxprofit>20 and win2>=60 and openprofit>0,lots,limitr,c);
  end

  if holding<0 and enterbars>0 then begin
    win:=enterprice-c;
    if win>maxprofit then
    maxprofit:=win;
    win2:=(maxprofit-win)/maxprofit*100;
  end
  if holding<0 and enterbars>0 then begin
    空止损:sellshort(win<=-10,lots,limitr,c);;
    空止盈:sellshort(maxprofit>20 and win2>=60 and openprofit>0,lots,limitr,c);
   end  

     
if holding<0 then begin
   if h>=up then begin
   sellshort(holding<0,0,limitr,max(open,up));
  end
   if time>=151400 then begin
    sellshort(1,lots,thisclose);
    
  end
 end
if holding>0 then begin
  if l<=ld then begin
   sell(holding>0,0,limitr,min(open,ld));
  end
  if time>=151400 then begin
    sell(1,lots,thisclose);
   
  end
 end

这是源码,有其他不妥的地方也请高手指点!


--  作者:he3617
--  发布时间:2013/8/2 15:47:18
--  

input:lots(1,0,9,1);
input:n(4,0,9,1);
input:n1(0.002,0.001,1,0.001);
input:M(30,0,50,1);
VARIABLE:maxprofit=0;
win:=0;
win2:=0;

RSI:=ref(SMA(MAX(CLOSE-REF(CLOSE,1),0),N1,1)/SMA(ABS(CLOSE-REF(CLOSE,1)),N1,1)*100,1);
UP:=ref(hhv(h,20),1);
LD:=ref(llv(l,20),1);
if time>=091600 and time<150500  then begin
 
  if holding=0 then begin
 
    if h>=up and Rsi<80 then begin
      buy(holding=0,lots,limitr,max(open,up));
      maxprofit:=0;
  
    end
   
    if l<=ld AND Rsi>20 then begin
      buyshort(holding=0,lots,limitr,min(open,ld));
      maxprofit:=0;
     
    end
  end
end
 if holding>0 and enterbars>0 then begin
    win:=c-enterprice;
    if win>maxprofit then
     maxprofit:=win;
     win2:=(maxprofit-win)/maxprofit*100;
   end
     if holding>0 and enterbars>0 then begin
   多止损:sell(win<=-10,lots,LIMITR,c);
   多止盈:sell(maxprofit>20 and win2>=60 and openprofit>0,lots,limitr,c);
  end

  if holding<0 and enterbars>0 then begin
    win:=enterprice-c;
    if win>maxprofit then
    maxprofit:=win;
    win2:=(maxprofit-win)/maxprofit*100;
  end
  if holding<0 and enterbars>0 then begin
    空止损:sellshort(win<=-10,lots,limitr,c);;
    空止盈:sellshort(maxprofit>20 and win2>=60 and openprofit>0,lots,limitr,c);
   end  

     
if holding<0 then begin
   if h>=up then begin
   sellshort(holding<0,0,limitr,max(open,up));
  end
   if time>=151400 then begin
    sellshort(1,lots,thisclose);
    
  end
 end
if holding>0 then begin
  if l<=ld then begin
   sell(holding>0,0,limitr,min(open,ld));
  end
  if time>=151400 then begin
    sell(1,lots,thisclose);
   
  end
 end


--  作者:jinzhe
--  发布时间:2013/8/2 16:01:29
--  

给你在开平仓那里做个限定

 

variable:n=0,m=0;

if n=0 and 其他开多条件 then begin

buy;

n:=1;

m:=0;

end

 

if m=0 and 其他开空条件 then begin

buyshort;

m:=1;

n:=0;

end


--  作者:he3617
--  发布时间:2013/8/2 16:55:29
--  

谢谢