设为首页收藏本站

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

同样的逻辑不同的写法,值完全不一样 [复制链接]

Rank: 1

精华
0
UID
162959
积分
2
帖子
1
主题
1
阅读权限
10
注册时间
2013-1-7
最后登录
2013-10-10
跳转到指定楼层
1#
发表于 2013-8-19 00:40:30 |只看该作者 |倒序浏览
本帖最后由 yaqh202102528 于 2013-8-19 00:52 编辑

为什么同样的逻辑不同的写法,值完全不一样?
对于函数的运用,也有什么讲究吗?
我编译了一个ICM 和一个IRAV 的函数,都是对收盘价、最高最低价做一些计算。
以下三个写法,回测出来的盈利大不相同,可谓天差地别。
  1.         Filter=ICM(30)>=15 && IRAV(7,65)>=0.1 ;
  2.         c_Buy=MarketPosition!=1 && MovAvg[1]>MovAvg[2] && High>=UpBand[1] && Date==Date[1] && Filter[1]==True;
  3.         c_SellShort=MarketPosition!=-1 && MovAvg[1]<MovAvg[2] && Low<=DnBand[1] && Date==Date[1] && Filter[1]==True;       
复制代码
用焦炭半年的数据测,赚1800.
把两个函数提出来算,[1]的回溯放在Bool变量的计算里,亏500
  1.         ICMValue=ICM(30);
  2.         IRAVValue=IRAV(7,65);
  3.         Filter=ICMValue[1]>=15 && IRAVValue[1]>=0.1 ;
  4.         c_Buy=MarketPosition!=1 && MovAvg[1]>MovAvg[2] && High>=UpBand[1] && Date==Date[1] && Filter==True;
  5.         c_SellShort=MarketPosition!=-1 && MovAvg[1]<MovAvg[2] && Low<=DnBand[1] && Date==Date[1] && Filter==True;       
复制代码
把两个函数提出来先算一遍,后面没用到这个函数转存的序列变量,再用函数算了一遍,亏6000
  1.         ICMValue=ICM(30);
  2.         IRAVValue=IRAV(7,65);
  3.         Filter=ICM(30)>=15 && IRAV(7,65)>=0.1 ;
  4.         c_Buy=MarketPosition!=1 && MovAvg[1]>MovAvg[2] && High>=UpBand[1] && Date==Date[1] && Filter[1]==True;
  5.         c_SellShort=MarketPosition!=-1 && MovAvg[1]<MovAvg[2] && Low<=DnBand[1] && Date==Date[1] && Filter[1]==True;
复制代码
再变换几个逻辑相同的不同写法,还测出来赚13000、赚18000
到底真真假假,谁真谁假?这是怎么回事?看信号图几乎都是一样的。
快被搞死了……请管理员解答!

Rank: 5Rank: 5

精华
0
UID
116920
积分
625
帖子
530
主题
64
阅读权限
60
注册时间
2013-3-15
最后登录
2014-5-7
2#
发表于 2013-8-19 13:08:00 |只看该作者
关注一下

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
66209
积分
128
帖子
78
主题
19
阅读权限
40
注册时间
2011-9-18
最后登录
2020-12-20
3#
发表于 2013-8-20 12:19:12 |只看该作者
d

使用道具 举报

Rank: 1

精华
0
UID
179491
积分
1
帖子
1
主题
0
阅读权限
10
注册时间
2014-1-18
最后登录
2014-3-23
4#
发表于 2014-3-4 02:22:43 |只看该作者
今天我也碰到类似问题了。把好几个布尔变量用逻辑操作符并联判断,和用IF嵌套的逐级判断,居然是两种结果。
真受不了TB的这方面。

使用道具 举报

Rank: 2

精华
0
UID
118356
积分
89
帖子
47
主题
24
阅读权限
30
注册时间
2013-4-24
最后登录
2016-2-3
5#
发表于 2014-3-4 13:10:31 |只看该作者
phyver 发表于 2014-3-4 02:22
今天我也碰到类似问题了。把好几个布尔变量用逻辑操作符并联判断,和用IF嵌套的逐级判断,居然是两种结果。 ...

这是正常的啊,编程时也会遇到这种情况,比如说你有止损,止赢,条件平仓三个条件时,你需要把止损放在第一个,条件平仓放在第二个,止赢放在第三个这样来写。

使用道具 举报

Rank: 1

精华
0
UID
115826
积分
23
帖子
9
主题
3
阅读权限
10
注册时间
2013-3-3
最后登录
2022-6-19
6#
发表于 2014-3-4 20:08:43 |只看该作者
楼主看说明书去。IF里面,不要放序列变量,你把所有的条件都放到IF外面写。

使用道具 举报

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

bottom

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

GMT+8, 2024-5-19 13:57

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部