设为首页收藏本站

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

回测时,在没有交易指令发出的前提下,MarketPosition被重置 [复制链接]

Rank: 2

精华
0
UID
244161
积分
54
帖子
31
主题
19
阅读权限
30
注册时间
2016-12-5
最后登录
2023-1-25
跳转到指定楼层
1#
发表于 2019-2-24 22:17:32 |只看该作者 |倒序浏览
本帖最后由 leonshi 于 2019-2-24 22:19 编辑

报一个bug,回测时,在没有交易指令发出的前提下,MarketPosition被重置为0。根据我自己的调查,这个bug与均线有关。

1. 先贴上我的实验公式:
  1. Vars
  2.         String tradeLogFile;        //交易日志
  3.         Numeric ma;
  4. Begin

  5.         tradeLogFile = "D:\\tblog\\trade_testissue01_" + Symbol + "_" + Text(CurrentDate) + ".log";        
  6.         
  7.         ma = AverageFC(Close[1], 19);
  8.         
  9.         if(CurrentBar == 0) {
  10.                 Buy(1, Open);
  11.         }
  12.         
  13.         FileAppend(tradeLogFile, "---bar " + Text(CurrentBar) + " MarketPosition:" + Text(MarketPosition));

  14. End
复制代码
2. 再贴上公式打印的部分log:
---bar 0 MarketPosition:1
---bar 1 MarketPosition:1
---bar 2 MarketPosition:1
---bar 3 MarketPosition:1
---bar 4 MarketPosition:1
---bar 5 MarketPosition:1
---bar 6 MarketPosition:1
---bar 7 MarketPosition:1
---bar 8 MarketPosition:1
---bar 9 MarketPosition:1
---bar 10 MarketPosition:1
---bar 11 MarketPosition:1
---bar 12 MarketPosition:1
---bar 13 MarketPosition:1
---bar 14 MarketPosition:1
---bar 15 MarketPosition:1
---bar 16 MarketPosition:1
---bar 17 MarketPosition:1
---bar 18 MarketPosition:0
---bar 19 MarketPosition:0


3. 我对该bug的分析:
从日志可见,第19个bar,也就是均线求值的bar个数,MarketPosition被重置为0.
如果不执行均线求值,则MarketPosition表现正常,不会被重置。
第19个bar之前和之后都可以建仓和平仓。可一旦到达第19个bar仍在持仓,则MarketPoistion自动重置,同时,该图表的投资组合性能测试报告会生成失败,里面不会有任何交易,所有数据都是0.
使用average方法替代AverageFC,仍有此问题。

以下是我的tb版本信息:
程序文件:TradeBlazer.exe
软件名称:交易开拓者平台
版本:  5.5.4.6
更新:  2018-12-28

文件名:BarEx.dll
版本:  5.5.4.6
更新:  2018-12-28

文件名:BaseCtrl.dll
版本:  5.5.0.0
更新:  2018-07-03

文件名:DataFeed.dll
版本:  5.5.4.6
更新:  2018-12-28

文件名:Desktop.dll
版本:  5.5.4.6
更新:  2018-12-28

文件名:ice35.dll
版本:  3.5.1
更新:  2017-05-09

文件名:iceutil35.dll
版本:  3.5.1
更新:  2017-05-09

文件名:KeyFilter.dll
版本:  5.5.4.6
更新:  2018-12-28

文件名:libcurl.dll
版本:  7.30.0
更新:  2014-07-01

文件名:libeay32.dll
版本:  1.0.1e
更新:  2014-07-01

文件名:LowQuote.dll
版本:  5.5.4.6
更新:  2018-12-28

文件名:Master.dll
版本:  5.5.4.6
更新:  2018-12-28

文件名:mfc110.dll
版本:  11.0.60610.1
更新:  2014-07-01

文件名:MsgManage.dll
版本:  5.5.4.6
更新:  2018-12-28

文件名:msvcp110.dll
版本:  11.00.51106.1
更新:  2014-07-01

文件名:msvcr110.dll
版本:  11.00.51106.1
更新:  2014-07-01

文件名:NewChart.dll
版本:  5.5.4.6
更新:  2018-12-28

文件名:OptionQuote.dll
版本:  5.5.4.6
更新:  2018-12-28

文件名:RichCtrl.dll
版本:  5.5.4.6
更新:  2018-12-28

文件名:SciLexer.dll
版本:  3.3.9
更新:  2014-07-01

文件名:ScriptRunner.dll
版本:  5.5.4.6
更新:  2018-12-28

文件名:SectChart.dll
版本:  5.5.4.6
更新:  2018-12-28

文件名:ssleay32.dll
版本:  1.0.1e
更新:  2014-07-01

文件名:SysFuncs.dll
版本:  5.5.4.6
更新:  2018-12-28

文件名:TBCompiler.dll
版本:  5.5.4.6
更新:  2018-12-28

文件名:TBFormula.dll
版本:  5.5.4.6
更新:  2018-12-28

文件名:TBParser.dll
版本:  5.5.4.6
更新:  2018-12-28

文件名:TradeMaster.dll
版本:  5.5.4.6
更新:  2018-12-28

文件名:TradingBox.dll
版本:  5.5.4.6
更新:  2018-12-28


如果确认这是bug,望早日修复此bug,以及请提供替代写法。

谢谢!

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
2#
发表于 2019-2-25 15:51:04 |只看该作者
可在开仓条件上加一限制 ,限制只有currentbar>=maxbarsback的情况下方执行开仓语句。

使用道具 举报

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

bottom

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

GMT+8, 2024-4-19 17:24

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部