开拓者期货期权程序化系统交易论坛
标题:
为什么使用了If(!CallAuctionFilter()) return;还会在开盘前半小时就发单?
[打印本页]
作者:
gfqh882011127
时间:
2015-11-19 20:30:19
标题:
为什么使用了If(!CallAuctionFilter()) return;还会在开盘前半小时就发单?
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
作者:
bcdsee
时间:
2015-11-22 12:26:13
你仔细看CallAuctionFilter函数里面的代码,没有分钟周期,而且 9点以前也是没有过滤的,我以前也遇到这个问题,后面是自己在CallAuctionFilter函数的基础上重新修改了下才能用,加上9点以前的判断
作者:
zzlong99
时间:
2015-12-20 22:15:46
这个函数不好用的。
建议用个更简单有效的:
if(marketposition==0 and h!=l)
......
作者:
zzlong99
时间:
2015-12-20 22:17:55
你这用A函数发单的,应该也可以用h!=l这个条件判断是否是开盘竞价。当然如果是涨停和跌停也会被过滤
欢迎光临 开拓者期货期权程序化系统交易论坛 (http://bbs.tb18.net/)
Powered by Discuz! X2