设为首页收藏本站

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

如何控制每个Bar只操作一次(附程序) [复制链接]

Rank: 5Rank: 5

精华
0
UID
5525
积分
1473
帖子
429
主题
93
阅读权限
60
注册时间
2009-9-22
最后登录
2022-5-23
跳转到指定楼层
1#
发表于 2010-11-9 09:49:27 |只看该作者 |倒序浏览
测试程序是控制每个Bar只输出一次记录,用公共变量控制,但实测的结果不是想要的结果。
请大家帮助分析原因,我实在找不出问题。
//------------------------------------------------------------------------
// 简称: Test6
// 名称:
// 类别: 交易指令
// 类型: 其他
// 输出:
//------------------------------------------------------------------------
Begin
        If (BarStatus==0) {SetGlobalVar(0,0);Return;}
       
        // 控制每个Bar仅执行一次
        If (CurrentBar!=GetGlobalVar(0))
        {        SetGlobalVar(0,CurrentBar);
                If (BarStatus==2)
                {        FileAppend("C:\\Test6.Log",Text(CurrentBar)+" #2 "+DateToString(Date)+" "+TimeToString(Time)+" "+TimeToString(CurrentTime));
                }
                Else
                {        FileAppend("C:\\Test6.Log",Text(CurrentBar)+" #1 "+DateToString(Date)+" "+TimeToString(Time)+" "+TimeToString(CurrentTime));
                }
        }
End
上善若水,无欲则刚

Rank: 5Rank: 5

