设为首页收藏本站

 找回密码
 注册
查看: 2484|回复: 3
打印 上一主题 下一主题

请教内置的布林强盗公式是否有造成实盘和回测不一致的bug [复制链接]

Rank: 1

精华
0
UID
133615
积分
20
帖子
12
主题
8
阅读权限
10
注册时间
2013-4-9
最后登录
2015-4-29
跳转到指定楼层
1#
发表于 2015-2-25 14:05:03 |只看该作者 |倒序浏览
本帖最后由 gongzk 于 2015-2-25 14:50 编辑

内置的布林强盗的开仓用的是当前bar的high或者low,那么如果我没理解错的话,实盘中在达成条件的high和low出现前,marketposition一直是0吧?

那么下面这段代码(在开仓后面的),如果在前一个bar平仓然后当前bar又开仓的情况下,是否有可能造成实盘和回测结果不一致呢?
  1. If(MarketPosition == 0)
  2.         {
  3.                 liqDays = liqLength;
  4.         }Else
  5.         {
  6.                 liqDays = liqDays - 1;
  7.                 liqDays = Max(liqDays,10);
  8.         }
  9.         liqPoint = Average(Close,liqDays);
复制代码
实盘,开多,当前的high一直没达到那个条件,那么liqdays会被定义为liqlength;
如果下一个tick的high达到条件了,那么marketposition不是0了,liqdays是liqdays-1,
可是在当前bar上,liqdays之前是liqlength,所以实际是liqlength-1

回测的话,出现开仓条件的那个bar的markposition(在开仓后面)一直不是0
所以liqday一直是liqdays-1
而在我所标红的条件下,liqlength-1不等于 liqdays-1
那么实盘和回测就是否不一致了?


另外我不确定布林强盗原本是否考虑到了我标红的条件,因为在这个条件下,liqpoint并不会像普通开仓那样“初始化”。。

所以是否应该把这段代码放在开仓之前呢?因为在实盘中开仓条件出现的bar上,每一跳进来后执行buy操作前marketposition都被先设为0了;回测中在执行开仓语句前marketpostion也是0

超级版主

TB官方客服

Rank: 10Rank: 10Rank: 10

精华
0
UID
102452
积分
475
帖子
308
主题
11
阅读权限
200
注册时间
2012-3-5
最后登录
2021-3-8
2#
发表于 2015-2-27 09:31:41 |只看该作者
实盘和回测时,成交的统计都会根据BAR时间内是否出现marketposition变化,结果是一致的。当“前一个bar平仓然后当前bar又开仓的情况下”,liqDays 的值来不及对liqLength初始化,那么就会延续前一个的liqDays 的值。

使用道具 举报

Rank: 1

精华
0
UID
133615
积分
20
帖子
12
主题
8
阅读权限
10
注册时间
2013-4-9
最后登录
2015-4-29
3#
发表于 2015-3-9 11:13:43 |只看该作者
tianlan 发表于 2015-2-27 09:31
实盘和回测时,成交的统计都会根据BAR时间内是否出现marketposition变化,结果是一致的。当“前一个bar平仓 ...

不是很明白
是说在实盘中的开仓bar上,就算在触发条件tick进来前liqdays被赋值过
开仓条件达成后,liqdays=liqdays-1中的liqdays-1也会强制用前一bar的liqdays?而不受之前赋值的影响?

另外在“前一bar平仓当前bar又开仓”的情况下,liqlength是否应该初始化才更符合这个策略原本的想法呢?如果不初始化,在这种情况下很容易造成开仓后由于liqpoints过于靠近开仓价格而在两三个bar就平仓。。

使用道具 举报

超级版主

TB官方客服

Rank: 10Rank: 10Rank: 10

精华
0
UID
102452
积分
475
帖子
308
主题
11
阅读权限
200
注册时间
2012-3-5
最后登录
2021-3-8
4#
发表于 2015-3-11 09:21:48 |只看该作者
gongzk 发表于 2015-3-9 11:13
不是很明白
是说在实盘中的开仓bar上,就算在触发条件tick进来前liqdays被赋值过
开仓条件达成后,liqday ...

1、lipdays的值就是你上述的情况。
2、内置代码的思路就是这样的,如果您需要,可以在开仓后,再给lipdays赋值。

使用道具 举报

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

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-13 18:44

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部