VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 61
声望: 2

2020-08-21 14:32:50.296518 dt.cffex:14:28:41: 6487.6, pos is 1, inv ['6594.91', '6674.24'], close 6599.01, signal hold, oper hold
2020-08-21 14:32:50.296518 dt.cffex:14:28:42: 6487.4, pos is 1, inv ['6594.91', '6674.24'], close 6599.01, signal hold, oper hold
2020-08-21 14:32:50.296518 dt.cffex:14:28:42: 6488.4, pos is 1, inv ['6594.91', '6674.24'], close 6599.01, signal hold, oper hold
2020-08-21 14:32:50.296518 dt.cffex:14:28:43: 6487.6, pos is 1, inv ['6594.91', '6674.24'], close 6599.01, signal hold, oper hold
2020-08-21 14:32:50.296518 dt.cffex:14:28:43: 6487.6, pos is 1, inv ['6594.91', '6674.24'], close 6599.01, signal hold, oper hold
2020-08-21 14:32:50.296518为系统时间,dt.cffex:14:28:41为tick时间,这里假如触发条件满足,就会同时下五次指令,这种情况该如何解决呢

Member
avatar
加入于:
帖子: 4696
声望: 287

不清楚你的交易逻辑,是同一个品种跑了五个不同的策略吗?还是一个策略收到了五条一样的tick?
如果是五个不同的策略,那就都分别满足了改策略的条件,如果想限制的话,可能需要自己对策略做些调整吧

Member
avatar
加入于:
帖子: 61
声望: 2

xiaohe wrote:

不清楚你的交易逻辑,是同一个品种跑了五个不同的策略吗?还是一个策略收到了五条一样的tick?
如果是五个不同的策略,那就都分别满足了改策略的条件,如果想限制的话,可能需要自己对策略做些调整吧

不是同一个品种跑了五个不同策略,是一个策略同时收到了 五条不一样的TICK,但是均触发的买入条件,导致直接下了五次单

Member
avatar
加入于:
帖子: 61
声望: 2

吉祥 wrote:

xiaohe wrote:

不清楚你的交易逻辑,是同一个品种跑了五个不同的策略吗?还是一个策略收到了五条一样的tick?
如果是五个不同的策略,那就都分别满足了改策略的条件,如果想限制的话,可能需要自己对策略做些调整吧

不是同一个品种跑了五个不同策略,是一个策略同时收到了 五条不一样的TICK,但是均触发的买入条件,导致直接下了五次单

也就是说 正常情况下,CTP行情服务器每0.5秒 给我推送一次行情(tick数据),运行on_tick函数里的判断(根据推送进来的tick数据) 并交易。
但是如果 CTP行情服务器出现堵塞,突然一下载推送了5个tick数据,实盘就交易了五次,这个怎么解决?

Member
avatar
加入于:
帖子: 4696
声望: 287

可参考https://www.vnpy.com/forum/topic/1830-jin-tian-vnpychu-cuo-liao-tong-yi-barnei-cheng-jiao-liang-ci

Member
avatar
加入于:
帖子: 21
声望: 0

xiaohe wrote:

不清楚你的交易逻辑,是同一个品种跑了五个不同的策略吗?还是一个策略收到了五条一样的tick?
如果是五个不同的策略,那就都分别满足了改策略的条件,如果想限制的话,可能需要自己对策略做些调整吧

您好,请问如果时一个品种跑多个不同策略出现了这种情况该如何处理呢?好像最后发单的时候只按品种做了区分,strategy.strategy_name并没有用到,一个策略发单,其他策略也跟着发同样的单。

Member
avatar
加入于:
帖子: 337
声望: 27

一袋米公司 wrote:

xiaohe wrote:

不清楚你的交易逻辑,是同一个品种跑了五个不同的策略吗?还是一个策略收到了五条一样的tick?
如果是五个不同的策略,那就都分别满足了改策略的条件,如果想限制的话,可能需要自己对策略做些调整吧

