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

首先感谢下平台提供的学习机会,不厌其烦答疑,今天实现了实盘接入成交了非常优秀的两单,今天实盘和回测遇到了下面的问题,求教解决方法
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
加入于:
帖子: 936
声望: 47
  1. 你是不是用了锁仓模式,如果选择了锁仓模式,为了避免平今惩罚,今天开了仓之后不能反向平仓,所以会通过反向开仓来平仓(锁仓模式里如果你今天开过仓了,就会默认不能平仓);
  2. vnpy为了避免未来函数,都是上根K线走完了才发单的
Member
avatar
加入于:
帖子: 71
声望: 1

如下图,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
加入于:
帖子: 936
声望: 47

intra_trade_high是持仓周期内的最高点,具体可参考微信公众号vnpy-community里CTA策略 -22课

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

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

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