设为首页收藏本站

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

Global变量未能解决信号消失 [复制链接]

Rank: 4

精华
0
UID
29249
积分
309
帖子
118
主题
43
阅读权限
50
注册时间
2011-3-18
最后登录
2017-5-24
跳转到指定楼层
1#
发表于 2012-3-2 11:24:46 |只看该作者 |倒序浏览
Hi,
    这几天对信号的消失问题搞得头大。加了全局变量限制,似乎依然不行。所以想请看一下我下面的理解。
    交易代码如下示意:
  1. if(MarketPosition == 0 And GetGlobalVar(2) == 0)
  2.     {
  3.      if(Buy condition)
  4.      {
  5.       Buy;
  6.       SetGlobalVar(2,1);                                
  7.      }
  8.     }
复制代码
现在我能确定的是,在Buy之后,我会改变一些变量,使得当前bar再次扫描的时候,这个Buy condition会被判定失效了。但是我同时也会在buy之后,把Global(2)置位,防止再次进入。
    但是实盘来看,好像程序还是又进去了这个判断组,显示信号消失。
    我的感觉,只要加了这个Marketposition的判断,其它附属的判断,好像都没起到作用。不知道我的理解是否正确?
   
    我现在把MarketPosition == 0的语句去掉了,正在观察,不知道能解决不。但是这种测试感觉效率很低,要碰行情的,不知道有没有其它好的办法能快速离线测试信号消失的情况?

    谢谢!

Rank: 3Rank: 3

精华
0
UID
66209
积分
128
帖子
78
主题
19
阅读权限
40
注册时间
2011-9-18
最后登录
2020-12-20
2#
发表于 2013-3-26 22:04:53 |只看该作者
版主呢?为什么没人解答?

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
3#
发表于 2013-3-27 09:02:08 |只看该作者
这样的写法,就算是稳定的条件,也会因为你的全局变量使用不当从而导致信号消失。
你这样写的目的在于什么呢

使用道具 举报

Rank: 6Rank: 6

精华
0
UID
116229
积分
2373
帖子
2247
主题
18
阅读权限
70
注册时间
2013-3-4
最后登录
2019-3-24
4#
发表于 2013-3-27 09:14:05 |只看该作者
您的思路是正确的。
但是实盘中没有达到您的想法,依然进入条件,我们一起来分析:
MarketPosition == 0是判断图表当前是否有持仓,如果你的开仓信号消失了,会表示没有持仓,这个条件会满足。
检查一下你的全局变量是否置位。(关键)
还有,请检查你的开仓条件是否稳定,尽量不要使用close之类实时变化的价格等等。

使用道具 举报

Rank: 4

精华
0
UID
29249
积分
309
帖子
118
主题
43
阅读权限
50
注册时间
2011-3-18
最后登录
2017-5-24
5#
发表于 2013-3-27 11:17:56 |只看该作者
额,俺是楼主哈,不过这是去年的帖子了,当时没人回答,没想到等了一年。。。
当时是为什么这样写,我也记不太清了,大概意图是,一般为了防止出现信号闪现,都用类似close[1]之类的数据来判断,我想在一根bar里出现交易信号就进行交易,不用等到下根bar。但是这样容易出现信号闪现问题,所以加了个global参数来做锁定用吧。

使用道具 举报

Rank: 1

精华
0
UID
117338
积分
31
帖子
14
主题
1
阅读权限
10
注册时间
2013-3-27
最后登录
2021-4-6
6#
发表于 2013-3-27 22:46:46 |只看该作者
本帖最后由 grayhat 于 2013-3-27 22:56 编辑

这个问题很多人都碰到过,而版主都不能给一些具体的回答,实在令人遗憾。是你不懂,还是懒得说?你作为TB客户的技术顾问,会不懂吗?那么就是懒得说。那么你拿着TB的工资,懒得做份内的工作,这又是一种什么心态?

使用道具 举报

Rank: 1

精华
0
UID
117338
积分
31
帖子
14
主题
1
阅读权限
10
注册时间
2013-3-27
最后登录
2021-4-6
7#
发表于 2013-3-27 22:55:17 |只看该作者
解释一下TB的流程很难吗?
TB默认的情况,一系列Tick的交易指令相同、价格相同、条件相同时,不重复发单。所以一般情况下不用全局变量来控制下单,你Buy的条件一直满足、Buy的价格一直不变,它就不会重复发单(只要不因断电等情况重启)

使用道具 举报

Rank: 1

精华
0
UID
117338
积分
31
帖子
14
主题
1
阅读权限
10
注册时间
2013-3-27
最后登录
2021-4-6
8#
发表于 2013-3-27 23:28:35 |只看该作者

标题

本帖最后由 grayhat 于 2013-3-27 23:41 编辑

什么情况下需要加这个GlobalVar(2),想过滤开仓条件时。比如你可以买的K线有很多根,你只想在第一根买,由于某种原因又不能用MarketPosition,那你首先想到的是用全局变量在Buy之后立即斩断。
可惜,这样在实盘中会引起信号消失,你的全局变量把买入条件斩断了,信号自然就消失了。要么用A函数避开信号消失的问题,要么为了兼顾历史回测而采用变通的办法。
可以用Bar的序号来过滤信号,设一个普通变量BuyID,它在第一根Bar或每次卖出时初始化为0,然后一般情况下等值得传递给后面的K线,但If(BuyCondition) BuyID=BuyID[1]+1; 最后,买入条件成了BuyCondition && BuyID==1,完全不用MarketPosition了。用BuyID代替全局变量,就不会信号消失,因为在整个Bar内买入条件始终满足,而这个条件又没有丝毫变化,由于TB内在的控制机制,就不会重复发单。
其实有很多问题动动脑子都是可以解决的。在本版还见过一个问题,断电重启重复发单怎么办,版主竟然说没有办法,只能别让它断电。简直胡扯,这是因为没用自己的钱弄TB,要是用了自己的钱,他自然就想出办法了。

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
116920
积分
625
帖子
530
主题
64
阅读权限
60
注册时间
2013-3-15
最后登录
2014-5-7
9#
发表于 2013-7-23 22:45:08 |只看该作者
支持能提供一个深度解析TB运行机理的帮助文档,作为进阶材料。

使用道具 举报

Rank: 1

精华
0
UID
110217
积分
36
帖子
11
主题
5
阅读权限
10
注册时间
2012-4-26
最后登录
2022-2-13
10#
发表于 2016-2-5 16:02:55 |只看该作者
grayhat 发表于 2013-3-27 23:28
什么情况下需要加这个GlobalVar(2),想过滤开仓条件时。比如你可以买的K线有很多根,你只想在第一根买,由 ...

有启发,“由于TB内在的控制机制,就不会重复发单。”如果我是想控制加仓,在加仓的K线的K线不变条件,不知会不会重复发单。因为是加仓,所以在全局交易设置里是选了允许连续建仓的。

使用道具 举报

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

bottom

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

GMT+8, 2024-5-13 13:31

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部