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

下单组件 这儿有语法错误吗? [文华财经]

  • 咨询内容:

    我这个模组,能运行,但一会儿就会死,查看模组运行,显示116行有语法错误,我就是检查不出来,麻烦老师看看

     

     

     ELSE IF(F_Sig()==SPK) //如果取出的信号为SPK
                 {
                   IF(T_IsNoOrder()==0&&LastState==0)
          {
                      IF(CurrentTime()-LastOrderTime()>s&&F_SigPrice()-Offers(F_DealCode(),"bid1")<=MinPrice(F_DealCode())*M);               
                      T_DeleteOrderByCode(F_DealCode(),0);
                      SPID=T_Deal(F_DealCode(),1,1,F_BuyPosition(),Offers(F_DealCode(),"bid1"));
                      SKID=T_Deal(F_DealCode(),1,0,KN,Offers(F_DealCode(),"bid1"));
                    }
          ELSE IF(T_IsNoOrder()==1&&T_OrderState(SKID)==1&&T_OrderState(SPID)==1)//卖开委托全部成交
       {
        MessageOut("成交已完成!");
        LastState=1;   
       }
                  }

     

     

     

     

     

     

     

    提示的是这儿 if 附近有语法错误,麻烦帮我看看,s是参数,10   秒

     

     

            IF(CurrentTime()-LastOrderTime()>s&&F_SigPrice()-Offers(F_DealCode(),"bid1")<=MinPrice(F_DealCode())*M);               

     

     


     

  • 文华技术人员: 麻烦您告知您的完整组件,可以发送到research@wenhua.com.cn  ,并且在邮件中附上该帖子链接,谢谢

     

  • 文华客服:

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

    //主要策略:设定超价参数,开平仓时,自动根据超价参数调整委托价格,提高成交价几率。
    VAR N;//定义超价参数。
    VAR KN;//定义开仓手数。
    //VAR PN;//定义平仓手数。
    VAR BKID;//定义BK委托ID
    VAR SKID;//定义SK委托ID
    VAR BPID;//定义BP委托ID
    VAR SPID;//定义SP委托ID 
    VAR LastState;
    VAR valume1;
    VAR valume2;
    VAR s;
    VAR M;
    VOID MAIN()//主函数。
    {
          KN=1;
          M=5;

     N=0.4;
          s=10;
     LastState=ReadGlobal("LASTSTATE");
          valume1=(Offers(F_DealCode(),"askvol1")+Offers(F_DealCode(),"bidvol1"))>0
                  &&Offers(F_DealCode(),"askvol1")/(Offers(F_DealCode(),"askvol1")+Offers(F_DealCode(),"bidvol1"))<N;          
          valume2=(Offers(F_DealCode(),"askvol1")+Offers(F_DealCode(),"bidvol1"))>0
                  &&Offers(F_DealCode(),"bidvol1")/(Offers(F_DealCode(),"askvol1")+Offers(F_DealCode(),"bidvol1"))<N;     
       IF(F_High(0)==T_GetRiseLimit(F_DealCode())&&F_BuyPosition()>0)
              {
                T_Deal(F_DealCode(),1,1,F_BuyPosition(),Offers(F_DealCode(),"bid1"));
              }
       ELSE IF(F_Low(0)==T_GetFallLimit(F_DealCode())&&F_SellPosition()>0)
              {
                T_Deal(F_DealCode(),0,1,F_SellPosition(),Offers(F_DealCode(),"ask1"));
              }

       IF(F_FreshSig()==1&&F_SigValid()==1)//如果是未处理过的新信号
     { 
      IF(F_Sig()==BPK) //如果取出的信号为BpK
             {
                IF(valume1==1)
          {
                      BPID=T_Deal(F_DealCode(),0,1,F_SellPosition(),Offers(F_DealCode(),"bid1"));
       BKID=T_Deal(F_DealCode(),0,0,KN,Offers(F_DealCode(),"bid1"));//买开指定手数。     
                    }
                ELSE
                    {
                      BPID=T_Deal(F_DealCode(),0,1,F_SellPosition(),Offers(F_DealCode(),"ask1"));
       BKID=T_Deal(F_DealCode(),0,0,KN,Offers(F_DealCode(),"ask1"));//买开指定手数。
          }
               }

       ELSE IF(F_Sig()==SPK) //如果取出的信号为SK
      {
                  IF(valume2==1)
                     {
                       SPID=T_Deal(F_DealCode(),1,1,F_BuyPosition(),Offers(F_DealCode(),"ask1"));
        SKID=T_Deal(F_DealCode(),1,0,KN,Offers(F_DealCode(),"ask1"));//卖开指定手数。
           }
                  ELSE
                     {
                       SPID=T_Deal(F_DealCode(),1,1,F_BuyPosition(),Offers(F_DealCode(),"bid1"));
        SKID=T_Deal(F_DealCode(),1,0,KN,Offers(F_DealCode(),"bid1"));//卖开指定手数。
           }
                 }
              
       ELSE IF(F_Sig()==BP&&F_SellPosition()>0) //如果取出的信号为BP
       {
                   IF(valume1==1)
                     {   
         BPID=T_Deal(F_DealCode(),0,1,F_SellPosition(),Offers(F_DealCode(),"bid1"));//买平指定手数。
        //此句中T_Deal的第3个参数为2,表示平今,只适用于上交所合约,如果绑定非上交所合约时,请将2改为1即可。下同理。
           }
                    ELSE
                     {   
         BPID=T_Deal(F_DealCode(),0,1,F_SellPosition(),Offers(F_DealCode(),"ask1"));//买平指定手数。
        //此句中T_Deal的第3个参数为2,表示平今,只适用于上交所合约,如果绑定非上交所合约时,请将2改为1即可。下同理。
           }
         } 
        ELSE IF(F_Sig()==SP&&F_BuyPosition()>0) //如果取出的信号为SP
       {
                   IF(valume2==1)
                     {
         SPID=T_Deal(F_DealCode(),1,1,F_BuyPosition(),Offers(F_DealCode(),"ask1"));//买平指定手数。
           }   
         ELSE  
           {
         SPID=T_Deal(F_DealCode(),1,1,F_BuyPosition(),Offers(F_DealCode(),"ask1"));//买平指定手数。
           }
                  }   
          }
        ELSE IF(F_FreshSig()==0&&F_SigValid()==1)//如果是处理过的信号
     { 
         LastState=0;
       IF(F_Sig()==BPK&&LastState==0) //如果取出的信号为BPK
                 {
                   IF(T_IsNoOrder()==0)
          {
                      IF(CurrentTime()-LastOrderTime()>s&&Offers(F_DealCode(),"ask1")-F_SigPrice()<=MinPrice(F_DealCode())*M);
                      T_DeleteOrderByCode(F_DealCode(),0);
                      BPID=T_Deal(F_DealCode(),0,1,F_SellPosition(),Offers(F_DealCode(),"ask1"));
                      BKID=T_Deal(F_DealCode(),0,0,KN,Offers(F_DealCode(),"ask1"));
                    }
         ELSE IF(T_IsNoOrder()==1&&T_OrderState(BKID)==1&&T_OrderState(BPID)==1)//买开委托全部成交
       {
        MessageOut("成交已完成!"); 
        LastState=1;  
       }
                   }
      
        ELSE IF(F_Sig()==SPK) //如果取出的信号为SPK
                 {
                   IF(T_IsNoOrder()==0&&LastState==0)
          {
                      IF(CurrentTime()-LastOrderTime()>s&&F_SigPrice()-Offers(F_DealCode(),"bid1")<=MinPrice(F_DealCode())*M);               
                      T_DeleteOrderByCode(F_DealCode(),0);
                      SPID=T_Deal(F_DealCode(),1,1,F_BuyPosition(),Offers(F_DealCode(),"bid1"));
                      SKID=T_Deal(F_DealCode(),1,0,KN,Offers(F_DealCode(),"bid1"));
                    }
          ELSE IF(T_IsNoOrder()==1&&T_OrderState(SKID)==1&&T_OrderState(SPID)==1)//卖开委托全部成交
       {
        MessageOut("成交已完成!");
        LastState=1;   
       }
                  }
      
        ELSE IF(F_Sig()==BP) //如果取出的信号为BP
       {
                   IF(T_IsNoOrder()==0&&LastState==0)
                      {
                      IF(CurrentTime()-LastOrderTime()>s&&Offers(F_DealCode(),"ask1")-F_SigPrice()<=MinPrice(F_DealCode())*M);
                      T_DeleteOrderByCode(F_DealCode(),0);
                      BPID=T_Deal(F_DealCode(),0,1,F_SellPosition(),Offers(F_DealCode(),"ask1"));
                      }
          ELSE IF(T_IsNoOrder()==1&&T_OrderState(BPID)==1)//买平委托全部成交
       {
        MessageOut("成交已完成!");
        LastState=1;   
       }
        }

         ELSE IF(F_Sig()==SP) //如果取出的信号为SP
                 {
                   IF(T_IsNoOrder()==0&&LastState==0)
            {
                      IF(CurrentTime()-LastOrderTime()>s&&F_SigPrice()-Offers(F_DealCode(),"bid1")<=MinPrice(F_DealCode())*M);
                      T_DeleteOrderByCode(F_DealCode(),0);
                      SPID=T_Deal(F_DealCode(),1,1,F_BuyPosition(),Offers(F_DealCode(),"ask1"));
                      }
          ELSE IF(T_IsNoOrder()==1&&T_OrderState(SPID)==1)//卖平委托全部成交
       {
        MessageOut("成交已完成!"); 
        LastState=1;  
       }
        }
     }
     WriteGlobal("LASTSTATE", LastState);
    }

     

  • 网友回复:

    我用的这个程序在测试

     

     

    C>REF(H,1),BPK;
    C<REF(L,1),SPK;
    AUTOFILTER;

     

     

  • 网友回复: 您的下单组件源码语法检测室通过的,您具体有是什么问题吗?请详细说明

 

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

可联系技术人员 QQ: 262069696  点击在线交流进行 有偿 编写!不贵!点击查看价格!


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

相关文章

    没有相关内容