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

首先感谢下平台提供的学习机会,不厌其烦答疑,今天实现了实盘接入成交了非常优秀的两单,今天实盘和回测遇到了下面的问题,求教解决方法
description
如上图,short1卖出,后面两个k线命名为k1,k2,k1高点设置了cover stop,k2开盘加仓,但k2_high_price触发了空头止损单cover (abs(self.pos)),会留下k2加仓单没有平仓
问题:1.怎么才能实现在触发k1_high_price时候完全平仓?
2.发现short1上根k线已经满足入场条件,sell @bar.close 限价单,只能等到short1 当根k线开盘价成交,如何实现在前一根满足条件k线收盘立即成交?如果合成k线时候提前几秒
收,是否就解决了当根k线成交

Member
avatar
加入于:
帖子: 4622
声望: 284
  1. 你是不是用了锁仓模式,如果选择了锁仓模式,为了避免平今惩罚,今天开了仓之后不能反向平仓,所以会通过反向开仓来平仓(锁仓模式里如果你今天开过仓了,就会默认不能平仓);
  2. vnpy为了避免未来函数,都是上根K线走完了才发单的
Member
avatar
加入于:
帖子: 104
声望: 5

如下图,k1满足空头入场条件,要等到k2开盘入场,问题:
1.那么到k2这根k线,intra_trade_high 是k1的高点,还是k1前面一根的高点?

  1. k2只有走完了,才能挂出止损单,在k2时间内,是没有挂出止损的?
    description
    移动止损思路如下:入场后止损挂在上根k线最高点,高点不断下移,移动止损不断下移
    if pos = 0:
    intra_trade_high = bar.high_price
    if singal_short:
    short(bar.close_price)
    if pos <0:
    cover(intra_trade_high,pos)
    intra_trade_high = min(intra_trade_high,bar.high_price)
    这么写法,实盘环境中,有时候止损在前一根k线高点,有时候止损又在前两根k线高点
    description
    图2中,k0符合空头入场条件,k1开盘入场,按照上述移动止损,k2高点超过上根k高点,理论上应该止损了,却没有;
    k5的止损应该是k4高点,实际又变成在k3高点止损了
Member
avatar
加入于:
帖子: 4622
声望: 284

intra_trade_high是持仓周期内的最高点,可参考微信公众号里CTA策略

Member
avatar
加入于:
帖子: 104
声望: 5

测试了下,在仓位为0时候,满足入场条件,发出买单限价单,入场是滞后一根的;如果止损单设置在仓位大于0条件里面,那么入场那根k线是没有带止损单的,只能等到k线走完,新k线出来才挂出止损单

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

沪公网安备 31011502017034号

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