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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件金字塔软件问题提交 → [求助]用VARIABLE定义的变量和直接赋值定义的变量有何不同?

   

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


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

主题:[求助]用VARIABLE定义的变量和直接赋值定义的变量有何不同?

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


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

readonly  正解 ,2者并没有多少区别

 

因为在逐K线模式下,执行每根K线时,普通变量并没有事先赋值为0 (教程和实际效果不一致)

唯一的区别是variable定义的变量在第一根K线图会初始化

普通变量用if barpos=1  then 初始化的话,他们就没区别了

[此贴子已经被作者于2012-11-28 7:07:14编辑过]

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


加好友 发短信
等级:新手上路 帖子:39 积分:215 威望:0 精华:0 注册:2012/9/18 18:02:08
  发帖心情 Post By:2012/11/28 13:29:26 [只看该作者]

  阿火  一锤定音 受益匪浅
 


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


加好友 发短信
等级:新手上路 帖子:39 积分:215 威望:0 精华:0 注册:2012/9/18 18:02:08
  发帖心情 Post By:2012/11/29 0:39:51 [只看该作者]

我觉得 readonly 和jinze的观点 说的是不同问题,并不矛盾,
很显然 经过验证,variable:n=0;
if barpos=1 then m:=0;
m 和n 的运算结果是一样,
                                                                                                                                        所以一个普通变量 经过if barpos=1  then处理后,等同于一个全局变量
但是   普通变量n则不是,执行每根K线,都会先赋值为0“ 这个观点并没有错,因为普通变量如果不经过if barpos=1  then处理,则每根K线运行时要重新初始化赋值
更重要的是,不经过处理的每根K线都会初始化的普通变量非常关键,可以防止同一根K下线因为大量TICK数据而触发的重复交易,从而防止重复开平仓。


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


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2012/11/29 9:06:20 [只看该作者]

图片点击可在新窗口打开查看楼上理解的正确


金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

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


加好友 发短信
等级:新手上路 帖子:39 积分:215 威望:0 精华:0 注册:2012/9/18 18:02:08
  发帖心情 Post By:2012/11/29 23:18:50 [只看该作者]

  理解万岁

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


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

以下是引用timash在2012-11-29 0:39:51的发言:
我觉得 readonly 和jinze的观点 说的是不同问题,并不矛盾,
很显然 经过验证,variable:n=0;
if barpos=1 then m:=0;
m 和n 的运算结果是一样,
                                                                                                                                        所以一个普通变量 经过if barpos=1  then处理后,等同于一个全局变量
但是   普通变量n则不是,执行每根K线,都会先赋值为0“ 这个观点并没有错,因为普通变量如果不经过if barpos=1  then处理,则每根K线运行时要重新初始化赋值
更重要的是,不经过处理的每根K线都会初始化的普通变量非常关键,可以防止同一根K下线因为大量TICK数据而触发的重复交易,从而防止重复开平仓。

 

 

楼主理解不对

1,每一个tick都是公式都是重新刷新计算。(从第一根K线开始重新计算) ,图表交易,一根K线同一指令下单一次,跟普通变量没关系

2,普通变量n执行每根K线并不是先赋值为0    ,跟全局变量一样,也是被改变的时候,普通变量的值才会改变

   举个例子:

if barpos<>10 then n:=0;
aa:n;
n:=-1;

 

以上代码:如果n每根K线都事先赋值为0的话,那么,aa的结果会一直为0    。但是,事实并非如此,在第10根时,aa=-1


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


加好友 发短信
等级:新手上路 帖子:10 积分:63 威望:0 精华:0 注册:2012/12/1 13:48:23
  发帖心情 Post By:2012/12/1 16:02:19 [只看该作者]

麻烦哪位高手帮我看看这段代码:
VARIABLE: A:=0;
A:=IF(BARPOS=1,C,REF(A,1));
AA:A;
在逐K线下运行结果也太怪异了

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


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

这是博易的用法

金字塔没有这种用法,没有被重新赋值的话,全局变量A就会保持值不变,无需用REF(A,1)

 

改为以下这样:

variable:a=0;

if barpos=1 then a:=c;

aa:a;


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


加好友 发短信
等级:新手上路 帖子:39 积分:215 威望:0 精华:0 注册:2012/9/18 18:02:08
  发帖心情 Post By:2012/12/3 13:28:02 [只看该作者]

  A:=0;
DEBUGFILE('D:\test普通变量运行.txt','条件前A=:%.0f',A);

IF ISLASTBAR THEN BEGIN
 IF A=0 THEN
 BEGIN
  A:=1;
  DEBUGFILE('D:\test普通变量运行.txt','条件后A=:%.0f',A);
  END
 END
