請求加入延時函數,原因有幾點。希望能采納
作者:文華財經 來源:cxh99.com 發布時間:2015年10月21日
- 咨詢內容:
1,由延時來避免重復下單: tick行情500毫秒一個變化,舉例: data = Def_TickData("RB1505",1,2); IF( data[1].Bid1 > data[0].Bid1) T_Deal("RB1505",0,0,1,Offers("RB1505","bid1")); 延時500毫秒 這樣循環時因為有500毫秒的延時,就避免了重復下單。2,減少CPU占有: 假如有10條if在判斷,算它10毫秒走完循環,那么就算在 后面加個1毫秒延時,也會減少模型占有CPU運算的1/11。 何況是500毫秒一個tick。加個200,400毫秒的延時都不會錯過行情判斷3,簡單。能不能采納都告知我一下。謝謝
- 文華技術人員:
1. 重復下單,您可以加一個全局變量來解決。不需要延時函數。
比如:
data = Def_TickData("RB1505",1,2);
IF( data[1].Bid1 > data[0].Bid1 && M==0)
{
T_Deal("RB1505",0,0,1,Offers("RB1505","bid1"));
M=1;
}
2. 如果執行一個IF,其他的IF不想在重復執行。可以用ELSE IF來代替其他的IF.
比如:
IF(COND1)
{
....
}
ELSE IF(COND2)
{
....
}
ELSE IF(COND3)
{
....
}
- 文華客服:
這是我全部的語句,這么寫我會重復的下單,假如條件判斷里加了個M==0,條件成立后在執行上再賦予M=1。這樣我重復是解決了,但語句就再也不會讓條件成立了。VAR_TICKDATA data;GLOBAL_VAR gdID,gdsj;VOID MAIN(){data = Def_TickData("RB1505",1,2); // 保存最近2筆的tick數據IF( data.State == 1 ){IF( data[1].Bid1 > data[0].Bid1){//MessageOut ("掛單");T_DeleteOrder(gdID);gdID=T_Deal("RB1505",0,0,1,Offers("RB1505","bid1"));//發出委托bid1gdsj=CurrentTime();}}IF (CurrentTime()==gdsj+5){//MessageOut("掛單撤銷");T_DeleteOrder(gdID);}IF (T_OrderState(gdID) == 1){//MessageOut("掛單成交,掛單止盈4點");T_Deal("RB1505",1,2,1,Offers("RB1505","bid1")+4);}}
- 網友回復:
語句不會讓條件在成立是由于你沒有對M重新賦值為0 ,在平倉委托成交后將M=0就可以了。
- 網友回復:
我策略是tick每往上一跳時都掛買1價買,5秒沒成交就撤掛單。假如這筆掛單成交就掛賣1價+4個點平今。掛單平今的我會一直熬,但每個tick上跳我都會買