全部版块 我的主页
论坛 金融投资论坛 六区 金融学(理论版) 量化投资
20549 10
2014-10-16
一、SetStop调试
1、SetStop是止损指标,由OpenQuant自身维护,相当于告诉OpenQuant我应该在什么价位或者什么时间止损,
      不需要写代码判断,并没有挂单,而是达到触发指标时,直接触发在onStopExcuted中的动作。
     而BuyStop和SellStop则是直接报限价单到交易所,由交易所维护,触发时,由交易所自动转为市价单成交。

2、 使用SetStop必须要有持仓,若在PositionChanged中SetStop,则不同的单有不同的止损价。

3、 SetStop需要正确使用,他也许会在持续的上涨行情中触发。(若要避免,TraceOnBar = false即可。必然tick已经到了高位,但最终current位又回到低位)。
       当TraceOnBar = true时,fcurrPrice = Bar.Low(在OnBar中不断更新,即一个bar走完后。OnBarOpen中不作更新),
       而止损价却是fstopPrice = Bars.Highest - L(即,自下单之日起,一段时间内的最高价为base),因此在一个急拉行情中,即大阳线中多单也许会被止损。

4、当TraceOnBar, TraceOnQuote, TraceOnTrade均为true时,每个tick均会更新fcurrPrice,但只要OnBar一触发,则立即更新到bar.Low。

5、 SetSopt的止损价总是按照当前行情来更新,而非入场价。

调试总结: SetStop的trailing Type是始终在追踪最高价位,在最高价位下浮多少点时止损。属于单边趋势上涨行情时,巩固当前部分盈利,追求更大盈利的利器。

二、订单管理
1、Order被创建时,状态为IsPendingNew
2、在回溯中,当Order被Send将依次调用:(因为回溯中Send后就自动成交)
       开仓市价单:OnNewOrder -> OnOrderStatusChanged -> OnOrderStatusChanged -> OnPositionOpened
                -> OnPositionChanged -> OnOrderFilled -> OnOrderDone.
    (此处2次调用OnOrderStatusChanged是因为每一笔entryBuy随之都会有止损和止盈两单)
    (此时状态为IsDone, IsFilled,即在回溯中的OnBar下单,Order立即成交,而非实盘中的在第二天第一个      trade到来时下单成交)
     普通市价单:OnNewOrder -> OnOrderStatusChanged -> OnOrderStatusChanged
                -> OnPositionChanged -> OnOrderFilled -> OnOrderDone.
     普通限价单:OnNewOrder -> OnOrderStatusChanged
    (普通限价单在Send后,只要还未达到目标较为没有转为市价单,状态为IsNew。
      当普通限价单转为市价单触发后,首先调用OnOrderStatusChanged -> OnPositionChanged)
          
3、OCA取消订单:
    OCA的cancel模式,顾名思义,One Cancel All,当某一个限价单fill掉后,openquant会自动cancel屌具有相同OCAGroup的限价单,(OnOrderStatusChanged -> OnOrderCancelled)* N:N表示具有相同OCAGroup属性的限价单。
       
4、SetStop订单管理:
    因为每一单都应当有止盈+止损(止盈可以是目标价格止盈,也可以是追踪止损)
    若是限价单止盈或止损,每一单(打到止盈或止损出场)成交后,另一具有相同OCAGroup的限价单将自动Cancel。
    若是追踪止损,则在触发止损条件后调用OnStopExecuted,动作写在里面,若采用市价成交,无需cancel。
<转自论坛:
在OpenQuant中,Order的状态(Status)共有10种(参考API文档),分别为PendingNew(0),New(1),PartiallyFille(2),Filled(3),PendingCancel(4),Cancelled(5),Expired(6),  PendingReplace(7), Replaced(8), Rejected(9)。无论何种交易情况,都从PendingNew状态开始,最终Order结束时都会触发OnOrderDone事件。
      由命名规律,PendingNew,PendingCancel,PendingReplace的状态之后都会有2种可能,成功或Rejected。由此触发事件分别为OnNewOrder,OnOrderCancelled,OnOrderReplaced或OnOrderRejected,OnOrderCancelRejected,OnOrderReplaceRejected。
      交易所同意报单之后,在交易过程中,若一次性直接满足了报单手数,直接进入Filled状态,触发OnOrderFilled事件;若只满足了部分会先进入PartiallyFilled状态,触发OnOrderPartiallyFilled事件。此时,状态发生了改变(由New变为PartiallyFilled或Filled)。会触发OnOrderStatusChanged事件。(注:变为PartiallyFilled状态,会先触发OnOrderPartiallyFilled ,再触发OnOrderStatusChanged;变为Filled状态会先触发OnOrderStatusChanged再触发OnOrderFilled。)
      若直到合约到期报单未成交,会触发OnOrderExpired事件。
      一次正常的交易触发的事件先后为OnNewOrder,OnOrderPartiallyFilled,OnOrderFilled,OnOrderDone。
      OnOrderStatusChanged只在状态变为PartiallyFilled,Filled,Cancelled,Expired,Replaced, Rejected时触发。
来源: <http://www.smartquant.cn/forum/forum.php?mod=viewthread&tid=12>>

三、仓位管理
1、在持仓条件下,仓位的买卖调用OnPositionChanged
(Position.Amount,即持仓,发生变化后才调用OnPositionChanged)
2、若最后一笔交易后空仓,即 OnPositionChanged 后还会再调用OnPositionClosed

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-10-16 23:17:42
楼主能否把软件共享一下?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-10-17 10:53:07
rzxx123 发表于 2014-10-16 23:17
楼主能否把软件共享一下?
直接google搜OpenQuant,这东西是开源的,C#源码可以全部搞到。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-10-17 10:53:34
rzxx123 发表于 2014-10-16 23:17
楼主能否把软件共享一下?
直接google搜OpenQuant,这东西是开源的,C#源码可以全部搞到。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-11-22 23:57:36
zjm123000888 发表于 2014-10-17 10:53
直接google搜OpenQuant,这东西是开源的,C#源码可以全部搞到。
不是开源的吧,是商业软件啊。lz难道能搞到源码?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-11-25 17:31:29
mysl 发表于 2014-11-22 23:57
不是开源的吧,是商业软件啊。lz难道能搞到源码?
github  id:  wukan. 不过是2013版3.x的源码。 现在官方都在推2014版本。
openquant本身就是开源的,学习的话直接看源码就好,如果要使用的话,
建议还是买正版~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群