開拓者while循環時,還能接收行情嗎 [開拓者 TB]
- 咨詢內容: 平倉反手的交易,在平倉發出委托至成交之間,需要一個延時等待成交的循環語句,以保證有足夠的資金開新倉,問題是,在循環期間,是否還能接收新的行情信息。我的理解是:在循環期間,相當于處理一個tick的程序還沒有運行完,按TB的運行機制,似乎不會處理新的tick信息。
Params
Vars
Numeric startime;
Begin
If (Close < Open)
{
sell(1,Close);
}
if(買條件)
{
startime = CurrentTime;
while(A_buyposition != 0)
{
if(Low == Q_LowerLimit)
Continue;//跌停板,難成交,繼續等待 問題:如果跌停板已打開,是否能收到新的行情信息呢?收不到并且發出的平倉委托本身有問題,這里就變成死循環了。
if(CurrentTime - startime > 0.000005)
break; //不是跌停板,而且超過5秒,還沒成交,不等了。
}
Buy(1,close);
}
End - TB技術人員: 我覺得也不會,而且tb應該是單線程執行的,沒測試過,不過你可以用系統調試一下看看,里面加一個FileAppend然后監控一下是那個線程在做這個fileappend(通過系統監控),什么時候在輸出什么log就可以知道了啊。
- TB客服: startime = CurrentTime 這一句永遠都在 if(CurrentTime - startime > 0.000005)這個之前執行,邏輯明顯有問題。。。
- 網友回復: 回2樓:我沒開模擬,聽說模擬服務器不好,直接開的實盤,測試起來不是很方便。
回3樓:在執行while循環時,如果沒有中斷,應該不會去執行while之前的語句的,也就是說,如果while條件一直存在(死循環),那么,CurrentTime(電腦時間)會一直在走,而startime卻停留在初始賦值的數值。 - 網友回復: 本帖最后由 niubaisui 于 2012-1-12 19:23 編輯
我現在最擔心的是,在執行while循環時,帳戶持倉發生了變化(A_buyposition 由大于0變成了1),卻沒能收到,就真成了死循環了。
另外,我需要這樣子延時,而不是采用tick延時,是因為每個tick都會把程序執行一遍,導致其它變量改變不好寫。
有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友
可聯系技術人員 QQ: 262069696 進行 有償 編寫!(不貴!點擊查看價格!)
相關文章
-
沒有相關內容