TB實盤出現問題:不滿足平倉條件卻平倉
作者:開拓者 TB 來源:cxh99.com 發布時間:2016年05月15日
- 咨詢內容:
請教一下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 編輯
看到您的委托指令也有寫日志的,建議您在日志內容里加上輸出的每 一個條件值 ,這樣就清楚到底有沒有滿足條件,以及是哪一部分上與您肉眼觀察到的不同了。