TB实盘出现问题:不满足平仓条件却平仓 [开拓者 TB]
- 咨询内容:
请教一下TB软件客服:
 一、我的代码如下:
 // 平空仓
 Con_ExitK = Q_Last> OpenD(0)+1*(HighD(1)-LowD(1));
 If(A_SellPosition>0 And HasSendOrderK==11 And Con_ExitK)
 {
 A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition,Q_AskPrice+minpoint); //平空单
 SetTBProfileString("DualThrust_Ni_WAR","HasSendOrderK",Text(10));
 myExitPrice=Q_AskPrice;
 FileAppend("c:\DualThrust_Ni_WAR.log","Date = "+Text(Date)+"Time = "+Text(Time)+"currentTime = "+Text(currentTime) +"平空仓 = "+Text(myExitPrice));
 PlotString("平空仓", "平空仓",Low);
 }
 //
 说明:我开空仓时用下列 语句将HasSendOrderK的值设为11,并存入数据库
 SetTBProfileString("DualThrust_Ni_WAR","HasSendOrderK",Text(11));
 我平空仓时用下列 语句将HasSendOrderK的值设为10,并存入数据库
 SetTBProfileString("DualThrust_Ni_WAR","HasSendOrderK",Text(10));
 二、现在的问题
 (1)现在我有一手空仓,没有多仓,HasSendOrderK==11,当条件Con_ExitK = Q_Last> OpenD(0)+1*(HighD(1)-LowD(1))还没满足时,就执行if中的语句,执行结果为(c:\DualThrust_Ni_WAR.log中的显示):
 Date = 20160223Time = 0.093currentTime = 0.1平空仓 = N/A
 Date = 20160223Time = 0.11currentTime = 0.133001平空仓 = N/A
 HasSendOrderK变为10
 但却没有真正平仓;于是我将数据库中的HasSendOrderK改为11,重新加载程序,现象依旧。
 (2)当我将if中的条件改为If(A_BuyPosition==0 and A_SellPosition>0 And HasSendOrderK==11 And Con_ExitK) 时,将数据库中的HasSendOrderK改为11,重新加载程序时,也是执行if中的语句,执行结果为(c:\DualThrust_Ni_WAR.log中的显示):
 Date = 20160223Time = 0.093currentTime = 0.1平空仓 = 68320
 Date = 20160223Time = 0.11currentTime = 0.133001平空仓 = 68320
 HasSendOrderK变为10
 但却真正平仓了;
 三、说明
 我用的是实盘,不是模拟盘。怎么回事呢到底?
 
-  TB技术人员:
建议先弄图表函数吧,A函数要求思路严谨,且不可回测。
-  TB客服:
我历史回测回测时用的是图表函数,但实盘时最好还是用A函数,因为要取实时的资金状况等等。
-  网友回复:
 本帖最后由 小米 于 2016-2-25 09:21 编辑 
 
 看到您的委托指令也有写日志的,建议您在日志内容里加上输出的每 一个条件值 ,这样就清楚到底有没有满足条件,以及是哪一部分上与您肉眼观察到的不同了。
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 511411198  进行 有偿 编写!(不贵!点击查看价格!)
                        
相关文章
- 
                        没有相关内容
                       

 
                     会员登录/注册
会员登录/注册