设为首页收藏本站

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

请问如下代码为何会出现信号闪烁? [复制链接]

Rank: 2

精华
0
UID
220169
积分
77
帖子
48
主题
19
阅读权限
30
注册时间
2015-9-21
最后登录
2020-3-27
跳转到指定楼层
1#
发表于 2020-3-24 21:26:24 |显示全部楼层 |倒序浏览
请问如下代码为何会出现信号闪烁。
             If(Close[1]<GetGlobalVar(1)){
                            Sell(0,Open);
                            SetGlobalVar(1,0); //这是一个自己定义的用来止损的全局变量
                    }

图表上这个信号是有的,模拟交易也成交了,但是策略显示还有持仓。
具体描述是,这根K线的情况是一个隔夜的大阳线。开盘报了一个卖价,1秒钟过后就报信号闪烁了。然后又过了4秒委托成交,这时候账户没有持仓了,图表上也有平仓信号,但是策略显示的仓位还在。

请问这个问题是什么造成的,应该怎么解决。我猜测是报价是open或者全局变量,但是完全不知道为什么。

Rank: 2

精华
0
UID
220169
积分
77
帖子
48
主题
19
阅读权限
30
注册时间
2015-9-21
最后登录
2020-3-27
2#
发表于 2020-3-25 17:34:29 |显示全部楼层
小米 发表于 2020-3-25 13:47
这个地方使用全局变量不太合适 。。建议换成序列变量。

我也是在论坛其他地方看到全局变量会造成信号闪烁。但是没看到原理解释。
版主能不能再解释一下这个地方为什么全局变量不太合适啊,我好知其所以然。

使用道具 举报

Rank: 2

精华
0
UID
220169
积分
77
帖子
48
主题
19
阅读权限
30
注册时间
2015-9-21
最后登录
2020-3-27
3#
发表于 2020-3-26 10:16:22 |显示全部楼层
小米 发表于 2020-3-26 09:04
先看一下这个贴子里3#的内容http://bbs.tb18.net/thread-22580-1-1.htm,了解一下序列变量的运行机制。。 ...

页面404。
这个代码里面里感觉用全局变量没有问题啊。globalvar里面放了止损价格,如果止损了就把这个全局变量置为0.,这会在什么情况下出错呢。

使用道具 举报

Rank: 2

精华
0
UID
220169
积分
77
帖子
48
主题
19
阅读权限
30
注册时间
2015-9-21
最后登录
2020-3-27
4#
发表于 2020-3-26 16:56:54 |显示全部楼层
小米 发表于 2020-3-26 11:51
http://bbs.tb18.net/thread-22580-1-1.html

我可以肯定是全局变量的问题。

噢,就是这个语句1根K线会执行好多次。第一次我把它赋值成0了,以后就再也不会触发了,所以这根k线开始有信号,结束的时候没信号了吧。

那假如我把这个全局变量换成了序列变量,序列变量在这根K线上第一次也会被赋值成0了,以后也同样不会出发了,这不是和全局变量一样么

使用道具 举报

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

bottom

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

GMT+8, 2024-5-8 08:58

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部