设为首页收藏本站

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

信号仍然闪烁,确认没有未来函数 [复制链接]

Rank: 2

精华
0
UID
192103
积分
95
帖子
57
主题
21
阅读权限
30
注册时间
2014-8-11
最后登录
2015-7-7
跳转到指定楼层
1#
发表于 2015-1-19 10:51:03 |只看该作者 |倒序浏览
为了避免high low带来的信号消失问题,我自己定义了在一个bar内的最高和最低价,而且是随tick而变,一旦某个tick出现了最高价Gao超过开仓线,则在本bar内只会有更高的最高价,会一直满足开仓条件,而不会信号消失或者闪烁。

但是,在模拟交易时,F7仍然提示交易信号消失!!!!,这到底怎么回事!!!!!!!!!!!崩溃!!!!!!!!!!!!

代码如下:
        if (BarStatus()==2)
        {
                If (time!=time[1])
                {
                        Gao=IIF(High>0,high,0);
                        Di=IIF(Low>0,Low,0);
                        SetGlobalVar(10,Gao);
                        SetGlobalVar(11,Di);
                }
                Else
                {
                        Gao=GetGlobalVar(10);
                        Di=GetGlobalVar(11);
                        Gao=IIF(High>Gao,High,Gao);
                        Di=IIF(Low<Di,Low,Di);
                        SetGlobalVar(10,Gao);
                        SetGlobalVar(11,Di);
                }
               
                FileAppend("D:\\tbdemo2.log","Gao="+Text(Gao)+"|DonchianHi="+Text(DonchianHi)+"|TurtleUnits="+Text(TurtleUnits));
                FileAppend("D:\\tbdemo2.log","Di="+Text(Di)+"|DonchianLo="+Text(DonchianLo)+"|TurtleUnits="+Text(TurtleUnits));
                               
               
                // 当不使用过滤条件,或者使用过滤条件并且条件为PreBreakoutFailure为True进行后续操作
                If(Position_dir == 0)
                {
                        // 突破开仓
                        If(Gao > DonchianHi && TurtleUnits >= 1)// && JValue>JValue[1] && JValue>0 && MyADX>=ADXThres)
                        {
                                //上次突破失败为True
                                if (PreBreakoutFailure==1)
                                {
                                        // 开仓价格取突破上轨+一个价位和最高价之间的较小值,这样能更接近真实情况,并能尽量保证成交
                                        myEntryPrice = min(Gao,DonchianHi + MinPoint);
                                        myEntryPrice = IIF(myEntryPrice < Open, Open,myEntryPrice);     // 大跳空的时候用开盘价代替
                                        preEntryPrice = myEntryPrice;
                                        Buy(TurtleUnits,Q_UpperLimit);
                                        SendOrderThisBar = True;
                                        Commentary("……20突破多单……");
                                        Commentary("myEntryPrice多20="+Text(myEntryPrice));
                                        FileAppend("D:\\tbdemo2.log","……20突破多单……");
                                        FileAppend("D:\\tbdemo2.log","开单="+Text(TurtleUnits)+"@"+Text(preEntryPrice));

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
2#
发表于 2015-1-19 11:25:13 |只看该作者
为什么说high与low会导致信号闪烁? 如果逻辑合理,使用high,low不会是信号闪烁的原因。
你的公式里,重要的不是使用全局变量记录最高最低价。。而是看看DonchianHi等变量的赋值计算里有没有用到不稳定的,可变化的数据?? PreBreakoutFailure的值会不会变化等。

使用道具 举报

Rank: 2

精华
0
UID
192103
积分
95
帖子
57
主题
21
阅读权限
30
注册时间
2014-8-11
最后登录
2015-7-7
3#
发表于 2015-1-19 11:29:19 |只看该作者
本帖最后由 wkinsf 于 2015-1-19 11:52 编辑

我记录了这些,没有发现DonchianHi有变化。high low我不确定是不是导致信号消失的原因,所以才自己定义了Gao和Di。下面是lgo文件的部分内容,请参考

   curenttime=0.102912; time=0.1029  #目前仓位=0手@3529.8#@LongShort=0
Gao=3537.8|DonchianHi=3554.8|TurtleUnits=4
Di=3536|DonchianLo=3522|TurtleUnits=4
………中间部分省略……………
   curenttime=0.102929; time=0.1029  #目前仓位=0手@3529.8#@LongShort=0
Gao=3537.8|DonchianHi=3554.8|TurtleUnits=4
Di=3535.6|DonchianLo=3522|TurtleUnits=4
   curenttime=0.10293; time=0.1029  #目前仓位=0手@3529.8#@LongShort=0
Gao=3538|DonchianHi=3554.8|TurtleUnits=4
Di=3535.6|DonchianLo=3522|TurtleUnits=4
   curenttime=0.102931; time=0.1029  #目前仓位=0手@3529.8#@LongShort=0
Gao=3538|DonchianHi=3554.8|TurtleUnits=4
Di=3535.6|DonchianLo=3522|TurtleUnits=4
   curenttime=0.102933; time=0.1029  #目前仓位=0手@3529.8#@LongShort=0
Gao=3538.2|DonchianHi=3554.8|TurtleUnits=4
Di=3535.6|DonchianLo=3522|TurtleUnits=4
   curenttime=0.102934; time=0.1029  #目前仓位=0手@3529.8#@LongShort=0
Gao=3538.4|DonchianHi=3554.8|TurtleUnits=4
Di=3535.6|DonchianLo=3522|TurtleUnits=4
……中间部分省略……
   curenttime=0.102951; time=0.1029  #目前仓位=0手@3529.8#@LongShort=0
Gao=3538.4|DonchianHi=3554.8|TurtleUnits=4
Di=3535.6|DonchianLo=3522|TurtleUnits=4
   curenttime=0.102951; time=0.103  #目前仓位=0手@3529.8#@LongShort=0
Gao=3538.6|DonchianHi=3554.8|TurtleUnits=4
Di=3538.6|DonchianLo=3522|TurtleUnits=4
   curenttime=0.102952; time=0.103  #目前仓位=0手@3529.8#@LongShort=0
Gao=3538.8|DonchianHi=3554.8|TurtleUnits=4
Di=3538.6|DonchianLo=3522|TurtleUnits=4
   curenttime=0.102952; time=0.103  #目前仓位=0手@3529.8#@LongShort=0
Gao=3538.8|DonchianHi=3554.8|TurtleUnits=4
Di=3538.6|DonchianLo=3522|TurtleUnits=4
   curenttime=0.102953; time=0.103  #目前仓位=0手@3529.8#@LongShort=0
Gao=3538.8|DonchianHi=3554.8|TurtleUnits=4
Di=3538.2|DonchianLo=3522|TurtleUnits=4
   curenttime=0.102953; time=0.103  #目前仓位=0手@3529.8#@LongShort=0
Gao=3538.8|DonchianHi=3554.8|TurtleUnits=4
Di=3538|DonchianLo=3522|TurtleUnits=4
   curenttime=0.102954; time=0.103  #目前仓位=0手@3529.8#@LongShort=0
Gao=3539.2|DonchianHi=3554.8|TurtleUnits=4
Di=3538|DonchianLo=3522|TurtleUnits=4

使用道具 举报

Rank: 2

精华
0
UID
192103
积分
95
帖子
57
主题
21
阅读权限
30
注册时间
2014-8-11
最后登录
2015-7-7
4#
发表于 2015-1-19 11:31:34 |只看该作者
Gao和Di会根据Tick的值不同而发生改变,DonChianHi一直很稳定。PreBreakoutFailure的值一直用的参数定义默认值。请NoPain老大帮忙看看,多谢!!

使用道具 举报

Rank: 2

精华
0
UID
192103
积分
95
帖子
57
主题
21
阅读权限
30
注册时间
2014-8-11
最后登录
2015-7-7
5#
发表于 2015-1-19 11:53:15 |只看该作者
本帖最后由 wkinsf 于 2015-1-19 13:41 编辑

为了看的方便,我把交易记录中重复的删除了,请小米参考

其中,DonchianHi的公式如下,使用了前一个bar的数据,本bar数据没有用

DonchianHi = HighestFC(High[1],boLength);
DonchianLo = LowestFC(Low[1],boLength);

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
6#
发表于 2015-1-19 13:25:30 |只看该作者
wkinsf 发表于 2015-1-19 11:53
为了看的方便,我把交易记录中重复的删除了,请NoPain参考

其中,DonchianHi的公式如下,使用了前一个bar ...

若按你开仓代码来看,DonchianHi是稳定的,TurtleUnits是稳定的,Position_dir是稳定的,PreBreakoutFailure是稳定的,那么你用high>DonchiHi来判断就不会导致信号闪烁的问题。
若按你现在说的,自己使用了全局变量来记录,且记录价格也合理,仍有信号闪烁问题,就说明关键不在于这里了。。
建议使用fileappend写日志,看看你的开仓条件里的每一个条件都有什么变化不,到底是哪个数据的变化导致了信号闪烁。

使用道具 举报

Rank: 2

精华
0
UID
192103
积分
95
帖子
57
主题
21
阅读权限
30
注册时间
2014-8-11
最后登录
2015-7-7
7#
发表于 2015-1-19 13:40:40 |只看该作者
哦,了解,我再仔细弄弄看。多谢小米老大!

使用道具 举报

Rank: 2

精华
0
UID
192103
积分
95
帖子
57
主题
21
阅读权限
30
注册时间
2014-8-11
最后登录
2015-7-7
8#
发表于 2015-1-20 11:39:47 |只看该作者
老大,我翻看了你以前的帖子,有说到不能把Q函数和buy/sell一起用,会造成信号消失。我改成了Gao和DonchianHi的价格加上偏移量,但仍然有信号消失!
另外,我按你说的把条件进行计算和记录,没发现条件突变的情况啊,本bar之内信号非常稳定。

myEntryPrice = min(Gao,DonchianHi + MinPoint);
myEntryPrice = IIF(myEntryPrice < Open, Open,myEntryPrice);     // 大跳空的时候用开盘价代替
preEntryPrice = myEntryPrice;
Buy(TurtleUnits,preEntryPrice+offset); 之前用的Q_lowlimit

另外,加上了
tmp1=IIF((Gao >= DonchianHi) && (TurtleUnits >= 1) && (PreBreakoutFailure==1),1,0);
FileAppend("D:\\tbdemo2.log","全部开多仓条件满足="+Text(tmp1));
tmp1=IIF((Di <= DonchianLo) && (TurtleUnits >= 1) && (PreBreakoutFailure==1),1,0);
FileAppend("D:\\tbdemo2.log","全部开空仓条件满足="+Text(tmp1));

Log文件如下:
   curenttime=0.112335; time=0.1123  #目前仓位=0手@N/A#@LongShort=0
Gao=3442.8|DonchianHi=3482|TurtleUnits=2
Di=3437.6|DonchianLo=3437.4|TurtleUnits=2
Position_dir=0 PreBreakoutFailure=1
全部开多仓条件满足=0
全部开空仓条件满足=0
   curenttime=0.112335; time=0.1123  #目前仓位=0手@N/A#@LongShort=0
Gao=3442.8|DonchianHi=3482|TurtleUnits=2
Di=3437.4|DonchianLo=3437.4|TurtleUnits=2
Position_dir=0 PreBreakoutFailure=1
全部开多仓条件满足=0
全部开空仓条件满足=1
……20突破空单……
开单=2@3437.4
下单后Tick计数
##实际成交=3437.4*2##
   curenttime=0.112336; time=0.1123  #目前仓位=2手@3437.4#@LongShort=-1
Gao=3442.8|DonchianHi=3482|TurtleUnits=2
Di=3437|DonchianLo=3437.4|TurtleUnits=2
Position_dir=-1 PreBreakoutFailure=1
全部开多仓条件满足=0
全部开空仓条件满足=1
   curenttime=0.112336; time=0.1123  #目前仓位=2手@3437.4#@LongShort=-1
Gao=3442.8|DonchianHi=3482|TurtleUnits=2
Di=3436.8|DonchianLo=3437.4|TurtleUnits=2
Position_dir=-1 PreBreakoutFailure=1
全部开多仓条件满足=0
全部开空仓条件满足=1
   curenttime=0.112337; time=0.1123  #目前仓位=2手@3437.4#@LongShort=-1
Gao=3442.8|DonchianHi=3482|TurtleUnits=2
Di=3436.8|DonchianLo=3437.4|TurtleUnits=2
Position_dir=-1 PreBreakoutFailure=1
全部开多仓条件满足=0
全部开空仓条件满足=1
   curenttime=0.112337; time=0.1123  #目前仓位=2手@3437.4#@LongShort=-1
Gao=3442.8|DonchianHi=3482|TurtleUnits=2
Di=3436.8|DonchianLo=3437.4|TurtleUnits=2
Position_dir=-1 PreBreakoutFailure=1
全部开多仓条件满足=0
全部开空仓条件满足=1
……中间省略……
   curenttime=0.112357; time=0.1123  #目前仓位=2手@3437.4#@LongShort=-1
Gao=3442.8|DonchianHi=3482|TurtleUnits=2
Di=3436.8|DonchianLo=3437.4|TurtleUnits=2
Position_dir=-1 PreBreakoutFailure=1
全部开多仓条件满足=0
全部开空仓条件满足=1
   curenttime=0.112358; time=0.1124  #目前仓位=2手@3437.4#@LongShort=-1
Gao=3438.8|DonchianHi=3482|TurtleUnits=2
Di=3438.8|DonchianLo=3436.8|TurtleUnits=2
Position_dir=-1 PreBreakoutFailure=1
全部开多仓条件满足=0
全部开空仓条件满足=0

11:23:35的第一个tick,不满足条件
11:23:35的第二个tick,满足条件,顺利出发buy/sell指令
但F7马上提示消失


Log文件显示
11:23:36信号仍然满足开空仓条件,一直到这根Bar结束!

请教小米版主,我还能怎么检查?
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

Rank: 2

精华
0
UID
190860
积分
64
帖子
50
主题
0
阅读权限
30
注册时间
2014-7-19
最后登录
2015-5-14
9#
发表于 2015-1-24 12:23:59 |只看该作者

使用道具 举报

Rank: 2

精华
0
UID
220169
积分
77
帖子
48
主题
19
阅读权限
30
注册时间
2015-9-21
最后登录
2020-3-27
10#
发表于 2015-12-3 09:56:25 |只看该作者
请问楼主和版主,这个问题解决了么

使用道具 举报

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

bottom

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

GMT+8, 2024-5-1 12:19

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部