vn.py量化社区
By Traders, For Traders.
Member
avatar
加入于:
帖子: 12
声望: 1

不管你下怎么单 最后是调用send_order 去执行 相应的操作
发送委托
send_order(
Direction #多,空,净
Offset #开,平,平今,平昨
price #什么价格去成交
volume #相应的数量
stop # (1)=False 限价单(固定价格) (2)=True 停止单 (设置为比现在价格高或者地 到达了主动市价单去尽量成交)
lock =False )
以上注解 应该就很清楚了
一直没有很好的理解 停止单 所以跟踪代码去看看
一路跟踪 到
engine.py
CtaEngine
self.send_server_order
还是没怎么看懂,没找到最终执行的下单动作

提问下 关于停止单
如目前市场价格是 100元 下达的停止单 是101元数量是10 和99元 数量是10
一种情况往上涨 触发了停止单 101元 ( 即涨到了101元 或者101元以上)
**

问1

: 这个时候是本地程序判断和触发主动 去购买?还是触发之前已经发到交易所 交易所去执行?

问2

**: 如若是本地程序去触发,那到达了主动市价单去尽量成交?是不是直接下单按照现在的市价的卖单 的去买,直到买完的要求买的数量,
如果上方挂单
200元 数量1
190元 数量1
180元 数量1
170元 数量1
160元 数量1
150元 数量1
130元 数量1
120元 数量1
110元 数量1
比如上方卖单远远没我停止单多,买的话很可能买上天,买数量10 的话 是不是直接买到了200(数字货币的一些山寨币)
有没有那个最高价的限制 ,比如 现价单的基础上往上多少百分比或者价格 就停止购买

**

问3

**:还是 触发了停止单 就会 回调 on_stop_order 通知到达了相应的价格 让二开的程序员 自己去执行买卖下单

最后问下

on_stop_order 是哪里回调,传递消息过来的 没在相应的Gateway 找到
只再 register_event 找到注册的地方
self.event_engine.register(EVENT_ORDER, self.process_order_event)
的 process_order_event里面
找到
if order.type == OrderType.STOP:
so = StopOrder(
vt_symbol=order.vt_symbol,
direction=order.direction,
offset=order.offset,
price=order.price,
volume=order.volume,
stop_orderid=order.vt_orderid,
strategy_name=strategy.strategy_name,
status=STOP_STATUS_MAP[order.status],
vt_orderids=[order.vt_orderid],
)
self.call_strategy_func(strategy, strategy.on_stop_order, so)

不知道相应的 停止单 是那个地方传递到 process_order_event 过来的

Administrator
avatar
加入于:
帖子: 4028
声望: 220
  1. 对于CTP来说是前者,在本地缓存的。对于部分支持服务器停止单的币圈接口是后者
  2. 对的,停止单只能用于流动性比较好的合约,千万不要用于山寨币这种东西
  3. 停止单触发后自动就下单出去了,on_stop_order是停止单状态发生变化后的通知
© 2015-2019 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号-3