基础知识

MT4编程参考三

字号+ 作者: 来源: 12-06 我要评论( )

函数[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());

转载请注明出处。

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

{dede:myad name='artice_ad_01'/}
相关文章
  • 第三代移动平均线 MetaTrader 指标

    2016-11-30 15:02

  • Aroon Up & Down指标

    2016-11-30 15:56

  • MetaTrader4指标 BB MACD指标

    2016-11-30 16:00

  • Beginner MetaTrader

    2016-11-30 16:00