以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  [求助]关于variable的问题  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=3549)

--  作者:z7c9
--  发布时间:2010/10/28 22:35:52
--  [求助]关于variable的问题

对于类似这样的variable变量:

variable:stopprice=0;

 

1.如果要variable做全局变量,就必须运行于逐周期模式,对么?

 

2.如果在后台策略中使用variable做全局变量,比如有一个止损价变量stopprice。开仓后立刻计算stopprice,即stopprice已有值(比如26000)。而此时停止了预警,那么下次启动预警时,这个variable的值是重新初始化成0了还是保留上次的26000?


--  作者:董小球
--  发布时间:2010/10/29 9:31:14
--  

1、都可以;

2、会重新计算;如果想用不重新计算的,要使用 工具》》数据》》全局变量里面设置的变量,然后用 EXTGBDATASET”和“ EXTGBDATA ”函数的调用

你可以去下精华贴里我发的 问题大全里 搜全局变量来学习下


--  作者:z7c9
--  发布时间:2010/10/29 11:27:06
--  
以下是引用董小球在2010-10-29 9:31:14的发言:

1、都可以;

2、会重新计算;如果想用不重新计算的,要使用 工具》》数据》》全局变量里面设置的变量,然后用 EXTGBDATASET”和“ EXTGBDATA ”函数的调用

你可以去下精华贴里我发的 问题大全里 搜全局变量来学习下

我测试的结果是,variable在后台逐周期根本不起作用,记不住价格,怎么回事。


--  作者:admin
--  发布时间:2010/10/29 12:51:13
--  

如果你希望是软件退出后也能记住价格,请使用EXTGBDATASET

variable的作用是在第一个周期初始化,在后面的运行周期保持不变。

建议楼主认真学会金字塔图表调试技巧,会自己解决很多问题


--  作者:z7c9
--  发布时间:2010/10/29 13:00:51
--  
以下是引用admin在2010-10-29 12:51:13的发言:

如果你希望是软件退出后也能记住价格,请使用EXTGBDATASET

variable的作用是在第一个周期初始化,在后面的运行周期保持不变。

建议楼主认真学会金字塔图表调试技巧,会自己解决很多问题

variable保持不变?比如

vairalbe:n=0;
n:=1;

if holding>0 then n:=2

 

假如第一个周期上holding=0;

第二个周期上holding>0;

那n还等于1?

 

在序列模式n应该等于1,而逐周期模式应该等于2吧?


--  作者:admin
--  发布时间:2010/10/29 13:03:17
--  

holding只能在逐周期模式执行的函数

 

vairalbe:n=0;
n:=1;

你这么设等于每个周期都初始化赋值为1,无法实现全局变量的作用

 

vairalbe:n=1;

if holding>0 then n:=2
这样改才对
[此贴子已经被作者于2010-10-29 13:03:38编辑过]

--  作者:z7c9
--  发布时间:2010/10/29 13:26:36
--  

这段代码在序列模式下可以输出log.txt,而在逐周期模式下必须注释掉n:=1才能输出log.txt文件。为什么?

variable:n=0;
if n=0 then begin
 debugfile(\'c:/log.txt\',stklabel+\'的n为%.0f\',n);
 n:=1;
end;

 

 

[此贴子已经被作者于2010-10-29 13:35:25编辑过]

--  作者:admin
--  发布时间:2010/10/29 15:10:53
--  

工作原理如下:

逐周期模式下,由于debugfile在最后一个周期才有效的函数,故最后一个周期的N=1,导致最后一个周期debugfile没有被执行

序列模式下,variable是没有作用的,故与普通序列变量一样,序列模式下金字塔是执行一个序列,故会在第一次解析公式时就去执行debugfile,因为执行到此是,N已经被解析成从第一个BAR到最后一个BAR的序列。

 


--  作者:z7c9
--  发布时间:2010/10/29 15:18:35
--  
以下是引用admin在2010-10-29 15:10:53的发言:

工作原理如下:

逐周期模式下,由于debugfile在最后一个周期才有效的函数,故最后一个周期的N=1,导致最后一个周期debugfile没有被执行

序列模式下,variable是没有作用的,故与普通序列变量一样,序列模式下金字塔是执行一个序列,故会在第一次解析公式时就去执行debugfile,因为执行到此是,N已经被解析成从第一个BAR到最后一个BAR的序列。

 

序列是什么含义?是数组么?


--  作者:fly
--  发布时间:2010/10/29 15:49:40
--  

模式说明 http://www.weistock.com/RunMode.htm