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

Def_TickData(CodeName,0,50);的问题 [文华财经]

  • 咨询内容:

     执行语句:data = Def_TickData(CodeName,0,50);
    21:34:55  开始判断:IF( data.State == 1) // ,
    21:34:55  data.State == 1表达式:false

    老是出现这样的情况,这是有些什么原因,运行Def_TickData(CodeName,0,50);后老是取data.State失败,

     

     来源:程序化99

  • 文华技术人员: 与您的编写有关
    您将完整模型发送上来,我们分析一下

     

     来源: WWW.CXH99.COM

  • 文华客服:  

    VAR_TICKDATA data;
    VAR N,N1,BPRICE,Lost,Win,CurTime,I,J,Temp,XJ;//BKID1预先挂的止赢委托号,t1时间控制延迟1秒
    GLOBAL_VAR High,BKID,New,Type,Typp,CONQC,xj1,TA11,BD,PH,PL,CC,SHANG,XIA,MA1,MA5,xj5,TA1,xj2,xj3,xj4,junz,T11a,T1a,du2,kong,duo,du,du1,PA2,yk44,YK55,yk6,yk66,Type1,t006,js001,js002,YK1,YK4,YK5,YK6,T10,YK2,YK3,Type2,PA1,BKTIME,KG1,CD0,CD11,SKTIME,PA,BKID1,Yk,T11,T1,CD12,T112,T12,T117,T17,BKID3,BKID4,BKID33,BKID44,BKID333,BKID444,BKID3333,BKID4444,T113,T13,T114,T14,T115,T15,T116,T16,BKID2, Type3,Type4,Type5,Type31,Type30,JS,CD1,CD2,DKJS,DKJS1,KKJS,KKJS1,CD3,Type60,Type61,KP,Typp1,DY0,DY1,DY2,XY1,XY2,TYPP2; //Yk是盈亏情况;type2是止损循环的开关让他有信号时止循环1次,pa是挂单价,tipp=0表示有仓位,type=1表示有空仓,type1=1表示有多仓,BKTIME, SKTIME开仓时间
    VAR CodeName;


    VOID MAIN()

       CodeName = "rb1805";
       N = 1; // 下单手数
       N1 = MinPrice(CodeName); //当合约价格最小变动价位
       Lost = 2; //止损3个最小变动价位
       Win = 50 ;//止盈10个最小变动价位
       New = Price(CodeName, "New"); //获取当前合约最新价
      // BPRICE=T_SellAvgPrice(CodeName );//取得持仓栏中该合约多头持仓均价T_SellAvgPrice( )
     

                              

     


    CurTime = CurrentTime(); // 获取当前时间
       //   MessageOut(CurTime);
       // 收盘前30秒清仓
       CONQC = ((Hour( CurTime ) == 14 && Minute( CurTime ) == 55 && Second( CurTime ) > 30 )||(Hour( CurTime ) == 14 && Minute( CurTime ) == 57&& Second( CurTime ) > 30 ));//||(Hour( CurTime ) == 22 && Minute( CurTime ) == 56&& Second( CurTime ) > 30 )
     
        KP = ((Hour( CurTime ) == 9 && Minute( CurTime ) == 00 && Second( CurTime ) > 01 )||(Hour( CurTime ) == 21 && Minute( CurTime ) == 00&& Second( CurTime ) > 01 ));
      IF(KP==1)
    {KG1=0;
     Typp = 0;
     T_DeleteOrderAll();
    }
        IF( Typp == 0&&(CONQC == 1))
       {
       MessageOut("收盘前30秒清仓");
     IF(CD11==1)
             {   T_DeleteOrder(BKID);
           T_DeleteOrder(BKID2);
           T_DeleteOrder(BKID1);
            T_DeleteOrder(BKID3);
           T_DeleteOrder(BKID4);
          T_DeleteOrder(BKID33);
           T_DeleteOrder(BKID44);
     T_DeleteOrder(BKID333);
           T_DeleteOrder(BKID444);
     T_DeleteOrder(BKID3333);
           T_DeleteOrder(BKID4444);
               CD11=0;
            T_DeleteOrderAll();
          

           }
             
             IF(T115==0)
                  {
                   T15=0;
                    T15=CurrentTime();
                     T115=1;
        
                   }

             IF(CurrentTime()-T15>1)
           {
             T115=0;
     
        
        T_Deal(CodeName,1,2,T_SHBuyPosition(CodeName,0),Offers(CodeName,"bid1")); // T_Deal(CodeName,1,2,T_SHBuyPosition(CodeName ,0),Offers(CodeName,"bid1"));
           T_Deal(CodeName,0,2,T_SHSellPosition(CodeName,0),Offers(CodeName,"ask1"));
          KG1=0;
       Type = 0;
          Type1 = 0;
          Typp = 1;
          Typp1 = 0;
       }
    }
     

     

      IF(Typp == 0) //CurrentServerTime(CodeName)>Time("9:08:00" )&&New<(T_GetRiseLimit(CodeName)-N1*20)&&New>(T_GetFallLimit(CodeName)+N1*20)&&
      {
            //  IF(T11==0)
             //     {T1=CurrentTime();
                //     T11=1;
        
                //   }

            //  IF(CurrentTime()-T1>1)
           //  {
             // T11=0;
         data = Def_TickData(CodeName,0,50);
    //MessageOut("xj2"+xj2);
      
    //MessageOut("data.Num"+data.Num);

       IF( data.State == 1) // ,
       {
       //空开 
         xj1= data[0].Ask1; // 表示第一笔tick数据的卖一价。
    xj2=data[data.Num-1].Ask1;// 表示最新一笔tick的卖一价。  
    //xj4= data[24].Ask1;   
     //  IF( Typp == 0 && CONQC != 1)
     //  {
    IF(T11a==0)
                  {T1a=CurrentTime();
                     T11a=1;
        
                   }

              IF(CurrentTime()-T1a>600)
             {
              T11a=0;
              xj5=xj1;
              }
         KG1=KG1+1;
          
            
         junz=(xj1+xj2)/2;
     xj3= Offers(CodeName,"ask1");
          
    kong=0;
    duo=0; 
    IF(xj3-junz>2)
    {kong=1;
    //MessageOut("XJ1"+xj1);
    //MessageOut("xj2"+xj2);

     

  • 网友回复: 我们这里实际运行看了一下,执行上是没有问题的
    只不过由于测试的时候该合约没有今仓,平仓手数为0 ,因此委托失败。
    如果您螺纹1805有今仓持仓的话,是可以正常平仓的。
    另外,您的模型语法检查是不通过的,您加载下面的再看一下:
    VAR_TICKDATA data;VAR N,N1,BPRICE,Lost,Win,CurTime,I,J,Temp,XJ;//BKID1预先挂的止赢委托号,t1时间控制延迟1秒GLOBAL_VAR High,BKID,New,Type,Typp,CONQC,xj1,TA11,BD,PH,PL,CC,SHANG,XIA,MA1,MA5,xj5,TA1,xj2,xj3,xj4,junz,T11a,T1a,du2,kong,duo,du,du1,PA2,yk44,YK55,yk6,yk66,Type1,t006,js001,js002,YK1,YK4,YK5,YK6,T10,YK2,YK3,Type2,PA1,BKTIME,KG1,CD0,CD11,SKTIME,PA,BKID1,Yk,T11,T1,CD12,T112,T12,T117,T17,BKID3,BKID4,BKID33,BKID44,BKID333,BKID444,BKID3333,BKID4444,T113,T13,T114,T14,T115,T15,T116,T16,BKID2, Type3,Type4,Type5,Type31,Type30,JS,CD1,CD2,DKJS,DKJS1,KKJS,KKJS1,CD3,Type60,Type61,KP,Typp1,DY0,DY1,DY2,XY1,XY2,TYPP2; //Yk是盈亏情况;type2是止损循环的开关让他有信号时止循环1次,pa是挂单价,tipp=0表示有仓位,type=1表示有空仓,type1=1表示有多仓,BKTIME, SKTIME开仓时间VAR CodeName;
    VOID MAIN(){     CodeName = "rb1805";   N = 1; // 下单手数   N1 = MinPrice(CodeName); //当合约价格最小变动价位   Lost = 2; //止损3个最小变动价位   Win = 50 ;//止盈10个最小变动价位   New = Price(CodeName, "New"); //获取当前合约最新价  // BPRICE=T_SellAvgPrice(CodeName );//取得持仓栏中该合约多头持仓均价T_SellAvgPrice( )                            
    CurTime = CurrentTime(); // 获取当前时间   //   MessageOut(CurTime);   // 收盘前30秒清仓   CONQC = ((Hour( CurTime ) == 14 && Minute( CurTime ) == 55 && Second( CurTime ) > 30 )||(Hour( CurTime ) == 14 && Minute( CurTime ) == 57&& Second( CurTime ) > 30 ));//||(Hour( CurTime ) == 22 && Minute( CurTime ) == 56&& Second( CurTime ) > 30 )      KP = ((Hour( CurTime ) == 9 && Minute( CurTime ) == 00 && Second( CurTime ) > 01 )||(Hour( CurTime ) == 21 && Minute( CurTime ) == 00&& Second( CurTime ) > 01 ));  IF(KP==1){KG1=0; Typp = 0; T_DeleteOrderAll();}    IF( Typp == 0&&(CONQC == 1))   {   MessageOut("收盘前30秒清仓"); IF(CD11==1)         {   T_DeleteOrder(BKID);       T_DeleteOrder(BKID2);       T_DeleteOrder(BKID1);        T_DeleteOrder(BKID3);       T_DeleteOrder(BKID4);      T_DeleteOrder(BKID33);       T_DeleteOrder(BKID44); T_DeleteOrder(BKID333);       T_DeleteOrder(BKID444); T_DeleteOrder(BKID3333);       T_DeleteOrder(BKID4444);           CD11=0;        T_DeleteOrderAll();              }                   IF(T115==0)              {               T15=0;                T15=CurrentTime();                 T115=1;                    }         IF(CurrentTime()-T15>1)       {         T115=0;          T_Deal(CodeName,1,2,T_SHBuyPosition(CodeName,0),Offers(CodeName,"bid1")); // T_Deal(CodeName,1,2,T_SHBuyPosition(CodeName ,0),Offers(CodeName,"bid1"));        T_Deal(CodeName,0,2,T_SHSellPosition(CodeName,0),Offers(CodeName,"ask1"));       KG1=0;   Type = 0;      Type1 = 0;      Typp = 1;      Typp1 = 0;   }}    IF(Typp == 0) //CurrentServerTime(CodeName)>Time("9:08:00" )&&New<(T_GetRiseLimit(CodeName)-N1*20)&&New>(T_GetFallLimit(CodeName)+N1*20)&&  {        //  IF(T11==0)         //     {T1=CurrentTime();            //     T11=1;                 //   }        //  IF(CurrentTime()-T1>1)       //  {         // T11=0;     data = Def_TickData(CodeName,0,50);//MessageOut("xj2"+xj2);  //MessageOut("data.Num"+data.Num);   IF( data.State == 1) // ,   {   //空开       xj1= data[0].Ask1; // 表示第一笔tick数据的卖一价。xj2=data[data.Num-1].Ask1;// 表示最新一笔tick的卖一价。   //xj4= data[24].Ask1;     //  IF( Typp == 0 && CONQC != 1) //  {IF(T11a==0)              {T1a=CurrentTime();                 T11a=1;                    }          IF(CurrentTime()-T1a>600)         {          T11a=0;          xj5=xj1;          }     KG1=KG1+1;                      junz=(xj1+xj2)/2; xj3= Offers(CodeName,"ask1");       kong=0;duo=0;  IF(xj3-junz>2){kong=1;//MessageOut("XJ1"+xj1);//MessageOut("xj2"+xj2);}}}}  


    文件名:10.jpg

     

  • 网友回复:  好的谢谢,就是这个 data = Def_TickData(CodeName,0,50);

    IF( data.State == 1) ,
    加载是data.State有是返回1就能一直运行,有时加载后它不返回1就一直不能运行等多长时间都不是1

 

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

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


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

相关文章

    没有相关内容