设为首页收藏本站

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

关于tick运算问题3 [复制链接]

Rank: 2

精华
0
UID
237134
积分
89
帖子
59
主题
20
阅读权限
30
注册时间
2016-6-27
最后登录
2017-7-1
跳转到指定楼层
1#
发表于 2016-8-4 16:34:35 |只看该作者 |倒序浏览
本帖最后由 sswywangyun 于 2016-8-4 17:09 编辑

        aa = AverageFC(Close,5);
        bb = AverageFC(Close,20);
       
       
       
        Timee = GetGlobalVar(0);//取之前的时间
        Tick = GetGlobalVar(1);//取之前的tick
       
       
       
       
       
If(BarStatus == 2 And Timee != Time)//最新BAR第一次生成时,TICK  清0    BAR和Tick是2层
        {
         Timee=Time;
         Tick=0;
         }
       

If(MarketPosition != 1 And aa[1] > bb[2])//当持仓没有多仓的时候,并且金叉    注意条件叠加
    {                       
       
       
           If(MarketPosition == 0 || BarStatus != 2)//判断当前是否是空仓,或者不是最新的BAR上,就开多,因为实时BAR会有闪信号现象所以,要不是最新BAR
           {
       
             Buy(1,Open);
         
            }Else//有空头仓位时,那就先把空头平掉
               {
                 BuyToCover(1,Open);
                       
                     If(Tick == 0)//判断Tick是否是第一次平空,如果是就赋值给Tick=1,除了Tick不是0的情况下就继续累计到TICK5之后开多      
                     {
                       Tick = 1;
                          
                      }Else If(Tick<5)
                               {
                                          Tick = Tick+1;
                                                  
                                                }Else
                                                    {
                                              Buy(1,Open);
                                                     }
                        }
        }                         
               
               
               
        SetGlobalVar(0,Timee);//把当前BAR时间存到0箱子里,再和之后BAR新时间比较              BAR和Tick是2层
        SetGlobalVar(1,Tick);//把TICK计数存1箱子里
               




当有空头仓位的时候,平掉空头仓位,并且给判断If(Tick == 0) Tick=1;如果假设满足这个条件,后面的
Else If(Tick<5){Tick = Tick+1;}Else {Buy(1,Open);}就不会被执行,然后下一个新数据Tick来了,又会执行一次If(MarketPosition != 1 And aa[1] > bb[2]).....If(MarketPosition == 0 || BarStatus != 2)这时候如果我本身只有1手空单,上一次Tick已经平了这个空了,那么就会满足条件买多单,不就不会延迟5个Tick了吗?这个是TB教科书上的例子,让初学者摸不着头脑,是那里的逻辑搞错了。


如何延续5个Tick的?当If(Tick == 0)  Tick = 1;的时候,后面的Else If(Tick<5)是不被执行的,要满足If(Tick <> 0)的时候才会执,那也就是要有一个新Tick来了才行,公式又会重头再计算一次,那个时候我的空单已经在上一个Tick平了,就会不延迟5个Tick开多了。



希望管理员解答,我相信我的问题也是大部分初学者的问题

Rank: 2

精华
0
UID
237134
积分
89
帖子
59
主题
20
阅读权限
30
注册时间
2016-6-27
最后登录
2017-7-1
2#
发表于 2016-8-4 18:16:40 |只看该作者
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
3#
发表于 2016-8-5 09:36:32 |只看该作者
sswywangyun 发表于 2016-8-4 18:16


http://bbs.tb18.net/thread-22580-1-1.html
您可以看一下这个贴子,或许能帮助理解在开平仓bar上,信号marketposiiton是怎么变化的。
把上述问题理解后,你现在的疑问应该就没了

使用道具 举报

Rank: 2

精华
0
UID
237134
积分
89
帖子
59
主题
20
阅读权限
30
注册时间
2016-6-27
最后登录
2017-7-1
4#
发表于 2016-8-5 09:38:01 |只看该作者
这个问题我发了2次,怕管理员理解不到我意思

使用道具 举报

Rank: 2

精华
0
UID
237134
积分
89
帖子
59
主题
20
阅读权限
30
注册时间
2016-6-27
最后登录
2017-7-1
5#
发表于 2016-8-5 09:38:53 |只看该作者
小米 发表于 2016-8-5 09:36
http://bbs.tb18.net/thread-22580-1-1.html
您可以看一下这个贴子,或许能帮助理解在开平仓bar上,信号m ...

谢谢小猫咪

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
6#
发表于 2016-8-5 09:45:27 |只看该作者
sswywangyun 发表于 2016-8-5 09:38
这个问题我发了2次,怕管理员理解不到我意思

公式用于什么周期上的?
这段代码是程序化交易那本书上提供的,代码本身是可以控制好延迟反手的。
如果确认是使用在10以上的K线周期上,却不能控制反手时间。
可以将整个代码发给我测试一下。

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
7#
发表于 2016-8-5 09:47:24 |只看该作者
sswywangyun 发表于 2016-8-5 09:38
这个问题我发了2次,怕管理员理解不到我意思

问题无论发多少次,理解不到就是理解不到了。发再多次也起不了良性的效果呢。
且工作人员并不只面对您一位客户,就是发得越多,我们处理的所需的时间周期就更长。。
没法做到一对一的服务,抱歉。

使用道具 举报

Rank: 2

精华
0
UID
237134
积分
89
帖子
59
主题
20
阅读权限
30
注册时间
2016-6-27
最后登录
2017-7-1
8#
发表于 2016-8-5 09:52:37 |只看该作者
小米 发表于 2016-8-5 09:47
问题无论发多少次,理解不到就是理解不到了。发再多次也起不了良性的效果呢。
且工作人员并不只面对您一 ...

谢谢猫老师

使用道具 举报

Rank: 2

精华
0
UID
237134
积分
89
帖子
59
主题
20
阅读权限
30
注册时间
2016-6-27
最后登录
2017-7-1
9#
发表于 2016-8-5 09:54:36 |只看该作者
小米 发表于 2016-8-5 09:47
问题无论发多少次,理解不到就是理解不到了。发再多次也起不了良性的效果呢。
且工作人员并不只面对您一 ...

我只是抱歉发了2次

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
257171
积分
133
帖子
99
主题
32
阅读权限
40
注册时间
2017-9-28
最后登录
2019-11-16
10#
发表于 2018-5-7 14:06:26 |只看该作者
本帖最后由 masterhdd 于 2018-5-7 14:11 编辑
sswywangyun 发表于 2016-8-4 18:16


我也是初学者,明白你的疑问,我来回答:

如何延续5个Tick的?当If(Tick == 0) 条件成立时,Tick 会被赋值为1 ,也就是Tick = 1;此时Tick == 0的条件就已经不成立了,此时是满足If(Tick <> 0)条件的,进而会执行后面的 If(Tick<5)语句,直到Tick>=5 才会Buy(1,Open);

你的错误可能在于你把当If(Tick == 0)  Tick = 1;这句整个当成一个条件了,实际是If(Tick == 0),那么就Tick = 1;
而不是你所问的”当If(Tick == 0)  Tick = 1;的时候,后面的Else If(Tick<5)是不被执行的”

使用道具 举报

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

bottom

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

GMT+8, 2024-4-27 05:33

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部