您现在的位置:程序化交易>> 期货公式>> 交易开拓者(TB)>> 开拓者知识>>正文内容

为什么使用了If(!CallAuctionFilter()) return;还会在开盘前半小时就发单? [开拓者 TB]

  • 咨询内容: 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技术人员: 你仔细看CallAuctionFilter函数里面的代码,没有分钟周期,而且 9点以前也是没有过滤的,我以前也遇到这个问题,后面是自己在CallAuctionFilter函数的基础上重新修改了下才能用,加上9点以前的判断

     

  • TB客服: 这个函数不好用的。
    建议用个更简单有效的:
    if(marketposition==0 and h!=l)  
    ......

     

  • 网友回复: 你这用A函数发单的,应该也可以用h!=l这个条件判断是否是开盘竞价。当然如果是涨停和跌停也会被过滤

 

有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友

可联系技术人员 QQ: 511411198  点击这里给我发消息进行 有偿 编写!不贵!点击查看价格!


【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容