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


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

   

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


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

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

帅哥哟,离线,有人找我吗?
阿火
  1楼 | 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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
阿火
  2楼 | 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


 回到顶部
帅哥哟,离线,有人找我吗?
阿火
  3楼 | 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;


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


加好友 发短信 原leevolvo
等级:版主 帖子:2160 积分:10563 威望:0 精华:11 注册:2010/11/3 11:21:19
  发帖心情 Post By:2012/12/6 10:40:33 [显示全部帖子]

这个就是了呀

variable:a=0;

if barpos=1 or cond1 or cond2 then a:=c;//某种条件下(barpos=1 或者cond1 或者cond2)改变a的值,否则保留

aa:a;


 回到顶部