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

求解,关于多公式组合策略在数据源上的运算 [开拓者 TB]

  • 咨询内容: 我在TBQ的帮助文档里看到“为了使用的方便,以及降低使用门槛, TB 公式系统支持将现有的多个公式应用按照一定的顺序组合为一个交易策略
    交易策略执行时按照公式设置的顺序依次串行执行,公式间持仓共享,公式信号单独显示。
    相当于把每个公式看成是一个函数,在交易策略内依次执行各个函数,整个策略共享一个 MarketPosition。”

    然后我在后面例子中看到,把5个公式加载到一个策略单元,也没有特别的设置。我看每个公式的买入信号都会判断marketposition,我就有点疑问,既然共享marketposition,那第一个公式如果买入了,第二个公式就不会买入了,如果达到例子里说的3个公式中的2个公式买入之后再停止呢,请帮忙给解释一下,谢谢


     

     来源:CXH99.COM

  • TB技术人员: 第一个公式买入后,后面的公式是否继续交易,取决于后面公式开仓条件里写法。
    如果第二个公式的开仓条件并没有要求限制marketposition必须等于0的,那么就条件满足就要可以继续开仓。类似于加仓。
    而第三个人公式的开仓条件里做marketposition==0的限制的话,则不会开仓了。

     

  • TB客服: 公式应用 1: Average_Buy
    Params
    Numeric percent(0.002); //大于日均价幅度
    Vars
    Begin
    If(MarketPosition<>1 && (Close[1] > Q_AvgPrice *(1 + percent)))
    {
    Buy(1,Open);
    }
    End
    公式应用 2: Dual_Buy
    Params
    Numeric FastLength(5);
    Numeric SlowLength(20);
    Vars
    NumericSeries AvgValue1;
    NumericSeries AvgValue2;
    Begin
    AvgValue1 = AverageFC(Close,FastLength);
    AvgValue2 = AverageFC(Close,SlowLength);
    PlotNumeric("MA1",AvgValue1);
    PlotNumeric("MA2",AvgValue2);
    // 集合竞价和小节休息过滤
    If(!CallAuctionFilter()) Return;
    If(MarketPosition <>1 && AvgValue1[1] > AvgValue2[1])
    {
    Buy(1,Open);
    }
    End
    公式应用 3: High_Buy
    Vars
    Numeric MinPoint; // 一个最小变动单位,也就是一跳
    Numeric MyEntryPrice; // 开仓价格,例中为开仓均价,可设置为某次入场价
    Numeric AddSet(2); // 大于最高价跳数
    Begin
    If(!CallAuctionFilter()) Return;
    MinPoint = MinMove*PriceScale;
    If(MarketPosition<>1 && (Close > Q_High + AddSet*MinPoint))
    {
    Buy(1,Open);
    }
    End
    公式应用 4: Average_Sell
    Params474
    Numeric percent(0.01); //小于日均价幅度
    Vars
    Begin
    If(!CallAuctionFilter()) Return;
    If(MarketPosition==1 && (Close < Q_AvgPrice *(1 - percent)))
    {
    Sell(1,Open);
    }
    End
    公式应用 5: Dual_Sell
    Params
    Numeric FastLength(5);
    Numeric SlowLength(20);
    Vars
    NumericSeries AvgValue1;
    NumericSeries AvgValue2;
    Begin
    AvgValue1 = AverageFC(Close,FastLength);
    AvgValue2 = AverageFC(Close,SlowLength);
    PlotNumeric("MA1",AvgValue1);
    PlotNumeric("MA2",AvgValue2);
    // 集合竞价和小节休息过滤
    If(!CallAuctionFilter()) Return;475
    If(MarketPosition == 1 && AvgValue1[1] < AvgValue2[1])
    {
    Sell(1,Open);
    }
    End

    这是例子的5个公式,例子里说“上面 3 个开仓公式,任何 2 个先到达开仓条件,则由于仓位达到最大头寸 2,另外一个开仓公式将不会执行。上面任何 1 个平仓公式达到平仓条件平掉所有的仓位,则另外一个平仓公式不会执行。”,说只要按顺序加载这5个公式,就可以达到上面的效果,我不太理解如何实现目的的

     

  • 网友回复: 本帖最后由 小米 于 2019-10-22 16:08 编辑
    baggiobatistuta 发表于 2019-10-21 15:15
    公式应用 1: Average_Buy
    Params
    Numeric percent(0.002); //大于日均价幅度


    这段代码说明是有些问题的, 不足以参考 。。
    先不要看这个说明,后面会更新相关说明文档的。

    可以先看软件里--TB量化学院--TBL语言--公式运行机制--多公式组合策略在数据源上的运算。这里面的内容说明与代码是正确的。

 

有思路,想编写各种指标公式,交易模型,选股公式,还原公式的朋友

可联系技术人员 QQ: 262069696  点击在线交流或微信号:cxh99cxh99  进行 有偿收费 编写!

怎么收费,代编流程等详情请点击阅读!

(注:由于人数限制,QQ或微信请选择方便的一个联系我们就行,加好友时请简单备注下您的需求,否则无法通过。谢谢您!)


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

相关文章

    没有相关内容