為什么使用了If(!CallAuctionFilter()) return;還會在開盤前半小時(shí)就發(fā)單?
作者:開拓者 TB 來源:cxh99.com 發(fā)布時(shí)間:2016年01月21日
- 咨詢內(nèi)容:
Params
Numeric s(4);
Numeric lots(3);
Vars
Numericseries MA;
Begin
If(!CallAuctionFilter()) return;
MA=AverageFC(Close,s);
if(BarStatus==0 || GetGlobalVar(0)==InvalidNumeric)
SetGlobalVar(0,0);
if(MA>MA[1]+0.3)
{If(A_Sellposition==0 && A_BuyPosition==0 && A_GetOpenOrderCount==0 && BarStatus==2 && GetGlobalVar(0)==0)
{A_SendOrder(Enum_Buy,Enum_Entry,lots,Q_AskPrice+3*MinMove*PriceScale);
SetGlobalVar(0,1);
}
If(A_SellPosition>0 && A_GetOpenOrderCount==0 && BarStatus==2 && getglobalvar(0)==0)
{A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition,Q_AskPrice+3*MinMove*PriceScale);
A_SendOrder(Enum_Buy,Enum_Entry,A_SellPosition,Q_AskPrice+3*MinMove*PriceScale);
SetGlobalVar(0,1);
}}
if(MA<MA[1]-0.3)
{If(A_Sellposition==0 && A_BuyPosition==0 && A_GetOpenOrderCount==0 && BarStatus==2 && GetGlobalVar(0)==0)
{A_SendOrder(Enum_Sell,Enum_Entry,lots,Q_BidPrice-3*MinMove*PriceScale);
SetGlobalVar(0,1);
}
If(A_BuyPosition>0 && A_GetOpenOrderCount==0 && BarStatus==2 && getglobalvar(0)==0)
{A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition,Q_BidPrice-3*MinMove*PriceScale);
A_SendOrder(Enum_sell,Enum_Entry,A_Buyposition,Q_BidPrice-3*MinMove*PriceScale);
SetGlobalVar(0,1);
}
}
End
- TB技術(shù)人員:
你仔細(xì)看CallAuctionFilter函數(shù)里面的代碼,沒有分鐘周期,而且 9點(diǎn)以前也是沒有過濾的,我以前也遇到這個(gè)問題,后面是自己在CallAuctionFilter函數(shù)的基礎(chǔ)上重新修改了下才能用,加上9點(diǎn)以前的判斷
- TB客服:
這個(gè)函數(shù)不好用的。
建議用個(gè)更簡單有效的:
if(marketposition==0 and h!=l)
......
- 網(wǎng)友回復(fù):
你這用A函數(shù)發(fā)單的,應(yīng)該也可以用h!=l這個(gè)條件判斷是否是開盤競價(jià)。當(dāng)然如果是漲停和跌停也會被過濾