以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp) -- 金字塔软件问题提交 (http://www.weistock.com/bbs/list.asp?boardid=2) ---- 代码顺序 (http://www.weistock.com/bbs/dispbbs.asp?boardid=2&id=173659) |
-- 作者:大豆0911 -- 发布时间:2019/12/22 15:20:17 -- 代码顺序 今天遇到了难以理解的问题,发现调整代码顺序会影响回测结果。。。。今天新加了一组开仓条件,发现必须放在某组止损条件之前,结果更好。逻辑上说不过去啊!循环读取开平仓和止损条件,按理说,代码的排列顺序不应该影响到结果啊。过去确实没有影响。 版主大神,这是为什么??? |
-- 作者:zm71212302 -- 发布时间:2019/12/23 3:12:35 -- 查看下逻辑指针是否存在问题,其次是变量名称是否有重复,还有是某些全局变量与局部变量产生的冲突。 |
-- 作者:wenarm -- 发布时间:2019/12/23 8:21:18 -- 代码整体逻辑虽然是顺序结构,但是在整个循环执行中。你开平仓代码顺序调换,自然可能造成开平语句执行发生变化。 止盈止损一般都是需要在开平语句之后。例如:如果放在前面(并且存在仓位控制时),当第一次发生同一根k线的盈止损条件并且开平条件同时成立时,因为止盈止损在前,没有仓位可平,止盈止损无效,再进行开平,就会造成后面的代码执行结果与止盈止损在后面的结果不同 |
-- 作者:大豆0911 -- 发布时间:2019/12/23 11:48:46 -- 以下是引用zm71212302在2019/12/23 3:12:35的发言:
查看下逻辑指针是否存在问题,其次是变量名称是否有重复,还有是某些全局变量与局部变量产生的冲突。 谢谢版主,请问逻辑指针是指什么?能否举例呢? 变量名称没有重复,没有用全局变量,但是用了enterbars,exitbars这些会随信号变化的函数。 |
-- 作者:banzhuan -- 发布时间:2019/12/23 13:23:35 -- 您可以理解为顺序。说个办法,把策略加载到图表上,然后每个开平仓语句包括止损止盈都标记下,看下两种不同的策略对应的结果,看下具体差异出在哪里,标记用如下方法: 开多1: buy(....) 开多2:buy(....)
|
-- 作者:大豆0911 -- 发布时间:2019/12/23 13:26:44 -- 以下是引用wenarm在2019/12/23 8:21:18的发言:
代码整体逻辑虽然是顺序结构,但是在整个循环执行中。你开平仓代码顺序调换,自然可能造成开平语句执行发生变化。 止盈止损一般都是需要在开平语句之后。例如:如果放在前面(并且存在仓位控制时),当第一次发生同一根k线的盈止损条件并且开平条件同时成立时,因为止盈止损在前,没有仓位可平,止盈止损无效,再进行开平,就会造成后面的代码执行结果与止盈止损在后面的结果不同 谢谢版主,我没太懂您说的意思。。。我的系统是全进全出,平仓都是全平SELLSHORT(HOLDING<0,0,market),开仓都在空仓条件下buy(HOLDING=0,60,market)。 所以我理解“止盈止损在前,没有仓位可平”这个情况应该不存在?按照HOLDING<0 或 HOLDING>0条件,没有仓位时,止盈止损平仓条件都不会触发。 |
-- 作者:大豆0911 -- 发布时间:2019/12/23 13:30:23 -- 以下是引用banzhuan在2019/12/23 13:23:35的发言:
您可以理解为顺序。说个办法,把策略加载到图表上,然后每个开平仓语句包括止损止盈都标记下,看下两种不同的策略对应的结果,看下具体差异出在哪里,标记用如下方法: 开多1: buy(....)
开多2:buy(....)
谢谢版主,成交单数太多了,如果在图表上,检查难度有点大,是否有办法在回测报告中,把开多1开多2标识出来呢? |
-- 作者:banzhuan -- 发布时间:2019/12/23 13:54:03 -- 回测报告里面体现不出来,您加载一段K线图,大致的策略运行逻辑就知道了呀 |