您好,请问如果时一个品种跑多个不同策略出现了这种情况该如何处理呢?好像最后发单的时候只按品种做了区分,strategy.strategy_name并没有用到,一个策略发单,其他策略也跟着发同样的单。
请问用的是哪个模块,CTA策略模块发单是需要策略名的,请检查一下委托的reference有写策略是从哪里发出来的。

Member
avatar
加入于:
帖子: 21
声望: 0

青青子荆 wrote:

一袋米公司 wrote:

xiaohe wrote:

不清楚你的交易逻辑,是同一个品种跑了五个不同的策略吗?还是一个策略收到了五条一样的tick?
如果是五个不同的策略,那就都分别满足了改策略的条件,如果想限制的话,可能需要自己对策略做些调整吧

您好,请问如果时一个品种跑多个不同策略出现了这种情况该如何处理呢?好像最后发单的时候只按品种做了区分,strategy.strategy_name并没有用到,一个策略发单,其他策略也跟着发同样的单。
请问用的是哪个模块,CTA策略模块发单是需要策略名的,请检查一下委托的reference有写策略是从哪里发出来的。
嗯嗯,是您说的这样,好的,我按照这个思路修改一下,谢谢!我使用的是CTA策略模块

Member
avatar
加入于:
帖子: 93
声望: 14

你是把交易逻辑写进了on_tick,每一个tick都会驱动一次逻辑。当然要多次交易了

你只要设置一个变量,变量默认是0,然后交易完成以后,把变量设置成1,
交易的逻辑中检查变量是不是0,如果不是0就不交易。
然后过一段时间把变量回复成0,例如新的5分钟开线形成以后。

这是一个简单问题,要自己想办法。

Member
avatar
加入于:
帖子: 9
声望: 1

一样遇到该问题,我是下单里逻辑是里有self.pos判断的,满足策略条件,并且如果空仓,就下单,第一次下单后,没有来的及改变pos的值,等下一个tick过来后,就重复下单:,解决该问题就是自己创建一个变量,来存pos值得,比如:new_pos ,下单前,先维护这个变量,等下个tick进来后,就用这个变量处理逻辑。

Member
avatar
加入于:
帖子: 8
声望: 1

winsoning wrote:

一样遇到该问题,我是下单里逻辑是里有self.pos判断的,满足策略条件,并且如果空仓,就下单,第一次下单后,没有来的及改变pos的值,等下一个tick过来后,就重复下单:,解决该问题就是自己创建一个变量,来存pos值得,比如:new_pos ,下单前,先维护这个变量,等下个tick进来后,就用这个变量处理逻辑。
大神能给个参考代码吗?万分感谢🙏

Member
avatar
加入于:
帖子: 2
声望: 0

最近也遇到同样的问题:虽然已经采用了 vt_orderids = self.buy(...) ,if self.vt_orderids:,但在盘口在剧烈波动时,还是出现了原计划开一手,结果成交了多于一手的现象。

Member
avatar
加入于:
帖子: 54
声望: 0

半路出家123 wrote:

最近也遇到同样的问题:虽然已经采用了 vt_orderids = self.buy(...) ,if self.vt_orderids:,但在盘口在剧烈波动时,还是出现了原计划开一手,结果成交了多于一手的现象。

加个状态机,思路是,在on_tick中发单时候,给发单条件加个值判断,如果已发,就在发单前将判断变量变成假,然后在order中,如果收到推托成功,就直接再把判断变量恢复成真。就这样简单。

Member
avatar
加入于:
帖子: 2
声望: 0

天涯地角 wrote:

半路出家123 wrote:

最近也遇到同样的问题:虽然已经采用了 vt_orderids = self.buy(...) ,if self.vt_orderids:,但在盘口在剧烈波动时,还是出现了原计划开一手,结果成交了多于一手的现象。

加个状态机,思路是,在on_tick中发单时候,给发单条件加个值判断,如果已发,就在发单前将判断变量变成假,然后在order中,如果收到推托成功,就直接再把判断变量恢复成真。就这样简单。

@天涯地角,谢谢回复,我测试下。

© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】