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 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容