楼主: zjm123000888
20588 10

[程序化交易] OpenQuant(SmartQuant)学习总结 [推广有奖]

  • 0关注
  • 4粉丝

高中生

67%

还不是VIP/贵宾

-

威望
0
论坛币
402 个
通用积分
0.8500
学术水平
28 点
热心指数
25 点
信用等级
17 点
经验
555 点
帖子
22
精华
0
在线时间
27 小时
注册时间
2012-3-31
最后登录
2025-6-30

楼主
zjm123000888 发表于 2014-10-16 18:13:09 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
一、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

二维码

扫码加我 拉你入群

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

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

关键词:OpenQuant quant OpenQ smart 学习总结 交易所 false

已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
fantuanxiaot + 5 + 1 + 1 + 1 精彩帖子

总评分: 论坛币 + 5  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

沙发
rzxx123 发表于 2014-10-16 23:17:42
楼主能否把软件共享一下?

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

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

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

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

7
mysl 发表于 2014-12-12 00:21:52
zjm123000888 发表于 2014-11-25 17:31
github  id:  wukan. 不过是2013版3.x的源码。 现在官方都在推2014版本。
openquant本身就是开源的,学习 ...
你说的是这个吗? https://github.com/wukan,里面没有看到有openquant的项目啊,你有fork么,分享下呗,谢了

8
fantuanxiaot 发表于 2015-1-25 12:51:20

9
fantuanxiaot 发表于 2015-2-9 13:31:08

10
hkmonte 发表于 2015-4-18 15:20:17
看来是个好东西,有空看看~~~

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jr
拉您进交流群
GMT+8, 2026-1-10 04:51