开拓者期货期权程序化系统交易论坛

标题: 请问如下代码为何会出现信号闪烁? [打印本页]

作者: a410999923    时间: 2020-3-24 21:26:24     标题: 请问如下代码为何会出现信号闪烁?

请问如下代码为何会出现信号闪烁。
             If(Close[1]<GetGlobalVar(1)){
                            Sell(0,Open);
                            SetGlobalVar(1,0); //这是一个自己定义的用来止损的全局变量
                    }

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

请问这个问题是什么造成的,应该怎么解决。我猜测是报价是open或者全局变量,但是完全不知道为什么。
作者: 小米    时间: 2020-3-25 13:47:42

这个地方使用全局变量不太合适 。。建议换成序列变量。
作者: a410999923    时间: 2020-3-25 17:34:29

小米 发表于 2020-3-25 13:47
这个地方使用全局变量不太合适 。。建议换成序列变量。

我也是在论坛其他地方看到全局变量会造成信号闪烁。但是没看到原理解释。
版主能不能再解释一下这个地方为什么全局变量不太合适啊,我好知其所以然。
作者: 小米    时间: 2020-3-26 09:04:50

a410999923 发表于 2020-3-25 17:34
我也是在论坛其他地方看到全局变量会造成信号闪烁。但是没看到原理解释。
版主能不能再解释一下这个地方 ...

先看一下这个贴子里3#的内容http://bbs.tb18.net/thread-22580-1-1.htm,了解一下序列变量的运行机制。。
而全局变量与序列变量不同,他的值一旦被改变,那就是改变了。且一个全局变量里不能记录多个值  。            
                             
作者: a410999923    时间: 2020-3-26 10:16:22

小米 发表于 2020-3-26 09:04
先看一下这个贴子里3#的内容http://bbs.tb18.net/thread-22580-1-1.htm,了解一下序列变量的运行机制。。 ...

页面404。
这个代码里面里感觉用全局变量没有问题啊。globalvar里面放了止损价格,如果止损了就把这个全局变量置为0.,这会在什么情况下出错呢。
作者: 小米    时间: 2020-3-26 11:51:03

a410999923 发表于 2020-3-26 10:16
页面404。
这个代码里面里感觉用全局变量没有问题啊。globalvar里面放了止损价格,如果止损了就把这个全 ...

http://bbs.tb18.net/thread-22580-1-1.html

我可以肯定是全局变量的问题。
作者: a410999923    时间: 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了,以后也同样不会出发了,这不是和全局变量一样么




欢迎光临 开拓者期货期权程序化系统交易论坛 (http://bbs.tb18.net/) Powered by Discuz! X2