欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件金字塔软件问题提交 → 对新逐K模式的困惑

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有5764人关注过本帖树形打印复制链接

主题:对新逐K模式的困惑

帅哥哟,离线,有人找我吗?
无极无名
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:273 积分:365 威望:0 精华:1 注册:2011/4/13 11:57:13
对新逐K模式的困惑  发帖心情 Post By:2012/4/17 16:28:23 [只看该作者]

采用刷新最后一根K线的逐K模式,搞不太懂。有如下代码测试,来提出我的问题。

 

IF TIME=OPENTIME(1)+60 THEN //开盘第一分钟初始化X、Y//
 BEGIN
  X:=0;
  Y:=0;
 END

 

IF ISLASTBAR THEN
 BEGIN
  X:=X+1;
 END

 

IF NOT(ISLASTBAR) THEN
 BEGIN
  Y:=Y+1;
 END

 

XX:X,LINETHICK0;
YY:Y,LINETHICK0;

 

在1分钟周期,逐K模式下,
 1、XX输出是(0,0,0......0,1)这样一个序列,每一分钟一个值;
 2、YY输出的是(1,2,3.......269,269)这样一个序列,每一分钟一个值;
这个不难理解。

 

但是改成只刷新最后一根K线模式之后,奇怪的事情发生了。
1、XX每分钟输出(1-116),数字可能不准,因为太快,我是目测。
   但是可以明白大致每秒刷新两次,每刷新一次就迭代计算一次,直到下一分钟,又从1开始迭代计算,反复循环。
2、YY输出的依然是(1,2,3.......269,269)这样一个序列,每一分钟一个值;


我的问题是:
1、两种模式下,XX的输出为何发生如上变化?
2、两种模式下,YY的输出为何是一样的。我以为,因为只刷新最后一根K线的情况下,
   Y:=Y+1应该永远得不到执行(因为该句在非最后一个周期得到执行的控制语句内),因此在盘中,

   从加载公式那一刻起,YY应该始终等于0,而实际情况并非如此,因此我不能理解。


 回到顶部
帅哥哟,离线,有人找我吗?
rushtaotao
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 czt
等级:蜘蛛侠 帖子:1445 积分:6114 威望:0 精华:3 注册:2012/1/16 10:31:19
  发帖心情 Post By:2012/4/17 16:29:03 [只看该作者]

客服稍后回复

 回到顶部
帅哥哟,离线,有人找我吗?
阿火
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 原leevolvo
等级:版主 帖子:2160 积分:10563 威望:0 精华:11 注册:2010/11/3 11:21:19
  发帖心情 Post By:2012/4/17 19:11:51 [只看该作者]

Y的累加条件是not(islastbar) 所以,刷新最后一根K线时Y是不累加的。就一直为269了

X的累加条件是最后一根K线,每执行一次就累加一次,60秒执行120次左右呀。

很容易理解

 

 

当然,个人觉得x:=x+1; 的取值结果应该一直为1才符合本意。跟老大反馈一下

