您现在的位置:程序化交易>> 期货公式>> 文华财经>> 文华财经知识>>正文内容

自编的下单软件怎么只出现信号,不开仓 [文华财经知识]

  • 咨询内容:  



    图片点击可在新窗口打开查看此主题相关图片如下:未命名.jpg
    图片点击可在新窗口打开查看


    图片点击可在新窗口打开查看此主题相关图片如下:qq截图20120130092040.png
    图片点击可在新窗口打开查看
    我的下单组件是开仓信号持续300秒开仓,平仓立即发出;

    但怎么只出现信号?

     

  • 赢顺技术人员:

    //该组件仅仅用来示范如何编写算法交易组件
    //用户需要根据自己交易经验,编写组件再实际应用!!!

    //主要策略:设定超价参数,开平仓时,自动根据超价参数调整委托价格,提高成交价几率。
    VAR N;//定义超价参数。
    VAR KN;//定义开仓手数。
    VAR PN;//定义平仓手数。
    VAR BKID;//定义BK委托ID
    VAR SKID;//定义SK委托ID
    VAR BPID;//定义BP委托ID
    VAR SPID;//定义SP委托ID 
    VAR LastState;
    VOID MAIN()//主函数。
    {
     N=1;
     KN=1;
     PN=1;
     LastState=ReadGlobal("LASTSTATE");
     IF(F_FreshSig()==1&&F_SigValid()==1)//如果是未处理过的新信号
     { 
      IF(F_Sig()==BK&&CurrentTime()-F_SigTime()>=300) //如果取出的信号为BK
      {
       BKID=T_Deal(F_DealCode(),0,0,KN,Offers(F_DealCode(),"ask1")+MinPrice(F_DealCode())*N);//买开指定手数。
      }
      IF(F_Sig()==SK&&CurrentTime()-F_SigTime()>=300) //如果取出的信号为SK
      {
       SKID=T_Deal(F_DealCode(),1,0,KN,Offers(F_DealCode(),"bid1")-MinPrice(F_DealCode())*N);//卖开指定手数。
      }
      IF(F_Sig()==BP) //如果取出的信号为BP
      {
       IF(F_SellPosition()<PN&&F_SellPosition()>0)
       {
        BPID=T_Deal(F_DealCode(),0,1,F_SellPosition(),Offers(F_DealCode(),"ask1")+MinPrice(F_DealCode())*N);//买平指定手数。
        //此句中T_Deal的第3个参数为2,表示平今,只适用于上交所合约,如果绑定非上交所合约时,请将2改为1即可。下同理。
       }
       IF(F_SellPosition()>=PN)
       {
        BPID=T_Deal(F_DealCode(),0,1,PN,Offers(F_DealCode(),"ask1")+MinPrice(F_DealCode())*N);//买平指定手数。
       }
      }
      IF(F_Sig()==SP) //如果取出的信号为SP
      {
       IF(F_BuyPosition()<PN&&F_BuyPosition()>0)
       {
        SPID=T_Deal(F_DealCode(),1,1,F_BuyPosition(),Offers(F_DealCode(),"ask1")-MinPrice(F_DealCode())*N);//买平指定手数。
       }
       IF(F_BuyPosition()>=PN)
       {
        SPID=T_Deal(F_DealCode(),1,1,PN,Offers(F_DealCode(),"ask1")-MinPrice(F_DealCode())*N);//买平指定手数。
       }  
      }
     } 
     ELSE IF(F_FreshSig()==0)//如果是处理过的信号
     { 
      LastState=0;
      IF(F_Sig()==BK) //如果取出的信号为BK
      {
       IF(T_OrderState(BKID)==1&&LastState==0)//买开委托全部成交
       {
        MessageOut("成交已完成!"); 
        LastState=1;  
       }
      }
      IF(F_Sig()==SK) //如果取出的信号为SK
      {
       IF(T_OrderState(SKID)==1&&LastState==0)//卖开委托全部成交
       {
        MessageOut("成交已完成!");
        LastState=1;   
       }
      }
      IF(F_Sig()==BP) //如果取出的信号为BP
      {
       IF(T_OrderState(BPID)==1&&LastState==0)//买平委托全部成交
       {
        MessageOut("成交已完成!");
        LastState=1;   
       }
      }
      IF(F_Sig()==SP) //如果取出的信号为SP
      {
       IF(T_OrderState(SPID)==1&&LastState==0)//卖平委托全部成交
       {
        MessageOut("成交已完成!"); 
        LastState=1;  
       }
      }
     }
     WriteGlobal("LASTSTATE", LastState);
    }

    这是我的下单组件,

     

  • 赢顺客服:

    图片点击可在新窗口打开查看此主题相关图片如下:qq截图20120130092929.png
    图片点击可在新窗口打开查看


    图片点击可在新窗口打开查看此主题相关图片如下:qq截图20120130093007.png
    图片点击可在新窗口打开查看
    不知道怎么不委托,也没持仓,

     

  • 网友回复:

    您时间判断的句子不能写到F_FreshSig()==1&&F_SigValid()==1下,因为信号走完300s 就不是新信号了,所以应该写到F_FreshSig()==0&&F_SigValid()==1的下面。

     

  • 网友回复:

    把IF(F_FreshSig()==1&&F_SigValid()==1)改为 IF(F_FreshSig()==0&&F_SigValid()==1)

    其他都不变是吗? 


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

相关文章

    没有相关内容