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

版主!为啥此程序会乱发单? [开拓者 TB]

  • 咨询内容: Params
    Numeric offset(6)        ;        //此处添加参数
    Numeric a(5);
    Numeric b(10);
    Numeric e(20);

    Numeric f(80);


    Vars
    Numeric aa;
    Numeric bb;
    Numeric cc;
    Numeric dd;

    Numeric totalequity;
    Numeric turtleunits;
            //此处添加变量

    Begin
    if(date!=date[1] && high==low)
    Return;
    aa=Average(close,a);
    bb=Average(close,b);
    cc=average(close,e);
    dd=Average(close,f);
    TotalEquity = Portfolio_CurrentCapital() + Portfolio_UsedMargin();   //账户最新资产 = 按当前Bar开盘价计算的可用资金 + 持仓保证金
    TurtleUnits=(TotalEquity/(MarginRatio*ContractUnit()*BigPointValue()*Close))*3/10;
    TurtleUnits = IntPart(TurtleUnits); // 对小数取整
    if(BarStatus==2 || GetGlobalVar(0)==InvalidNumeric)
    SetGlobalVar(0,0);

    if(A_BuyPosition==0 && A_SellPosition==0 && GetGlobalVar(0)==0)
    {
    if(aa>dd && bb>dd &&  cc>dd)
    {

    A_SendOrder(Enum_Buy,Enum_Entry,TurtleUnits,Q_BidPrice+offset*MinMove*PriceScale);

    }
    Else if(aa<dd && bb<dd && cc<dd)
    {

    A_SendOrder(Enum_Sell,Enum_Entry,TurtleUnits,Q_BidPrice-offset*MinMove*PriceScale);
    }
    }
    if(A_SellPosition>0 && GetGlobalVar(0)==0)
    {
    if(aa>dd && bb>dd &&  cc>dd)
    {
    A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition,Q_BidPrice+offset*MinMove*PriceScale);
    A_SendOrder(Enum_Buy,Enum_Entry,TurtleUnits,Q_BidPrice+offset*MinMove*PriceScale);

    }
    }
    if(A_BuyPosition>0 && GetGlobalVar(0)==0)
    {
    if(aa<dd && bb<dd && cc<dd)
    {
    A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition,Q_BidPrice-offset*MinMove*PriceScale);
    A_SendOrder(Enum_Sell,Enum_Entry,TurtleUnits,Q_BidPrice-offset*MinMove*PriceScale);
    }
    }
    End

     

     来源:CXH99.COM

  • TB技术人员: A函数的用法与buy\sell等图表信号函数的用法不同。。是需要自己用代码来控制下单 次数的 。。
    一般是使用全局变量进行控制,避免对一个条件多次满足后的重复发单 。
    上述代码中,全局变量的初始化并不合理,且在执行委托后并没有及时将全局变量赋值 改变其值,以达到控制下单的目的。
    建议还是系统学习后再来使用A函数。

     

  • TB客服: 谢谢!

     

  • 网友回复: 本帖最后由 qsb588986 于 2017-7-5 05:26 编辑

    版主!  这样可以吧!
    Params
    Numeric offset(6)        ;        //此处添加参数
    Numeric a(5);
    Numeric b(10);
    Numeric e(20);

    Numeric f(80);


    Vars
    Numeric aa;
    Numeric bb;
    Numeric cc;
    Numeric dd;

    Numeric totalequity;
    Numeric turtleunits;
            //此处添加变量

    Begin
    if(date!=date[1] && high==low)
    Return;
    aa=Average(close,a);
    bb=Average(close,b);
    cc=average(close,e);
    dd=Average(close,f);
    TotalEquity = Portfolio_CurrentCapital() + Portfolio_UsedMargin();   //账户最新资产 = 按当前Bar开盘价计算的可用资金 + 持仓保证金
    TurtleUnits=(TotalEquity/(MarginRatio*ContractUnit()*BigPointValue()*Close))*3/10;
    TurtleUnits = IntPart(TurtleUnits); // 对小数取整
    if(BarStatus==0 || GetGlobalVar(0)==InvalidNumeric)
    SetGlobalVar(0,0);
    setglobalvar(1,1);
    setglobalvar(2,1);



    if(A_BuyPosition==0 && A_SellPosition==0 && GetGlobalVar(0)==0)
    {
    if(aa>dd && bb>dd &&  cc>dd)
    {

    A_SendOrder(Enum_Buy,Enum_Entry,TurtleUnits,Q_BidPrice+offset*MinMove*PriceScale);
    SetGlobalVar(0,1);
    SetGlobalVar(2,1);
    }
    Else if(aa<dd && bb<dd && cc<dd)
    {

    A_SendOrder(Enum_Sell,Enum_Entry,TurtleUnits,Q_BidPrice-offset*MinMove*PriceScale);
    SetGlobalVar(0,1);
    SetGlobalVar(1,1);
    }
    }
    if(A_SellPosition>0 && GetGlobalVar(1)==1)
    {
    if(aa>dd && bb>dd &&  cc>dd)
    {
    A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition,Q_BidPrice+offset*MinMove*PriceScale);
    A_SendOrder(Enum_Buy,Enum_Entry,TurtleUnits,Q_BidPrice+offset*MinMove*PriceScale);
    SetGlobalVar(1,2);
    SetGlobalVar(2,1);
    }
    }
    if(A_BuyPosition>0 && GetGlobalVar(2)==1)
    {
    if(aa<dd && bb<dd && cc<dd)
    {
    A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition,Q_BidPrice-offset*MinMove*PriceScale);
    A_SendOrder(Enum_Sell,Enum_Entry,TurtleUnits,Q_BidPrice-offset*MinMove*PriceScale);
    SetGlobalVar(2,2);
    SetGlobalVar(1,1);
    }
    }
    End

 

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

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


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

相关文章

    没有相关内容