公共函数

来自tradeStar帮助系统
(版本间的差异)
跳转到: 导航, 搜索
(函数内部变量)
(函数返回)
 
(未显示1个用户的1个中间版本)
第95行: 第95行:
 
  end
 
  end
  
==函数编译==
+
但是return 和 func=1两种写法会有一个隐蔽的区别。<br>
 +
如果是func=1,那么函数自己会把每一根K线执行的结果缓存下来,供以后使用。<br>
 +
例如,可以这样:
 +
function func
 +
begin
 +
  if barpos=1 then
 +
      func = 1
 +
  else
 +
      func = func[1]+1;
 +
end
 +
而,直接return 的话,func[1]是没有值的
 +
 
 +
==公共函数编译==
 +
在公共函数被改变后,不但公共函数需要编译,使用了它的公式也需要重新编译。
 +
 
 +
系统会分析使用这个函数的公式的整个依赖链条。
 +
 
 +
有依赖关系的公式会自动列出,供您重新编译。

2014年1月2日 (四) 21:58的最后版本

目录

[编辑] 概述

所谓函数,是一些会反复使用到的功能,封装而成的一段代码。

函数有三种类型:内置函数、局部函数和公共函数

内置函数是最常用的函数,本软件中有很多内置函数,例如ma、hhv、buy、sell等等。

当内置函数不够用,除了等待软件升级新增所需函数,还有一个途径,就是通过公式语言自行编写局部函数或公共函数。

[编辑] 局部函数和公共函数

通过公式语言编写的函数有两种存在形式。

第一种,内嵌在其他公式中。

例1:内嵌在其他公式中的函数
//以下函数把上次传入的点和这次传入的点用线连起来 
function drawL
input:
  numericSimple var1;
variable:
  numericSimple d0(0),t0(0),v0(0);
begin 
  if( d0!=0 and date>2013 )then begin
    id = tl_new( d0, t0, v0, date, time , var1);
  end;
  d0 = date;
  t0 = time;
  v0 = var1;
end
 
//主程序体
//每隔10根k线,就在收盘价处连一条线
#run_by_bar
#MainChart
#nodefaultoutput
if( barpos mod 10 =0 )then 
  drawL( close );

这样的函数我们称为“局部函数”。

第二种,把函数独立出来,单独成为一个公式

 FuncExample.jpg

这样的函数,在公式里不需要额外的声明就可以直接使用,跟ma等内置函数一样,我们称为“公共函数”。

[编辑] 适用范围

局部函数和公共函数仅工作于逐根模式下。

[编辑] 函数参数

调用函数时,可以通过参数给函数传入和传出值。 参数类型可以是:

 numericSimple 单值
 numericSeries 序列
 numericRef 引用参数

numericRef类型的参数可以在函数内赋值,并且把值带到主程序中去。

当参数类型是numericRef时,传入参数时必须使用序列型(不可以是numericSimple)。

例如,以下的例子是不正确的
func testFunc
input:
  numericRef n;
begin 
  n = 1;
end;

//主程序
variable:
  numericSimple x(0);
testFunc(x);

[编辑] 函数内部变量

在函数中定义的变量只是在函数体内使用。 但是这些变量的值会一直保存,在下根k线到来时,这些变量依然保持上一根k线结算的结果。

[编辑] 函数返回

函数能够返回值给调用者。 语法是:

 return x;

例如:

function func
begin
  return 1;
end


直接给函数名赋值也能达到相同的目的 例如:

function func
begin
  func = 1;
end

但是return 和 func=1两种写法会有一个隐蔽的区别。
如果是func=1,那么函数自己会把每一根K线执行的结果缓存下来,供以后使用。
例如,可以这样:

function func
begin
  if barpos=1 then 
     func = 1
  else 
     func = func[1]+1;
end

而,直接return 的话,func[1]是没有值的

[编辑] 公共函数编译

在公共函数被改变后,不但公共函数需要编译,使用了它的公式也需要重新编译。

系统会分析使用这个函数的公式的整个依赖链条。

有依赖关系的公式会自动列出,供您重新编译。

个人工具
名字空间

变换
操作
导航
工具箱