您现在的位置:程序化交易>> 期货公式>> 金字塔等>> 金字塔知识>>正文内容

请教开仓问题 [金字塔]

  • 咨询内容:

    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一下,就会开多但,这个是我不想要的,请高手指点!

     

  • 金字塔客服:

    把原来的代码都贴出来

     

  • 用户回复:

    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

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

     

  • 网友回复:

    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

     

  • 网友回复:

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

     

    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

 

有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友

可联系技术人员 QQ: 511411198  点击这里给我发消息进行 有偿 编写!不贵!点击查看价格!


【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容