[此贴子已经被作者于2012-4-17 19:14:27编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
无极无名
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:273 积分:365 威望:0 精华:1 注册:2011/4/13 11:57:13
  发帖心情 Post By:2012/4/17 20:18:39 [只看该作者]

以下是引用阿火在2012-4-17 19:11:51的发言:

Y的累加条件是not(islastbar) 所以,刷新最后一根K线时Y是不累加的。就一直为269了

X的累加条件是最后一根K线,每执行一次就累加一次,60秒执行120次左右呀。

很容易理解

 

 

当然,个人觉得x:=x+1; 的取值结果应该一直为1才符合本意。跟老大反馈一下

 

是的,在只刷最后一根K线情况下,Y应该是不累加的,但是实际还是累加了,这是我的困惑。

另外,对于X:=X+1;每刷新一次就执行一次,的确不是本意,本意是每新增一个周期执行一次。

[此贴子已经被作者于2012-4-17 19:14:27编辑过]


 回到顶部
帅哥哟,离线,有人找我吗?
阿火
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 原leevolvo
等级:版主 帖子:2160 积分:10563 威望:0 精华:11 注册:2010/11/3 11:21:19
  发帖心情 Post By:2012/4/17 21:18:43 [只看该作者]

在只刷最后一根K线情况下,Y应该是不累加的,但是实际还是累加了,这是我的困惑。

 

实际也没有累加啊。一直都是269呀。

在刚加载或者K线走完瞬间,也是从第一根K线开始执行的。执行完毕后才只执行最后一根,所以Y是从1开始一直到269,然后一直都是269,直到K线走完重新计算

[此贴子已经被作者于2012-4-17 21:20:17编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
无极无名
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:273 积分:365 威望:0 精华:1 注册:2011/4/13 11:57:13
  发帖心情 Post By:2012/4/17 21:57:24 [只看该作者]

我今天在盘中看到,在只刷新最后一根K线情况下,Y还是在累加,直到倒数第二个周期等于269,并不是恒定的等于269。

 

按道理,假如我是开盘第81分钟(之前的历史有效数据忽略)加载公式,那么公式完整地从第一根执行到第81根K线,除掉此时的最后一根即第81根,Y:=Y+1被执行了80次,此后由于始终只刷新最后一根K线,那么Y:=Y+1应该始终得不到执行,所以Y应该恒定等于80。但我今天盘中看到的不是这样,每过一个周期,Y依然累加了一次。


 回到顶部
帅哥哟,离线,有人找我吗?
阿火
  7楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 原leevolvo
等级:版主 帖子:2160 积分:10563 威望:0 精华:11 注册:2010/11/3 11:21:19
  发帖心情 Post By:2012/4/17 22:03:46 [只看该作者]

刚才不是说了嘛,K线走完瞬间是从头到尾重新执行呀

你去好好了解一下执行过程

[此贴子已经被作者于2012-4-17 22:16:46编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
无极无名
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:273 积分:365 威望:0 精华:1 注册:2011/4/13 11:57:13
  发帖心情 Post By:2012/4/17 22:25:00 [只看该作者]

仅刷最后一根K线,当选中逐K线计算模式,并勾选本选项,在图表上加载本公式。当客户端接收到最新一笔行情数据后,在历史 K线上不再重新执行本公式,而只是在最后一根K线上重新计算一次公式(本质是:只在第一次加载公式时在每根历史K线上完整的计算一遍公式,其后就只在最后一根K线上做完整计算了,历史K线上产生的信号一直保留不再随行情更新而变化。)。通过这种方式提高执行效率,避免当行情更新时系统在每根历史K线上都需要做大量重复计算而消耗CPU处理时间。

 

 

以上是对仅刷新最后一根K线模式的标准说明,只说在第一次加载公式时才从头到尾每根K线都计算公式,并没有看出“在刚加载或者K线走完瞬间,也是从第一根K线开始执行的“(阿火语)再者,如果每次K线走完瞬间,还是要从头到尾每根K线计算公式,那这也不是只刷新最后一根呀。

 

当然,实际情况可能是阿火所说的那样。因为无论是否勾选只刷新最后一根K线模式,我测试,Y值的执行计算没有区别。或许是我看花了眼,明天再看看。

[此贴子已经被作者于2012-4-17 22:28:39编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
admin
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2012/4/18 1:06:03 [只看该作者]

以下是引用阿火在2012-4-17 19:11:51的发言:

Y的累加条件是not(islastbar) 所以,刷新最后一根K线时Y是不累加的。就一直为269了

X的累加条件是最后一根K线,每执行一次就累加一次,60秒执行120次左右呀。

很容易理解

 

 

当然,个人觉得x:=x+1; 的取值结果应该一直为1才符合本意。跟老大反馈一下

[此贴子已经被作者于2012-4-17 19:14:27编辑过]

 

没看出来X这个变量有什么问题


 回到顶部
帅哥哟,离线,有人找我吗?
admin
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:7302 积分:32559 威望:1000 精华:45 注册:2003/12/30 16:34:32
  发帖心情 Post By:2012/4/18 1:32:15 [只看该作者]

IF TIME=OPENTIME(1)+60 THEN //开盘第一分钟初始化X、Y//
 BEGIN
  X:=0;
  Y:=0;
  msgout(1,'ddd');
 END

 

IF ISLASTBAR THEN
 BEGIN
  X:=X+1;
 END

 

随便加个msgout函数调试一下便知,你之前的IF语句根本就没有满足过条件而去初始化,对于没有初始化的变量,金字塔会默认变成GLOBALVARIABLE超全局变量来进行处理


 回到顶部
总数 13 1 2 下一页