(出处: 极星论坛)
极星程序化交易系统提供两种交易模式供用户灵活选择。策略交易模式指的是一种虚拟交易模式,对应的是策略账户;订单交易对应的是实际账户。
策略交易模式是按理论方式计算出持仓和资金情况,若策略下单时使用的价格比较苛刻, 会导致账户的真实持仓和策略的理论持仓出现不一致的情况,称之为仓差。
这是说由于行情变动很快或者其他原因,策略发出委托指令,但实际账户没有成交, 此时策略还是会认为已经发出委托指令,不管事实上有没有成交。
出现仓差后可以使用系统提供的“追单助手”或“持仓一键同步”等辅助成交的手段来将理论持仓和账户持仓调整成为一致的状态。
用户也可以使用下文中的“订单交易”模式,自己编写追单及持仓同步策略来保持策略持仓和账户真实持仓保持一致。
1.策略交易: 主要对应的是函数列表中的策略交易函数,策略状态函数和策略性能函数。 用户通过Buy,Sell,SellShort,BuyToCover等策略交易函数进行开仓和平仓,通过CurrentContracts等 策略状态函数 和Available等 策略性能函数 查看当前策略的持仓和资金状态。 用户一旦调用策略交易函数后,策略持仓和策略资金会立刻发生相应改变,不需要考虑真实订单是否已经成交等很多复杂的逻辑处理。 策略的执行也不会因为订单没有成交等因素导致执行结果与模拟阶段执行结果不一致。 策略交易模式非常适合趋势型交易策略等对滑点要求不太严格的策略选用。
2.订单交易: 主要对应的是函数列表中的账户函数。 订单交易指直接通过交易通道发送订单的交易方式,使用账户函数中的 A_SendOrder 函数来进行发单、撤单,使用 A_BuyPosition 等函数来查询账户的真实持仓, 使用 A_Avaliable 等函数查询账户资金,使用 A_FirstOrderNo , A_NextOrderNo 遍历订单,使用 A_OrderStatus 等函数查询订单状态、订单下单量、成交量等信息。订单交易不会影响到策略交易的执行。
也就是说,使用 A_SendOrder 函数发出的订单不会影响 CurrentContracts 等策略状态函数、策略性能函数的返回值。 订单交易模式的优势在于可以精确得知订单的状态,并及时进行撤单、追单等操作,是高频交易策略得以实现的基础。
使用订单交易模式时,经常要将策略的触发机制设置为基于事件的触发方式。 以便第一时间对订单的变化采取相应的措施。
在您没有充分了解这两种交易模式的原理之前,请不要将两种交易模式在同一策略中进行混用。这样可能会导致您的策略发单及持仓状态脱离您的预期。同样道理,如果您能够充分发挥这两种模式各自 的优势,让这两种模式编写的策略相互协调,那将会达到良好的交易预期。
一种常见的并行模式是以策略交易为基础的策略进行交易时机的判断,以订单交易为基础的策略进行个性化的追单、撤单操作,以保证你的账户持仓与理论持仓保持一致。
|