精华
0
UID
5525
积分
1473
帖子
429
主题
93
阅读权限
60
注册时间
2009-9-22
最后登录
2022-5-23
2#
发表于 2010-11-9 09:51:19 |只看该作者
实测的部分输出如下:(工作在1分钟周期,样本数设为3000)
2988 #1 2010-11-08 14:48:00 08:26:50
2989 #1 2010-11-08 14:49:00 08:26:50
2990 #1 2010-11-08 14:50:00 08:26:50
2991 #1 2010-11-08 14:51:00 08:26:50
2992 #1 2010-11-08 14:52:00 08:26:50
2993 #1 2010-11-08 14:53:00 08:26:50
2994 #1 2010-11-08 14:54:00 08:26:50
2995 #1 2010-11-08 14:55:00 08:26:50
2996 #1 2010-11-08 14:56:00 08:26:50
2997 #1 2010-11-08 14:57:00 08:26:50
2998 #1 2010-11-08 14:58:00 08:26:50
2999 #1 2010-11-08 14:59:00 08:59:01
3000 #2 2010-11-09 09:00:00 09:00:02
3000 #2 2010-11-09 09:00:00 09:00:02
3000 #2 2010-11-09 09:00:00 09:00:03
3000 #2 2010-11-09 09:00:00 09:00:04
3000 #2 2010-11-09 09:00:00 09:00:05
3000 #2 2010-11-09 09:00:00 09:00:06
3000 #2 2010-11-09 09:00:00 09:00:07
3000 #2 2010-11-09 09:00:00 09:00:07
3000 #2 2010-11-09 09:00:00 09:00:08
3000 #2 2010-11-09 09:00:00 09:00:08
3000 #2 2010-11-09 09:00:00 09:00:09
3000 #2 2010-11-09 09:00:00 09:00:10
3000 #2 2010-11-09 09:00:00 09:00:10
3000 #2 2010-11-09 09:00:00 09:00:11
3000 #2 2010-11-09 09:00:00 09:00:12
3000 #2 2010-11-09 09:00:00 09:00:12
3000 #2 2010-11-09 09:00:00 09:00:13
3000 #2 2010-11-09 09:00:00 09:00:14
3000 #2 2010-11-09 09:00:00 09:00:15
3000 #2 2010-11-09 09:00:00 09:00:15
3000 #2 2010-11-09 09:00:00 09:00:16
3000 #2 2010-11-09 09:00:00 09:00:16
3000 #2 2010-11-09 09:00:00 09:00:17
3000 #2 2010-11-09 09:00:00 09:00:18
3000 #2 2010-11-09 09:00:00 09:00:19
3000 #2 2010-11-09 09:00:00 09:00:19
3000 #2 2010-11-09 09:00:00 09:00:20
3000 #2 2010-11-09 09:00:00 09:00:21
3000 #2 2010-11-09 09:00:00 09:00:21
3000 #2 2010-11-09 09:00:00 09:00:22
3000 #2 2010-11-09 09:00:00 09:00:23
3000 #2 2010-11-09 09:00:00 09:00:24
3000 #2 2010-11-09 09:00:00 09:00:24
3000 #2 2010-11-09 09:00:00 09:00:25
3000 #2 2010-11-09 09:00:00 09:00:25
3000 #2 2010-11-09 09:00:00 09:00:26
3000 #2 2010-11-09 09:00:00 09:00:26
3000 #2 2010-11-09 09:00:00 09:00:27
3000 #2 2010-11-09 09:00:00 09:00:28
3000 #2 2010-11-09 09:00:00 09:00:29
3000 #2 2010-11-09 09:00:00 09:00:29
3000 #2 2010-11-09 09:00:00 09:00:30
3000 #2 2010-11-09 09:00:00 09:00:30
3000 #2 2010-11-09 09:00:00 09:00:31
3000 #2 2010-11-09 09:00:00 09:00:31
3000 #2 2010-11-09 09:00:00 09:00:32
3000 #2 2010-11-09 09:00:00 09:00:33
3000 #2 2010-11-09 09:00:00 09:00:33
3000 #2 2010-11-09 09:00:00 09:00:34
3000 #2 2010-11-09 09:00:00 09:00:35
3000 #2 2010-11-09 09:00:00 09:00:35
3000 #2 2010-11-09 09:00:00 09:00:36
3000 #2 2010-11-09 09:00:00 09:00:36
3000 #2 2010-11-09 09:00:00 09:00:37
3000 #2 2010-11-09 09:00:00 09:00:37
3000 #2 2010-11-09 09:00:00 09:00:38
3000 #2 2010-11-09 09:00:00 09:00:39
3000 #2 2010-11-09 09:00:00 09:00:40
3000 #2 2010-11-09 09:00:00 09:00:40
3000 #2 2010-11-09 09:00:00 09:00:41
3000 #2 2010-11-09 09:00:00 09:00:41
3000 #2 2010-11-09 09:00:00 09:00:42
3000 #2 2010-11-09 09:00:00 09:00:42
3000 #2 2010-11-09 09:00:00 09:00:43
3000 #2 2010-11-09 09:00:00 09:00:44
3000 #2 2010-11-09 09:00:00 09:00:45
3000 #2 2010-11-09 09:00:00 09:00:46
3000 #2 2010-11-09 09:00:00 09:00:46
3000 #2 2010-11-09 09:00:00 09:00:47
3000 #2 2010-11-09 09:00:00 09:00:47
3000 #2 2010-11-09 09:00:00 09:00:48
3000 #2 2010-11-09 09:00:00 09:00:48
3000 #2 2010-11-09 09:00:00 09:00:49
3000 #2 2010-11-09 09:00:00 09:00:49
3000 #2 2010-11-09 09:00:00 09:00:50
3000 #2 2010-11-09 09:00:00 09:00:51
3000 #2 2010-11-09 09:00:00 09:00:51
3000 #2 2010-11-09 09:00:00 09:00:52
3000 #2 2010-11-09 09:00:00 09:00:53
3000 #2 2010-11-09 09:00:00 09:00:54
3000 #2 2010-11-09 09:00:00 09:00:54
3000 #2 2010-11-09 09:00:00 09:00:55
3000 #2 2010-11-09 09:00:00 09:00:55
3000 #2 2010-11-09 09:00:00 09:00:56
3000 #2 2010-11-09 09:00:00 09:00:56
3000 #2 2010-11-09 09:00:00 09:00:57
3000 #2 2010-11-09 09:00:00 09:00:58
3000 #2 2010-11-09 09:00:00 09:00:59
3000 #2 2010-11-09 09:00:00 09:00:59
3000 #1 2010-11-09 09:00:00 09:01:00
3001 #2 2010-11-09 09:01:00 09:01:00
3001 #2 2010-11-09 09:01:00 09:01:01
3001 #2 2010-11-09 09:01:00 09:01:01
3001 #2 2010-11-09 09:01:00 09:01:02
3001 #2 2010-11-09 09:01:00 09:01:02
3001 #2 2010-11-09 09:01:00 09:01:03
3001 #2 2010-11-09 09:01:00 09:01:03
3001 #2 2010-11-09 09:01:00 09:01:04
3001 #2 2010-11-09 09:01:00 09:01:05
3001 #2 2010-11-09 09:01:00 09:01:06
3001 #2 2010-11-09 09:01:00 09:01:06
3001 #2 2010-11-09 09:01:00 09:01:07
3001 #2 2010-11-09 09:01:00 09:01:07
3001 #2 2010-11-09 09:01:00 09:01:08
3001 #2 2010-11-09 09:01:00 09:01:09
3001 #2 2010-11-09 09:01:00 09:01:09
上善若水,无欲则刚

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
0
UID
8209
积分
3268
帖子
413
主题
78
阅读权限
80
注册时间
2010-4-6
最后登录
2013-3-18
3#
发表于 2010-11-9 11:15:39 |只看该作者
我看不出错误,没试过你的程序,不过你重启一下TB是否可以?

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
5525
积分
1473
帖子
429
主题
93
阅读权限
60
注册时间
2009-9-22
最后登录
2022-5-23
4#
发表于 2010-11-9 13:34:24 |只看该作者
重启了,还是一样。
1分钟Bar大约执行80次。
上善若水,无欲则刚

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
5525
积分
1473
帖子
429
主题
93
阅读权限
60
注册时间
2009-9-22
最后登录
2022-5-23
5#
发表于 2010-11-9 13:50:06 |只看该作者
本帖最后由 efrog 于 2010-12-3 09:59 编辑

