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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 序列变量和全局变量的问题

   

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


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

主题:序列变量和全局变量的问题

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


加好友 发短信
等级:论坛游侠 帖子:141 积分:0 威望:0 精华:0 注册:2017/12/22 15:00:29
序列变量和全局变量的问题  发帖心情 Post By:2018/12/13 22:40:37    Post IP:180.169.30.6[只看该作者]

金字塔有没有序列变量和全局变量?怎么声明?没有的话如何实现保存变量数据?不被每次调用重置?

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/12/14 9:28:55    Post IP:180.169.30.6[只看该作者]


看下这个帖子下的说明。
 
http://www.weistock.com/WeisoftHelp/index.html?zbgs003.htm


金字塔K线相关的行情相关的数据都是序列数据,比如开高低收成交量成交额等都是的。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
qwert
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:141 积分:0 威望:0 精华:0 注册:2017/12/22 15:00:29
  发帖心情 Post By:2018/12/17 20:09:22    Post IP:175.153.161.118[只看该作者]

有几个问题,Q:=10这种变量是在单K内?那为何回复说用图表按TICK刷新让代码每个TICK都运行一遍,以触发条件呢?
每个TICK都运行一遍的话,Q在K线内也不能保存了,而是每个TCIK都会初始化重置Q值吧。
VARIABLE这种变量,指标一次刷新过程中起作用,指标刷新是个什么意思?何时会刷新指标?
帮助里有好几处笔误,Vraiable去掉V变为riable?有种声明吗?
目前我想要的是只作用于一根K线内的变量,就是这个K内不论多少TICK过来都不会初始化其值,比如我用来检测开平仓的次数,
这应该用什么变量声明?

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


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2018/12/18 8:52:36    Post IP:180.169.30.6[只看该作者]

if barpos=1 then n:=0;

等价于variable:n=0;

 

然后最好自己理解下这个全局变量效果


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


加好友 发短信
等级:论坛游侠 帖子:141 积分:0 威望:0 精华:0 注册:2017/12/22 15:00:29
  发帖心情 Post By:2018/12/18 10:33:59    Post IP:218.14.122.250[只看该作者]

你说的就是帮助里的例子,我怀疑Q:=10;不是保存在一个K内而是一个TICK内,如果是K内那就够用了,我要记录保存K线内的开平方向和次数,新K来时,需要重置这些数据,而不是全局变量那样不能重置,或者检测到新BAR时首先将全局变量重置清零,也可以实现,只是不知道怎么判断当前K是新K,不能用barpos,或者barstatus这种,因为如果用这种,K线内的所有TICK过来都是成立的,就会不断重置清零,达不到效果,我要在新bar第一个TICK的时候只重置一次。

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/12/18 11:12:55    Post IP:180.169.30.6[只看该作者]

 1.“有几个问题,Q:=10这种变量是在单K内?那为何回复说用图表按TICK刷新让代码每个TICK都运行一遍,以触发条件呢?
每个TICK都运行一遍的话,Q在K线内也不能保存了,而是每个TCIK都会初始化重置Q值吧。

是的,其实这种固定值刷不刷新都无所谓的。但是如果是其他需要计算得出结果的变量,tick刷新也会进行刷新,最终结果是本根K结束时候刷新出来的数值。

2.全局变量是可以重新赋值的,否则全局变量不就毫无意义了么。

3.你想要实现的需求,在图表上并不推荐使用。一般后台才会使用超全局变量。





命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
qwert
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:141 积分:0 威望:0 精华:0 注册:2017/12/22 15:00:29
  发帖心情 Post By:2018/12/18 20:24:35    Post IP:218.14.122.106[只看该作者]

固定值刷不刷新都无所谓?我不明白,你说的K线结束会刷新出计算结果,那就是要用全局变量才能实现啊,因为它才能保存数据啊,简单用Q:=10是不行的吧,因为每次运行都会初始化啊。VARIABLE这种变量,指标一次刷新过程中起作用,指标刷新是个什么意思?何时会刷新指标?帮助里有好几处笔误,Vraiable去掉V变为riable?有种声明吗?这两个问题再回答一下吧,我想到了一个方法解决我的问题,就是用K线不同的标志比如TIME或者DATE这种序列变量,它在K内就是不变的,但是K线变为新K就会改变,这样我在新K到来时用这个标志检测后才给全局变量初始化,接着到来的TICK的TIME和DATE标志因为相同就不会再把全局变量初始化了,可是我看了下好像没有这两个标志,你看还有没有类似的标志变量?
另外自己定义序列变量应该怎么声明?

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/12/19 9:46:26    Post IP:180.169.30.6[只看该作者]

 1.指标刷新就是分笔来一笔的时候从参与计算开始的第一个K开始把指标公式在每个K上运行一次,是一个从历史到现在的计算过程。

2.简单说VARIABLE的有效范围是跨越多个K的,而普通变量单独一个K内才有效。你可以定义一个全局变量并把他输出一下,你会看到它的值始终保持上次赋值之后的值。
VARIABLE:test:=0;
if mod(BARPOS,10)=0 then test:=BARPOS;//每十个K test赋值一次,没到10个之前保持上次的值。
q:test;//定义q只是方便输出test的值

然后你在把test换成普通变量:
test:=0;
if mod(BARPOS,10)=0 then test:=BARPOS;
q:test;
 你看下输出的差别,非常明显的。
简单用代码看下全局变量的输出值理解下怎么用的就行了。

3.riable是笔误吧,没有这种定义方式的。



命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
qwert
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:141 积分:0 威望:0 精华:0 注册:2017/12/22 15:00:29
  发帖心情 Post By:2018/12/19 16:26:37    Post IP:122.225.58.67[只看该作者]

我理解你写的,就是普通变量在程序重新运算后都会初始化,达不到保存的目的,但是我认为普通变量如test:=0;这种不是在k内有效,而是在TICK内有效,不能实现在K内保存数据,你说的是按照静态历史图表来看问题的,实际上图表交易的时候,K线是动态的,只有结束了才确定,在历史图K线上只会运行一次,实际交易K线内是按照固定轮询去执行,除非是K线走完才发单回测也按照收盘发单才会一致。因为固定轮询下会漏单,用持仓同步又会有延迟,造成实际交易和图表信号不一致,所以我要盘中就发单,就必须用TICK去触发,这样图表用盘中发单的信号和实际交易才一致,回测才有意义,不然怎么去检验策略可行不可行呢?
另外,到底有没有TIME和DATE这种能标志K线的序列变量?自定义序列变量又是怎么定义的?

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/12/19 17:03:08    Post IP:180.169.30.6[只看该作者]

 BARPOS函数, 表示当前K线序号,每个K都是不一样的。
而通常也就是利用BARPOS 以及TIME(日线以下) date(日线) 配合超全局变量来实现你前面说的:

“我要在新bar第一个TICK的时候只重置一次”。 这个稍迟点给你一段代码参考下。

我不太明白你想要的所谓自定义序列变量是怎样的,但是金字塔下所有变量都可以说是序列变量,因为每个变量在每个K上都有对应的值。这就是一组序列的形式了。如果你是要定义数组的话,variable就可以定义的,你看下它的函数说明里面的例子。




命数如织,当如磐石。
 回到顶部
总数 15 1 2 下一页