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
-
文華技術人員:
與您的編寫有關
您將完整模型發送上來,我們分析一下?
?來源: m.kzuj.com.cn
-
文華客服:
?
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 進行 有償 編寫!(不貴!點擊查看價格!)
相關文章
-
沒有相關內容