把程序改成这样还是不行!
Begin
        If (BarStatus==0) {SetGlobalVar(0,0);Return;}
       
        // 控制每个Bar仅执行一次
        If (CurrentBar>GetGlobalVar(0))
        {        SetGlobalVar(0,CurrentBar);
                If (BarStatus==2)
                {        FileAppend("C:\\Test6.Log",Text(CurrentBar)+" #2 "+DateToString(Date)+" "+TimeToString(Time)+" "+TimeToString(CurrentTime));
                }
                Else
                {        FileAppend("C:\\Test6.Log",Text(CurrentBar)+" #1 "+DateToString(Date)+" "+TimeToString(Time)+" "+TimeToString(CurrentTime));
                }
        }
End
上善若水,无欲则刚

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
5525
积分
1473
帖子
429
主题
93
阅读权限
60
注册时间
2009-9-22
最后登录
2022-5-23
6#
发表于 2010-11-9 13:51:33 |只看该作者
本帖最后由 efrog 于 2010-12-3 10:01 编辑

输出结果如下:
3023 #1 2010-11-09 13:53:00 13:53:58
3024 #1 2010-11-09 13:54:00 13:54:58
3025 #1 2010-11-09 13:55:00 13:55:58
3026 #1 2010-11-09 13:56:00 13:56:58
3027 #2 2010-11-09 13:57:00 13:56:58
3027 #2 2010-11-09 13:57:00 13:56:59

但是什么原因,我还是不清楚,很疑惑,请管理员解释。
Bar3027被执行了两次,而且都是在BarSatuts==2的情况下执行的。
上善若水,无欲则刚

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
0
UID
8209
积分
3268
帖子
413
主题
78
阅读权限
80
注册时间
2010-4-6
最后登录
2013-3-18
7#
发表于 2010-11-9 13:52:46 |只看该作者
改成这样就可以了:
  1. Begin
  2.         If (BarStatus==0) {
  3.                         SetGlobalVar(0,0);
  4.                         Return;
  5.                 }
  6.       
  7.         // 控制每个Bar仅执行一次
  8.         If (CurrentBar!=GetGlobalVar(0)) {        
  9.                         SetGlobalVar(0,CurrentBar);
  10.                         FileAppend("C:\\Test6.Log",Text(CurrentBar)+" " + Text(BarStatus)+ " "+DateToString(Date)+" "+TimeToString(Time)+" "+TimeToString(CurrentTime));
  11.         }
  12. End
