多系统交易时,使用TB面临的多空同时开仓的问题。

Discussion in '开拓者期货自动交易平台' started by wyrainer, Apr 17, 2009.

  1. 我在使用多个交易系统进行交易,有时候,两个系统会给出相反的操作信号,一个的信号是做多,一个的信号是做空。
    这个时候,使用TB好像有问题,因为我看TB,Sell和Buy函数,都是先平掉相反的仓位之后再开仓。
    如果是这样的话,无法实现多个系统同时交易。
    或者要求一个系统,在另外一个系统已经持仓的同时,不能产生相反的信号
     
  2. 已经搞定了,另外一个函数:A_SendOrder,可以任意发送交易单。但是这个函数有一定的危险性,因为这个函数不受TB系统设置的影响,比如是否可以连续开仓。我把高人给我的恢复转帖一下吧:
    A_SendOrder
    说明 针对当前公式应用的帐户、商品发送委托单。
    语法 Bool A_SendOrder(Integer BuyOrSell,Integer EntryOrExit,Numeric fLot,Numeric fPrice)
    参数 BuyOrSell 发送委托单的买卖类型,取值为Enum_Buy或Enum_Sell之一;
    EntryOrExit 发送委托单的开平仓类型,取值为Enum_Entry,Enum_Exit,Enum_ExitToday之一;
    fLot 委托单的交易数量;
    fPrice 委托单的交易价格。
    备注 针对当前公式应用的帐户、商品发送委托单,发送成功返回True,发送失败返回False。
    该函数可针对叠加商品进行处理,可用Data1.A_SendOrder(...)进行调用。
    该函数直接发单,不经过任何确认,并会在每次公式计算时发送,一般需要配合着仓位头寸进行条件处理,在不清楚运行机制的情况下,请慎用。
    示例 If (A_BuyPosition()>0 && A_GetOpenOrderCount()==0)
    {
    A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition(),Q_BidPrice());
    ...
    }


    以上内容摘自TB帮助文件.
     
  3. 如果是一般应用的话,可以开两个图表。