函数[Function]
函数定义
一个函数是由返回值、输入参数、内嵌操作所组成的。
示例:
double // 返回值类型
linfunc (double x, double a, double b) // 函数名和输入参数
{
// 内嵌的操作
return (a*x + b); // 返回值
}
如果没有返回值那么返回值的类型可以写为void
示例:
void errmesg(string s)
{
Print("error: "+s);
}
函数调用
function_name (x1,x2,...,xn)
示例:
int somefunc()
{
double a=linfunc(0.3, 10.5, 8);
}
double linfunc(double x, double a, double b)
{
return (a*x + b);
}
特殊函数init()、deinit()和start()
init()在载入时调用,可以用此函数在开始自定义指标或者自动交易之前做初始化操作。
deinit()在卸载时调用,可以用此函数在去处自定义指标或者自动交易之前做初始化操作。
start()当数据变动时触发,对于自定义指标或者自动交易的编程主要依靠此函数进行。
变量[Variables]
定义变量
定义基本类型
基本类型包括
string - 字符串型;
int - 整数型;
double - 双精度浮点数型;
bool - 布尔型
示例:
string MessageBox;
int Orders;
double SymbolPrice;
bool bLog;
定义附加类型
附加类型包括
datetime - 时间型,使用无符号整型数字存储,是1970.1.1 0:0:0开始的秒数
color - 颜色,使用三色的整型数字编码而成
示例:
extern datetime tBegin_Data = D'2004.01.01 00:00';
extern color cModify_Color = C'0x44,0xB9,0xE6';
定义数组类型
示例:
int a[50]; //一个一维由五十个int组成的数组
double m[7][50]; //一个两维由7x50个double组成的数组
内部变量定义
内部变量顾名思义是在内部使用的,可以理解为在当前嵌套内所使用的变量。
函数参数定义
示例:
void func(int x, double y, bool z)
{
...
}
函数的参数内的变量只能在函数内才生效,在函数外无法使用,而且在函数内对变量进行的修改在函数外无法生效。
调用函数示例:
func(123, 0.5);
如果有需要在变量传入由参数传入函数内操作后保留修改在函数外生效的情况的话,可以在参数定义的类型名称后加上修饰符(&)。
示例:
void func(int& x, double& y, double& z[])
{
...
}
静态变量定义
在数据类型前加上static就可以将变量定义成静态变量
示例:
{
static int flag
}全局变量定义
全局变量是指在整个程序中都能够调用的变量,只需将变量定义卸载所有嵌套之外即可。
示例:
int Global_flag;
int start()
{
...
}
附加变量定义
附加变量可以允许由用户自己输入。
示例:
extern double InputParameter1 = 1.0;
int init()
{
...
}
初始化变量
变量必须经过初始化才可以使用。
基本类型
示例:
int mt = 1; // integer 初始化
// double 初始化
double p = MarketInfo(Symbol(),MODE_POINT);
// string 初始化
string s = "hello";
数组类型
示例:
int mta[6] = {1,4,9,16,25,36};
外部函数引用
示例:
#import "user32.dll"
int MessageBoxA(int hWnd ,string szText,
string szCaption,int nType);
int SendMessageA(int hWnd,int Msg,int wParam,int lParam);
#import "lib.ex4"
double round(double value);
#import
预处理程序[Preprocessor]
定义常数
#define identifier_value
常数可以是任何类型的,常数在程序中不可更改。
示例:
#define ABC 100
#define PI 0.314
#define COMPANY_NAME "MetaQuotes Software Corp."
编译参数定义
#property identifier_value
示例:
#property link http://www.metaquotes.net
#property copyright "MetaQuotes Software Corp."
#property stacksize 1024
以下是所有的参数名称:
参数名称
类型
说明
link
string
设置一个链接到公司网站
copyright
string
公司名称
stacksize
int
堆栈大小
indicator_chart_window
void
显示在走势图窗口
indicator_separate_window
void
显示在新区块
indicator_buffers
int
显示缓存最高8
indicator_minimum
int
图形区间最低点
indicator_maximum
int
图形区间最高点
indicator_colorN
color
第N根线的颜色,最高8根线
indicator_levelN
double
predefined level N for separate window custom indicator
show_confirm
void
当程序执行之前是否经过确认
show_inputs
void
before script run its property sheet appears; disables show_confirm property
嵌入文件
#include <file_name>
示例:
#include <win32.h>
#include "file_name"
示例:
#include "mylib.h"
引入函数或其他模块
#import "file_name"
func1();
func2();
#import
示例:
#import "user32.dll"
int MessageBoxA(int hWnd,string lpText,string lpCaption,
int uType);
int MessageBoxExA(int hWnd,string lpText,string lpCaption,
int uType,int wLanguageId);
#import "melib.ex4"
#import "gdi32.dll"
int GetDC(int hWnd);
int ReleaseDC(int hWnd,int hDC);
#import
账户信息[Account Information]
double AccountBalance()
返回账户余额
示例:
Print("Account balance = ",AccountBalance());
double AccountCredit()
返回账户信用点数
示例:
Print("Account number ", AccountCredit());
string AccountCompany()
返回账户公司名
示例:
Print("Account company name ", AccountCompany());
string AccountCurrency()
返回账户所用的通货名称
示例:
Print("account currency is ", AccountCurrency());
double AccountEquity()
返回资产净值
示例:
Print("Account equity = ",AccountEquity());
double AccountFreeMargin()
Returns free margin value of the current account.
示例:
Print("Account free margin = ",AccountFreeMargin());
转载请注明出处。