复制代码

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
5525
积分
1473
帖子
429
主题
93
阅读权限
60
注册时间
2009-9-22
最后登录
2022-5-23
8#
发表于 2010-11-9 13:54:22 |只看该作者
还有问题,为什么BarSatuts有时为1,有时为2,程序在实时时应该始终工作在最后一个Bar啊?!
上善若水,无欲则刚

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
0
UID
8209
积分
3268
帖子
413
主题
78
阅读权限
80
注册时间
2010-4-6
最后登录
2013-3-18
9#
发表于 2010-11-9 13:59:43 |只看该作者
怎么有时为1,有时为2?我的输出是这样:
  1. 1 1 2010-11-09 10:01:00 13:58:40
  2. 2 1 2010-11-09 10:02:00 13:58:40
  3. 3 1 2010-11-09 10:03:00 13:58:40
  4. 4 1 2010-11-09 10:04:00 13:58:40
  5. 5 1 2010-11-09 10:05:00 13:58:40
  6. 6 1 2010-11-09 10:06:00 13:58:40
  7. 7 1 2010-11-09 10:07:00 13:58:40
  8. 8 1 2010-11-09 10:08:00 13:58:40
  9. 9 1 2010-11-09 10:09:00 13:58:40
  10. 10 1 2010-11-09 10:10:00 13:58:40
  11. 11 1 2010-11-09 10:11:00 13:58:40
  12. 12 1 2010-11-09 10:12:00 13:58:40
  13. 13 1 2010-11-09 10:13:00 13:58:40
  14. 14 1 2010-11-09 10:14:00 13:58:40
  15. 15 1 2010-11-09 10:30:00 13:58:40
  16. 16 1 2010-11-09 10:31:00 13:58:40
  17. 17 1 2010-11-09 10:32:00 13:58:40
  18. 18 1 2010-11-09 10:33:00 13:58:40
  19. 19 1 2010-11-09 10:34:00 13:58:40
  20. 20 1 2010-11-09 10:35:00 13:58:40
  21. 21 1 2010-11-09 10:36:00 13:58:40
  22. 22 1 2010-11-09 10:37:00 13:58:40
  23. 23 1 2010-11-09 10:38:00 13:58:40
  24. 24 1 2010-11-09 10:39:00 13:58:40
  25. 25 1 2010-11-09 10:40:00 13:58:40
  26. 26 1 2010-11-09 10:41:00 13:58:40
  27. 27 1 2010-11-09 10:42:00 13:58:40
  28. 28 1 2010-11-09 10:43:00 13:58:40
  29. 29 1 2010-11-09 10:44:00 13:58:40
  30. 30 1 2010-11-09 10:45:00 13:58:40
  31. 31 1 2010-11-09 10:46:00 13:58:40
  32. 32 1 2010-11-09 10:47:00 13:58:40
  33. 33 1 2010-11-09 10:48:00 13:58:40
  34. 34 1 2010-11-09 10:49:00 13:58:40
  35. 35 1 2010-11-09 10:50:00 13:58:40
  36. 36 1 2010-11-09 10:51:00 13:58:40
  37. 37 1 2010-11-09 10:52:00 13:58:40
  38. 38 1 2010-11-09 10:53:00 13:58:40
  39. 39 1 2010-11-09 10:54:00 13:58:40
  40. 40 1 2010-11-09 10:55:00 13:58:40
  41. 41 1 2010-11-09 10:56:00 13:58:40
  42. 42 1 2010-11-09 10:57:00 13:58:40
  43. 43 1 2010-11-09 10:58:00 13:58:40
  44. 44 1 2010-11-09 10:59:00 13:58:40
  45. 45 1 2010-11-09 11:00:00 13:58:40
  46. 46 1 2010-11-09 11:01:00 13:58:40
  47. 47 1 2010-11-09 11:02:00 13:58:40
  48. 48 1 2010-11-09 11:03:00 13:58:40
  49. 49 1 2010-11-09 11:04:00 13:58:40
  50. 50 1 2010-11-09 11:05:00 13:58:40
  51. 51 1 2010-11-09 11:06:00 13:58:40
  52. 52 1 2010-11-09 11:07:00 13:58:40
  53. 53 1 2010-11-09 11:08:00 13:58:40
  54. 54 1 2010-11-09 11:09:00 13:58:40
  55. 55 1 2010-11-09 11:10:00 13:58:40
  56. 56 1 2010-11-09 11:11:00 13:58:40
  57. 57 1 2010-11-09 11:12:00 13:58:40
  58. 58 1 2010-11-09 11:13:00 13:58:40
  59. 59 1 2010-11-09 11:14:00 13:58:40
  60. 60 1 2010-11-09 11:15:00 13:58:40
  61. 61 1 2010-11-09 11:16:00 13:58:40
  62. 62 1 2010-11-09 11:17:00 13:58:40
  63. 63 1 2010-11-09 11:18:00 13:58:40
  64. 64 1 2010-11-09 11:19:00 13:58:40
  65. 65 1 2010-11-09 11:20:00 13:58:40
  66. 66 1 2010-11-09 11:21:00 13:58:40
  67. 67 1 2010-11-09 11:22:00 13:58:40
  68. 68 1 2010-11-09 11:23:00 13:58:40
  69. 69 1 2010-11-09 11:24:00 13:58:40
  70. 70 1 2010-11-09 11:25:00 13:58:40
  71. 71 1 2010-11-09 11:26:00 13:58:40
  72. 72 1 2010-11-09 11:27:00 13:58:40
  73. 73 1 2010-11-09 11:28:00 13:58:40
  74. 74 1 2010-11-09 11:29:00 13:58:40
  75. 75 1 2010-11-09 13:30:00 13:58:40
  76. 76 1 2010-11-09 13:31:00 13:58:40
  77. 77 1 2010-11-09 13:32:00 13:58:40
  78. 78 1 2010-11-09 13:33:00 13:58:40
  79. 79 1 2010-11-09 13:34:00 13:58:40
  80. 80 1 2010-11-09 13:35:00 13:58:40
  81. 81 1 2010-11-09 13:36:00 13:58:40
  82. 82 1 2010-11-09 13:37:00 13:58:40
  83. 83 1 2010-11-09 13:38:00 13:58:40
  84. 84 1 2010-11-09 13:39:00 13:58:40
  85. 85 1 2010-11-09 13:40:00 13:58:40
  86. 86 1 2010-11-09 13:41:00 13:58:40
  87. 87 1 2010-11-09 13:42:00 13:58:40
  88. 88 1 2010-11-09 13:43:00 13:58:40
  89. 89 1 2010-11-09 13:44:00 13:58:40
  90. 90 1 2010-11-09 13:45:00 13:58:40
  91. 91 1 2010-11-09 13:46:00 13:58:40
  92. 92 1 2010-11-09 13:47:00 13:58:40
  93. 93 1 2010-11-09 13:48:00 13:58:40
  94. 94 1 2010-11-09 13:49:00 13:58:40
  95. 95 1 2010-11-09 13:50:00 13:58:40
  96. 96 1 2010-11-09 13:51:00 13:58:40
  97. 97 1 2010-11-09 13:52:00 13:58:40
  98. 98 1 2010-11-09 13:53:00 13:58:40
  99. 99 1 2010-11-09 13:54:00 13:58:40
  100. 100 1 2010-11-09 13:55:00 13:58:40
  101. 101 1 2010-11-09 13:56:00 13:58:40
  102. 102 1 2010-11-09 13:57:00 13:58:40
  103. 103 1 2010-11-09 13:58:00 13:58:40
  104. 104 2 2010-11-09 13:59:00 13:58:40
复制代码

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
0
UID
8209
积分
3268
帖子
413
主题
78
阅读权限
80
注册时间
2010-4-6
最后登录
2013-3-18
10#
发表于 2010-11-9 14:02:13 |只看该作者
我还真是不清楚为什么你原来的语句会有问题。

使用道具 举报

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

bottom

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

GMT+8, 2024-5-21 18:32

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部