路路发智能交易研发中心

 找回密码
 立即注册
查看: 1571|回复: 0

TB编程教程 用户函数的调用

[复制链接]

管理员

MT4软件工程师

Rank: 9Rank: 9Rank: 9

积分
6521
帖子
2771
主题
2761
QQ
发表于 2015-5-9 19:03:18 | 显示全部楼层 |阅读模式
TB编程教程 用户函数的调用
用户函数成功创建之后(编译/保存成功),您可以在其他的用户函数、公式应用中调用用户函数,调用用户函数时需要注意保持参数类型的匹配,即用户函数参数的声明数据类型需和调用时传入参数的数据匹配,这是所指的匹配是指基本数据类型:数值型,布尔型,字符串三种类型匹配,并且保持序列参数和传入变量类型的对应。我们可以对用户函数定义为Numeric或者NumericRef的参数使用Numeric类型的变量作为传入参数;但不能将在定义为NumericRef类型的参数时传入NumericSeries。具体的对应关系如下表:

函数参数声明类型
可传入的变量类型
Numeric
Numeric,NumericRef,NumericSeries
NumericRef
Numeric,NumericRef
NumericSeries
Numeric,NumericRef,NumericSeries
Bool
Bool,BoolRef,BoolSeries
BoolRef
Bool,BoolRef
BoolSeries
Bool,BoolRef,BoolSeries
String
String,StringRef,StringSeries
StringRef
String,StringRef
StringSeries
String,StringRef,StringSeries
对于函数的返回值,您也可以将用户函数的Numeric返回值赋值给NumericSeries或NumericRef变量。即在用户函数的返回值使用时,忽略其扩展数据类型。比如我们在调用Average求平均值时,可以这样调用:
  1. Vars
  2.     Numeric Value1;
  3. Begin
  4.     Value1 = Average(Close,10);
  5.     ...
  6. End
复制代码

  1. <p>我们也可以按照以下方式进行调用:</p><pre class="tbl3">Vars
  2.     NumericSeries Value1;
  3. Begin
  4.     Value1 = Average(CloseTmp,10);
  5.     ...
  6. End</pre>
复制代码

A用户函数调用自身,我们称之为直接递归;A用户函数可以调用B用户函数,同时B用户函数也可以调用A用户函数,对于这种的情况,我们称之为间接递归;
不管是直接递归还是间接递归,用户函数在执行的时候,都可能遇到递归调用没有出口,导致死循环的情况。因此,我们在编写公式的时候,要注意避免使用递归算法,如果一定需要使用递归算法,要注意保证递归算法都有出口。



外汇智能交易,成就财富梦想!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


MT4编程培训|EA定制开发|QQ在线咨询|路路发智能交易研发中心

GMT+8, 2025-1-7 05:16 , Processed in 0.156201 second(s), 26 queries .

© 2009-2022 520EA.com EA668.com

快速回复 返回顶部 返回列表