2012-12-03 13:26:29.862    条件前A=:0
2012-12-03 13:26:29.862    条件后A=:1
2012-12-03 13:26:30.596    条件前A=:0
2012-12-03 13:26:30.596    条件后A=:1
2012-12-03 13:26:32.096    条件前A=:0
2012-12-03 13:26:32.096    条件后A=:1
2012-12-03 13:26:33.440    条件前A=:0
2012-12-03 13:26:33.440    条件后A=:1
2012-12-03 13:26:33.596    条件前A=:0
2012-12-03 13:26:33.596    条件后A=:1
2012-12-03 13:26:35.096    条件前A=:0
2012-12-03 13:26:35.096    条件后A=:1
2012-12-03 13:26:36.596    条件前A=:0
2012-12-03 13:26:36.596    条件后A=:1
2012-12-03 13:26:38.096    条件前A=:0
2012-12-03 13:26:38.096    条件后A=:1
2012-12-03 13:26:39.596    条件前A=:0
2012-12-03 13:26:39.596    条件后A=:1
2012-12-03 13:26:41.096    条件前A=:0
2012-12-03 13:26:41.096    条件后A=:1
2012-12-03 13:26:42.596    条件前A=:0
2012-12-03 13:26:42.596    条件后A=:1
2012-12-03 13:26:51.596    条件前A=:0
2012-12-03 13:26:51.596    条件后A=:1
2012-12-03 13:26:53.096    条件前A=:0
2012-12-03 13:26:53.096    条件后A=:1
2012-12-03 13:26:56.096    条件前A=:0
2012-12-03 13:26:56.096    条件后A=:1

Variable: A=0;
DEBUGFILE('D:\test全局变量运行.txt','条件前A=:%.0f',A);
IF ISLASTBAR THEN BEGIN
 IF A=0 THEN
 BEGIN
  A:=1;
  DEBUGFILE('D:\test全局变量运行.txt','条件后A=:%.0f',A);
 END
END
2012-12-03 13:27:44.096    条件前A=:0
2012-12-03 13:27:44.096    条件后A=:1
2012-12-03 13:27:45.596    条件前A=:0
2012-12-03 13:27:45.596    条件后A=:1
2012-12-03 13:27:47.096    条件前A=:0
2012-12-03 13:27:47.096    条件后A=:1
2012-12-03 13:27:48.596    条件前A=:0
2012-12-03 13:27:48.596    条件后A=:1
2012-12-03 13:27:50.096    条件前A=:0
2012-12-03 13:27:50.096    条件后A=:1
2012-12-03 13:27:50.690    条件前A=:0
2012-12-03 13:27:50.690    条件后A=:1
2012-12-03 13:27:51.596    条件前A=:0
2012-12-03 13:27:51.596    条件后A=:1
2012-12-03 13:27:53.096    条件前A=:0
2012-12-03 13:27:53.096    条件后A=:1

[此贴子已经被作者于2012-12-3 13:28:42编辑过]

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


加好友 发短信
等级:新手上路 帖子:39 积分:215 威望:0 精华:0 注册:2012/9/18 18:02:08
  发帖心情 Post By:2012/12/3 13:37:26 [只看该作者]

 普通变量

 A:=0;
DEBUGFILE('D:\test普通变量运行.txt','条件前A=:%.0f',A);

IF ISLASTBAR THEN BEGIN
 IF A=0 THEN
 BEGIN
  A:=1;
  DEBUGFILE('D:\test普通变量运行.txt','条件后A=:%.0f',A);
  END
 END
2012-12-03 13:35:51.596    普通变量 条件后A=:1
2012-12-03 13:35:53.096    普通变量条件前A=:0
2012-12-03 13:35:53.096    普通变量 条件后A=:1
2012-12-03 13:35:54.596    普通变量条件前A=:0
2012-12-03 13:35:54.596    普通变量 条件后A=:1
2012-12-03 13:35:56.096    普通变量条件前A=:0
2012-12-03 13:35:56.096    普通变量 条件后A=:1
2012-12-03 13:35:57.596    普通变量条件前A=:0
2012-12-03 13:35:57.596    普通变量 条件后A=:1
2012-12-03 13:35:59.096    普通变量条件前A=:0
2012-12-03 13:35:59.096    普通变量 条件后A=:1
2012-12-03 13:36:00.596    普通变量条件前A=:0
2012-12-03 13:36:00.596    普通变量 条件后A=:1

全局变量

Variable: A=0;
DEBUGFILE('D:\test全局变量运行.txt','条件前A=:%.0f',A);
IF ISLASTBAR THEN BEGIN
 IF A=0 THEN
 BEGIN
  A:=1;
  DEBUGFILE('D:\test全局变量运行.txt','条件后A=:%.0f',A);
 END
END

2012-12-03 13:34:54.596    全局变量 条件前A=:0
2012-12-03 13:34:54.596    全局变量 条件后A=:1
2012-12-03 13:34:56.096    全局变量 条件前A=:0
2012-12-03 13:34:56.096    全局变量 条件后A=:1
2012-12-03 13:34:57.596    全局变量 条件前A=:0
2012-12-03 13:34:57.596    全局变量 条件后A=:1
2012-12-03 13:34:59.096    全局变量 条件前A=:0
2012-12-03 13:34:59.096    全局变量 条件后A=:1
2012-12-03 13:35:00.596    全局变量 条件前A=:0
2012-12-03 13:35:00.596    全局变量 条件后A=:1
2012-12-03 13:35:02.096    全局变量 条件前A=:0
2012-12-03 13:35:02.096    全局变量 条件后A=:1
2012-12-03 13:35:03.596    全局变量 条件前A=:0
2012-12-03 13:35:03.596    全局变量 条件后A=:1
2012-12-03 13:35:06.596    全局变量 条件前A=:0
2012-12-03 13:35:06.596    全局变量 条件后A=:1

 回到顶部
总数 41 上一页 1 2 3 4 5 下一页