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