以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  函数定义  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=78160)

--  作者:germcn
--  发布时间:2015/4/30 11:22:52
--  函数定义
怎么函数定义  只会初始化一遍
--  作者:pyd
--  发布时间:2015/4/30 11:25:20
--  

具体是什么情况?代码贴下


--  作者:germcn
--  发布时间:2015/4/30 11:33:06
--  
VARIABLE:mt=1;

if mt>1 then begin
  公式...
end;

公式 ...
mt:=mt+1;





这么写是否 
if mt>1 then begin
  公式...
end
永远不会被执行到,因为他每次都要被初始化为1




如果是这情况  如果写代码 mt初始化后,不会再被初始化 


[此贴子已经被作者于2015/4/30 11:33:35编辑过]

--  作者:qq代人发帖
--  发布时间:2015/4/30 13:52:39
--  

逐K线计算情况下:mt不会每次都初始化的 if语句里面的mt>1时公式可以被执行

例如k线图上第一根k上公式运行一遍结束时mt=2,第二根就满足mt>1公式就执行了。后面k线mt一直累加,mt都满足大于1,公式都被执行。


--  作者:netfox
--  发布时间:2015/4/30 15:13:55
--  
以下是引用germcn在2015/4/30 11:33:06的发言:
VARIABLE:mt=1;

if mt>1 then begin
  公式...
end;

公式 ...
mt:=mt+1;





这么写是否 
if mt>1 then begin
  公式...
end
永远不会被执行到,因为他每次都要被初始化为1




如果是这情况  如果写代码 mt初始化后,不会再被初始化 


[此贴子已经被作者于2015/4/30 11:33:35编辑过]

 

加一句  if closetime(1) then mt:=1;

 

弄一个合适时间初始化一次, 全局变量是全局,每日初始化是每日。


--  作者:germcn
--  发布时间:2015/4/30 15:25:25
--  
我是后台的序列交易方式  也不会每次被初始化吗
--  作者:germcn
--  发布时间:2015/4/30 15:25:38
--  
谢谢指点
--  作者:pyd
--  发布时间:2015/4/30 15:43:28
--  
后台不要用这个全局变量
--  作者:germcn
--  发布时间:2015/4/30 16:00:42
--  
如果我的这种情况  后台就写
mt:=1;

关键每次都初始化 mt为1吗

--  作者:yukizzc
--  发布时间:2015/4/30 16:07:37
--  

看下函数说明,序列模式下variable申明的序列变量会被强制转换为常数,故与普通的常数变量是没有区别的,因此序列模式下的序列变量不要使用variable进行申明。

一般后台你用EXTGBDATASET这种的全局变量定义。