MT4编程入门详解
MT4编程初级手册

M T4编程初级手册(总10页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--MT4编程初级手册(2):指标源码中常用符号的说明一、注释符:行注释:单行的注释使用“声明(创建)数组的同时,可以赋初始值,也可以不赋初始值。
例:int aa[]; 创建数组aa,不指定数据元素的个数;int bb[10]; 创建数组bb,设定数据元素为10个,不赋给这些数据元素初始值;int cc[3]={3,4,5}; 创建数组cc,设定数组元素为2个,并赋给初始值;赋值后,cc[0]的值为3、cc[1]的值为4、cc[2]的值为5;int dd[7]={5,6,7}; 创建数组dd,设定数组元素为7个,但只给前3个元素赋初始值。
三、数组使用时的赋值数组的赋值必须指定明确的将要赋值对象的索引,除新建数组时可以批量赋值以外,数组元素必须一个一个地赋值。
例如:cc[1]=5;这个是对数组cc的第2个元素cc[1]([0]是第1个,[1]表示第2个)重新赋值为5。
在这里,不需要整数型变量定义符int,这样,数组cc原有三个值{3,4,5}就变为{3,5,5}四、数组的引用数组是一系列相同类型的变量的集合,所以每次只能使用数组中的一个元素。
数组的引用必须指定明确的引用对象索引值,一次只能引用一个。
如果需要使用整列数组,则必须逐个使用。
在程序中经常使用循环与数组相互配合来完成相应的功能。
例如:数组arrai[5]的值为{5,4,3,2,1}我们用数组名称arrai加索引值来引用数组arrai中的值:当i=0时,aa[i]的值为5;当i=1时,aa[i]的值为4;当i=2时,aa[i]的值为3;当i=3时,aa[i]的值为2;当i=4时,aa[i]的值为1;MT4编程初级手册(6):市场数据取值一、预定义数组(MT4已经预先定义好了的,可直接调用)开盘价、最高价、最低价、收盘价、成交量等市场历史数据,每根K线实体都各自有一个,所以必须使用数组来调用,MT4有几个预定义数组,预定义的意思就是这些数据都是被准备好了的,EA的开发者可以直接使用:预定义数组:开盘价Open[]、最高价High[]、最低价Low[]、收盘价close[]、成交量Volume[]、K线所属时间Time[]类型为双精度浮点double型(即精确小数)这里有一个引用顺序或位置的问题,从右边起第一根K线实体(即最新的K线)的索引为0,第二根K线索引1,第三根K线索引3,以此类推,也就是说从右向左倒着数过去,最近的数值小,而越远的数值越大。
MT4编程例子详解

============================================== ==============================================
以下为上述语句的简要说明
#property indicator_separate_window 指标放在副图
#property indicator_color1 White 第一条指标线为白色
2、 #property indicator_separate_window 把指标显示在副图。如: MAC、D RSI、威廉等类指标用到此语句
3、 #property indicator_buffers 3 显示 3 根指标线
4、 #property indicator_color1 Red 第 1 根指标线的颜色为 Red
另外,还有一个反初始化函数 deinit() deinit() 在自定义卸载时运行一次,可用以去除指标加载时
init() 所做的初始化操作。
MT4编程入门 ( 十) :画一条指标线
要画指标线,只要在程序中写明以下几点就可以了: 第一、明确指标线所在窗口,是主图还是副图 第二、要建立数组,用以保存指标线在各个位置的值。 第三、要建立指标线与数组的对应关系,哪个数组对应哪条指标线 第四、要明确指标线的线型,是曲线还是柱线或者是箭头 第五、如果指标线是箭头,还要说明是哪种箭头 第六、给数组赋值 其中: 第一、二条写在文件头部中, 第三、四、五条写在 init() 函数中( init 函数仅在指标加载时运行一次) 第六条写在 start() 函数中( start 函数在数据发动变动时运行,变动一次运行一次) 下面以 MACD为例说明 我们知道, MACD指标由二条曲线和一组红绿柱线组成。 (下图一) 其中: 白线是二根均线的差; 紫线是白线的移动平均线; 红绿柱线则是白线和紫线的差,白线上穿紫线,出现红柱,下穿则出现绿柱。
mt4编程→简明教程+速成基础

mt4编程→简明教程+速成基础mt4编程→简明教程+速成基础第一篇创建新文件1、打开MetaEditor (如何打开自己想办法)呵呵,如果这个都打不开,拜托下面的也不用看了。
也许你不适合研究这个。
2、选择文件-->新文件打开文件创建页面。
3、选择第二项客户指标然后点下一步。
注:这个页面可以创建6种文件。
我们常用的有《客户指标》,《脚本》,《智能交易系统》三种。
我们先从指标开始。
4、输入名字,作者等等。
(支持中文)暂时不添加参数。
注:这个位置可以添加用户变量以后讲解。
5、下一步我们先建一个主窗口指标所以这个页面什么都不用操作注:这个位置可以添加指标“线”。
以后提及。
6、点击完成。
ok新的指标文件生成了。
但还没有任何有用的代码。
初始化代码齐全。
//+------------------------------------------------------------------+//| MT4指标编辑.mq4 |//| |//+------------------------------------------------------------------+#property link ""#property indicator_chart_window//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+int init(){//---- indicators//----return(0);}//+------------------------------------------------------------------+//| Custom indicator deinitialization function |//+------------------------------------------------------------------+int deinit(){//----//----return(0);}//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+int start(){int counted_bars=IndicatorCounted();//----//----return(0);}//+------------------------------------------------------------------+上面的就是刚刚新建的一个指标文件。
MT4编程语言MQL4入门(全接触)

MT4编程语言全接触语法[Syntax]代码格式空格建、Tab键、换行键和换页符都可以成为代码排版的分隔符,你能使用各种符号来增加代码的可读性。
注释多行注释使用/* 作为开始到*/ 结束,在这之间不能够嵌套。
单行注释使用// 作为开始到新的一行结束,可以被嵌套到多行注释之中。
示例:// 单行注释/* 多行注释// 嵌套的单行注释注释结束*/标识符标识符用来给变量、函数和数据类型进行命名,长度不能超过31个字节你可以使用数字0-9、拉丁字母大写A-Z和小写a-z(大小写有区分的)还有下划线(_)。
此外首字母不可以是数字,标识符不能和保留字冲突.示例:// NAME1 namel Total_5 Paper保留字下面列出的是固定的保留字。
不能使用以下任何保留字进行命名。
数据类型存储类型操作符其它bool extern break falsecolor static case truedatetime continuedouble defaultint elsestring forvoid ifreturnswitchwhile数据类型[Data types]数据类型概述主要数据类型有:∙Integer (int)∙Boolean (bool)∙ëèòåðàëû (char)∙String (string)∙Floating-point number (double)∙Color (color)Datetime (datetime)我们用Integer类型数据来作为DateTime和Color数据的存储。
使用以下方式可以进行类型站换:int (bool,color,datetime);double;string;Integer 类型十进制: 数字0-9;0不能作为第一个字母示例:12, 111, -956 1007十六进制: 数字0-9;拉丁字母a-f或A-F用来表示10-15;使用0x或者0X作为开始。
MT4编程语言MQL4入门(全接触)

MT4编程语言全接触语法 [Syntax]代码格式空格建、Tab键、换行键和换页符都可以成为代码排版的分隔符,你能使用各种符号来增加代码的可读性。
注释多行注释使用 /* 作为开始到 */ 结束,在这之间不能够嵌套。
单行注释使用示例:0A2f7C用来更精确的表示十进制数字。
示例:double a = ;double b = ;double c = ;double d = 16;浮点型的取值范围从到 .String 类型字符串型是用来表示连续的ASCII码字符的使用连续的两个双引号来包括需要表示的内容如:"Character constant".示例:"This is a character string""Copyright symbol \t\xA9""this line with LF symbol \n""A" "90" "0" "$"Color 类型颜色类型可以使用以下示例里的几种方式进行定义。
示例:关系运算符用返回0(False)或1(True)来表示两个量之间的关系。
a是否等于b a == b;a是否不等于b a != b;a是否小于b a < b;a是否大于b a > b;a是否小于等于b a <= b;a是否大于等于b a >= b;真假运算符否定运算符(!),用来表示真假的反面的结果。
.,xn 这样的方法将各种值传送到function中进行运算。
示例:double SL=Ask-25*Point;double TP=Ask+25*Point;int ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,SL,TP, "My comment",123,0,Red);优先级规则下面是从上到下的运算优先规则,优先级高的将先被运算。
MT4编程入门教程

MT4编程入门教程MT4是一种广泛使用的外汇交易平台,它提供了强大的交易功能和高度可定制性。
为了使交易者能够根据自己的需求和策略进行自动化交易,MT4还提供了MQL4编程语言。
本教程将介绍MT4编程的基础知识和入门指南。
第一部分:MQL4简介(200字)MQL4是MetaQuotes Language 4的缩写,是MT4交易平台上使用的编程语言。
它基于C语言,并且具有简单易学的特点。
使用MQL4,交易者可以编写自定义指标、脚本和外汇机器人,并将它们应用于MT4交易平台。
第二部分:MT4编程环境的设置(200字)第三部分:MQL4基本语法(400字)MQL4编程语言具有与C语言类似的语法结构。
以下是MQL4的基本语法要点:1.注释:使用“//”表示单行注释,使用“/**/”表示多行注释。
2. 变量:使用关键字“int”、“double”、“bool”和“string”定义整型、双精度浮点数、布尔和字符串变量。
3. 函数:使用关键字“void”或返回类型定义函数,例如“int”、“double”和“bool”。
函数可以包含参数和返回值。
4. 条件语句:使用关键字“if”、“else if”和“else”定义条件语句。
例如:if (条件)//执行一些代码} else if (条件)//执行一些其他代码} else//执行默认代码}```5. 循环:使用关键字“for”和“while”定义循环语句。
例如:```for (初始化; 条件; 更新)//执行循环代码}```6.数组:使用方括号“[]”定义一维和多维数组。
例如:```int myArray[5]; // 定义一个包含5个元素的整型数组double myArray2D[3][3]; // 定义一个包含3行3列的二维数组第四部分:自定义指标和脚本(200字)在MT4中,使用MQL4编程语言可以创建自定义指标和脚本。
自定义指标是根据特定算法计算的技术指标,用于辅助交易决策。
MT4编程例子详解

MT4编程入门(九):MT4自定义指标的结构MT4自定义指标一般由四个部分构成:(1)文件头部(2)参数、变量和数组的定义(3)初始化函数init()(4)主函数start()一、文件头部,也称为预处理程序预处理程序以“#”开头,行尾无语句结束符“;”常用的预处理程序有:1、#property indicator_chart_window把指标显示在主图。
如:均线、SRA等类指标用到此语句2、#property indicator_separate_window把指标显示在副图。
如:MACD、RSI、威廉等类指标用到此语句3、#property indicator_buffers 3显示3根指标线4、#property indicator_color1 Red第1根指标线的颜色为Red5、#property indicator_width1 1第1根指标线的粗细分别为16、#property indicator_level1 0.00在0.00值位置横划1条虚线二、参数、变量和数组的定义全局性的参数、变量、数组在此定义,局部变量可在start()函数中定义三、初始化函数init()init()在自定义指标加载时运行一次。
初始化函数的功能是“设置”。
如果自定义指标需要划线,则必然用到此函数四、主函数start()当数据有变动时,start()就被触发。
数据变动一次,start()就运行一次。
自定义指标的编程主要依靠此函数进行。
start()函数的作用主要是取值和给指标线赋值,报警也在此函数内发起。
另外,还有一个反初始化函数deinit()deinit()在自定义卸载时运行一次,可用以去除指标加载时init()所做的初始化操作。
MT4编程入门(十):画一条指标线要画指标线,只要在程序中写明以下几点就可以了:第一、明确指标线所在窗口,是主图还是副图第二、要建立数组,用以保存指标线在各个位置的值。
第三、要建立指标线与数组的对应关系,哪个数组对应哪条指标线第四、要明确指标线的线型,是曲线还是柱线或者是箭头第五、如果指标线是箭头,还要说明是哪种箭头第六、给数组赋值其中:第一、二条写在文件头部中,第三、四、五条写在init()函数中(init函数仅在指标加载时运行一次)第六条写在start()函数中(start函数在数据发动变动时运行,变动一次运行一次)下面以MACD为例说明我们知道,MACD指标由二条曲线和一组红绿柱线组成。
(完整版)MT4编程入门详解-有图表

目录 MT4编程入门(一):MT4自定义指标的基本操作指标源码中的常用符号说明自定义变量自定义函数 自定义数组市场数据取值 判断语句 循环 MT4自定义指标的结构 MT4编程入门(十):画一条指标线MT4编程入门(^一 ): MT4的报警& indicatorff文件匹 錦矩② 查看② 收障® 工具⑴ 帮助QPQ 后退-保存目录yMT4自定义指标的保存目录、指标编缉器与指标调用一、MT4 自定义指标保存在 C:\Program Files'MetaTrader 4\experts\indicators 这个目录中,该目录中主要有二种类型的文件,一种是mq4文件,这是MT4自定义指标的源码文件,是一种高级语言文件,可以人工编写修改,机器不能直接执行, 但能在MT4启动时自动编译为 ex4可执行文件。
另一种就是ex4文件,这是MT4自定义指标的可执行文件,由 mq4文件编译得到。
mq4文件必须编译为 ex4文件才能被 MT4执行。
但ex4文件是机器码文件,人工不可修改另外还有一个文件是 mqlcache.dat ,它用来保存目录中的文件信息,如果MT4无法自动编译,只要删除此文件即可解决问题 mq4文件编译为ex4可执行文件有两种方法:1、MT4启动时,会自动把此目录中的 mq4文件编译为ex4文件。
MT4编程入门 (一) : MT4自定义指标的基本操作MT4编程入门(二) MT4编程入门(三) MT4编程入门(四) MT4编程入门(五)MT4编程入门(六) MT4编程入门(七)A.c mnrul at i. on . nt q 可执行不可编牡 m uAwe some. ex4 地扯 文件和文件妄丰其它僅置 口 晒 PMtEQ 我的文裆口共拿文裆J 毯的电脑•J 冏上郭居 口旬健一伞新U 将遠个文件7并拿此文f 宅 I^C : \Frogr am F iles^Metalrader 4\exptrts\indi cators源码文件 可执行文件 frnii ■■■ I mu | :Ac curaul all on. ex4 :2、用MQ 语言编辑器打开 mq4文件,点一下“编写”按钮,即可生成ex4文件 、下载保存mq4文件、ex4文件在论坛上我们经常看到有 mq4文件、ex4文件可供下载,我们只要把它们保存到C:\Program Files'MetaTrader 4\experts\indicators 这个目录,也就是下面这个目录中,就可以了。
MT4编程语言MQL4入门(全接触)

MT4编程语言全接触语法[Syntax]代码格式空格建、Tab键、换行键和换页符都可以成为代码排版的分隔符,你能使用各种符号来增加代码的可读性。
注释多行注释使用/* 作为开始到*/ 结束,在这之间不能够嵌套。
单行注释使用// 作为开始到新的一行结束,可以被嵌套到多行注释之中。
示例:// 单行注释/* 多行注释// 嵌套的单行注释注释结束*/标识符标识符用来给变量、函数和数据类型进行命名,长度不能超过31个字节你可以使用数字0-9、拉丁字母大写A-Z和小写a-z(大小写有区分的)还有下划线(_)。
此外首字母不可以是数字,标识符不能和保留字冲突.示例:// NAME1 namel Total_5 Paper保留字下面列出的是固定的保留字。
不能使用以下任何保留字进行命名。
主要数据类型有:•Integer (int)•Boolean (bool)•ëèòåðàëû (char)•String (string)•Floating-point number (double)•Color (color)•Datetime (datetime)我们用Integer类型数据来作为DateTime和Color数据的存储。
使用以下方式可以进行类型站换:int (bool,color,datetime);double;string;Integer 类型十进制: 数字0-9;0不能作为第一个字母示例:12, 111, -956 1007十六进制: 数字0-9;拉丁字母a-f或A-F用来表示10-15;使用0x或者0X作为开始。
示例:0x0A, 0x12, 0X12, 0x2f, 0xA3, 0Xa3, 0X7C7Integer 变量的取值范围为-2147483648到2147483647。
Literal 类型任意在单引号中的字符或十六进制的任意ASCII码例如'\x10'都是被看作为一个字符,一些字符例如单引号('),双引号("),问号(?),反斜杠(\)和一些控制符都需要在之前加一个反斜杠(\)进行转意后表示出来:line feed NL (LF) \nhorizontal tab HT \tcarriage return CR \rreverse slash \ \\single quote ' \'double quote " \"hexadecimal ASCII-code hh \xhh以上字符如果不经过反斜杠进行转意将不能被使用示例:int a = 'A';int b = '$';int c = '©'; // code 0xA9int d = '\xAE'; // symbol code ®Boolean 类型Boolean 用来表示是和否, 还可以用数字 1 和0 进行表示。
MT4指标编程入门

MT4指标编程入门MT4(MetaTrader 4)是一种非常流行的外汇交易软件,它提供了一个强大的工具集,用于技术分析和交易执行。
MT4指标是一种用于帮助交易者确定市场趋势和价格走向的技术指标。
如果您对MT4指标编程感兴趣,以下是一些入门的关键概念和步骤。
1. MetaEditor:MT4提供了一个内置的IDE(集成开发环境)称为MetaEditor,用于编写和测试自定义指标。
您可以通过单击MT4软件上的“MetaEditor”按钮来打开它。
2. MQL4语言:MT4指标编程使用的编程语言是MQL4(MetaQuotes Language 4)。
它是一种类似于C语言的编程语言,具有类似的语法和结构。
3. 基本结构:一个标准的MT4指标通常包含init、deinit和start函数。
init函数只在指标加载时执行一次,而deinit函数只在指标卸载时执行一次。
start函数是主要的计算和绘制图表的函数,它会在每个新的PriceTick时执行。
4.自定义参数:您可以在指标设置中定义自定义参数,这样您就可以通过更改这些参数的值来改变指标的行为。
常见的参数包括移动平均线的周期、布林带的标准偏差等。
5.图表绘制:MT4指标可以在交易图表上绘制各种图形和线条,以便更好地显示价格和技术指标之间的关系。
例如,您可以在图表上绘制移动平均线、布林带或MACD线。
6.指标计算:MT4指标的核心功能是计算特定的技术指标值,这些值可以用于确定市场的潜在趋势和价格走向。
您可以使用MQL4语言中提供的各种内置函数和操作符来计算这些指标值,例如收益率、波动率等。
7.继承和封装:MT4指标编程还支持继承和封装的概念,这使得指标的重用和扩展变得更加容易。
您可以通过创建一个继承自其他指标的新指标来实现代码的重用,并且可以将一组功能相似的指标封装成一个自定义的库。
8. 调试和优化:编写完指标代码后,您可以使用MetaEditor中的调试功能来检查和修复潜在的错误。
MT4平台指标编程

MT4平台指标编程MT4平台是外汇交易者最常用的交易平台之一,它提供了丰富的指标和工具,帮助交易者分析市场走势并制定交易策略。
MT4平台的指标编程功能允许交易者根据自己的需求开发和使用自定义指标。
在本文中,我们将讨论MT4平台指标编程的基本概念和步骤。
MT4平台使用了一种被称为MetaQuotes Language 4(简称MQL4)的编程语言,交易者可以通过编写MQL4代码来创建自己的指标。
指标是一种用来计算和展示特定的市场数据的工具,它可以帮助交易者了解市场的走势和形势。
指标编程的第一步是定义指标的计算方法和所需的输入参数。
指标通常基于一些特定的数学公式或技术指标,交易者需要根据自己的策略和需求确定指标的计算方法。
输入参数是指交易者可以自定义的指标参数,如期望的时间周期、绘制图形的颜色等。
确立指标计算方法和输入参数之后,交易者需要编写MQL4代码来实现这些功能。
MQL4代码主要包括以下几个部分:指标初始化(init)函数、指标计算(calculation)函数和指标绘制(drawing)函数。
指标初始化函数在指标加载到图表上时被调用,一般用来设置指标的参数和初始化必要的变量。
指标计算函数是指标的核心部分,它根据交易者定义的方法计算指标数值。
最后,指标绘制函数用来在图表上绘制指标的可视化结果。
除了计算和展示指标数值,指标编程还可以实现一些特殊的功能。
例如,可以编写MQL4代码来判断市场的超买超卖情况,或者根据指定的价格水平生成交易信号。
这些功能可以帮助交易者更好地理解市场和制定交易策略。
编写完成指标的MQL4代码后,交易者需要将代码保存为.mq4文件,并将该文件复制到MT4平台的指标文件夹中。
然后,重新启动MT4平台,就可以在平台的指标列表中找到并加载自定义指标了。
对于不熟悉MQL4编程的交易者来说,也可以在互联网上寻找相关的MQL4指标编程教程和示例代码。
MT4平台拥有庞大的开发者社区,交易者可以从中学习和借鉴其他交易者编写的指标代码。
MT4编程语言MQL4入门(全接触)

精心整理MT4编程语言全接触语法[Syntax]代码格式空格建、Tab键、换行键和换页符都可以成为代码排版的分隔符,你能使用各种符号来增加代码的可读性。
注释多行注释使用/*作为开始到*/结束,在这之间不能够嵌套。
单行注释使用//作为开始到新的一行结束,可以被嵌套到多行注释之中。
示例://单行注释数据类型[Datatypes]数据类型概述主要数据类型有:∙Integer(int)∙Boolean(bool)∙?èò?eà??(char)∙String(string)∙Floating-pointnumber(double)∙Color(color)∙Datetime(datetime)我们用Integer类型数据来作为DateTime和Color数据的存储。
使用以下方式可以进行类型站换:int(bool,color,datetime);double;string;Integer类型十进制:数字0-9;0不能作为第一个字母示例:十六进制示例:IntegerLiteral(\)示例:Boolean是和否,还可以用数字1和0进行表示。
True和Flase可以忽略大小写。
示例:boola=true;boolb=false;boolc=1;Floating-pointnumber类型浮点型变量在整数型后面加一个点(.)用来更精确的表示十进制数字。
示例:doublea=12.111;doubleb=-956.1007;doublec=0.0001;doubled=16;浮点型的取值范围从2.2e-308到1.8e308.String类型字符串型是用来表示连续的ASCII码字符的使用连续的两个双引号来包括需要表示的内容如:"Characterconstant".示例:"Thisisacharacterstring""Copyrightsymbol\t\xA9""thislinewithLFsymbol\n"Color类型示例:RedYellowBlack示例:表达式一个表达式可以拥有多个字符和操作符,一个表达式可以写在几行里面。
MT4编程入门教材:MT4编程入门全集

MT4编程入门教材:MT4编程入门全集
简介:
这份教材将为初学者提供MT4编程的入门指南。
本教材包含800字以上的内容,涵盖了MT4编程的基本概念和技巧。
通过研究本教材,读者将能够快速入门并开始编写自己的MT4程序。
目录:
1. 第一章:介绍MT4编程
1.1 了解MT4编程的意义
1.2 MT4编程的基本要求
1.3 MT4编程环境的搭建
2. 第二章:MT4编程基础
2.1 MQL4语言简介
2.2 MQL4语法和语句
2.3 MT4指标(indicator)的编写
2.4 MT4脚本(script)的编写
2.5 MT4专家顾问(Expert Advisor)的编写
3. 第三章:MT4高级编程技巧
3.1 MT4自定义指标的编写
3.2 MT4外部数据源的连接
3.3 MT4交易系统的编写
3.4 MT4模拟交易和回测
3.5 MT4优化和参数调整
4. 第四章:常见问题解答和实例分析
4.1 常见问题解答
4.2 实例分析和案例展示
研究目标:
通过完成本教材,读者将能够:
- 了解MT4编程的基本概念和意义
- 掌握MQL4语言的基本语法和语句
- 能够独立编写MT4指标、脚本和专家顾问- 能够编写自定义指标和连接外部数据源
- 能够开发和优化MT4交易系统
- 能够解答常见问题并分析实例案例
注意事项:
- 本教材适合初学者,不需要有编程经验也能够研究。
- 教材中的语言简洁明了,避免涉及复杂的法律问题和引用不可确认的内容。
MT4指标编程入门解析

MT4指标编程入门解析MetaTrader 4(MT4)是一种用于外汇和股票交易的流行交易平台,该平台允许用户使用各种技术指标来进行分析和预测市场趋势。
通过编写自定义指标,交易者可以利用MT4的强大功能来制定他们自己的交易策略。
本文将介绍如何编程MT4指标的基本知识和步骤。
在编写指标之前,您需要了解一些MT4指标编程的基本语法和函数。
MT4使用一种名为MQL4的专有编程语言来编写指标和自动化交易脚本。
MQL4类似于C语言,并且有许多内置函数和操作符可供使用。
在编写指标时,您需要熟悉以下一些常用函数和操作符:1.`iMA`:计算移动平均线的函数。
它接受多个参数,包括计算平均线的价格类型、计算平均线的周期等。
2.`iRSI`:计算相对强弱指标(RSI)的函数。
RSI用于测量市场超买和超卖的情况。
3.`iMACD`:计算移动平均收敛/发散指标(MACD)的函数。
MACD用于判断市场的趋势和方向。
4. `iBands`:计算布林带指标的函数。
布林带用于测量市场波动性。
此外,还有其他一些常用的函数和操作符,如数学函数(例如`MathMax`和`MathMin`)、条件语句(例如`if`和`else`)以及循环(例如`for`和`while`)。
一旦您熟悉了这些基本知识,就可以开始编写您自己的指标了。
下面是编写一个简单移动平均线指标的示例代码:```mql4#property indicator_chart_window#property indicator_buffers 1#property indicator_color1 Blueextern int period = 14;double ma_buffer[];void OnInitSetIndexBuffer(0, ma_buffer, INDICATOR_DATA);int start = prev_calculated > 0 ? prev_calculated - 1 : 0;for (int i = start; i < rates_total; i++)ma_buffer[i] = iMA(NULL, 0, period, 0, MODE_SMA, PRICE_CLOSE, i);}```在这个示例中,我们定义了一个名为`ma_buffer`的浮点数数组,用于存储移动平均线的值。
MT4精讲:MT4编程入门全集1-11,DOC

MT4编程入门1:MT4自定义指标的基本操作MT4自定义指标的保存目录、指标编缉器与指标调用一、MT4自定义指标保存在C:\ProgramFiles\MetaTrader4\experts\indicators这个目录中,但ex4文件是机器码文件,人工不可修改另外还有一个文件是mqlcache.dat,它用来保存目录中的文件信息,如果MT4无法自动编译,只要删除此文件即可解决问题mq4文件编译为ex4可执行文件有两种方法:1、MT4启动时,会自动把此目录中的mq4文件编译为ex4文件。
2、用MQ语言编辑器打开mq4文件,点一下“编写”按钮,即可生成ex4文件二、下载保存mq4文件、ex4文件在论坛上我们经常看到有mq4文件、ex4文件可供下载,我们只要把它们保存到C:\ProgramFiles\MetaTrader4\experts\indicators这个目录,也就是下面这个目录中,就可以了。
如果下载的是ex4文件,那可以直接调用;如果是mq4文件,则需要重启动MT4,让系统自动编译生成ex4可执行文件。
如果下载的是rar、zip等类型的压缩文件,还必须下载后解压到此目录才能使用。
4件5、还有很重要的一点,就是要把源码文件保存到正确的目录中下编写。
到此,源码保存完成。
当然,我们也还有另的办法:可以打开一个原已存在的mq4文件,然后另存为你需要的文件名,再删除文件中的所有内容成为空文件,把网页上的源贴到文件中保存即可也可以在记事本中新建一个文件,把网页上的源码贴进记事本,然后取个文件名保存到上面提到的目录,不过文件后缀必须输入mq4,保存类型选择“所以文件”四、mt4程序调用自表示一个语句结束三、逗号“,”表示一个语句内部间隔,不结束语句。
四、等于号“=”赋值语句,把等号后面的值赋给等号前的变量中五、加号“+”整数或小数,则表示值相加;字符串,则表示前后连接。
六、加加“++”十、“&&”逻辑符“并且”十一、“||”逻辑符“或者”十二、大括号“{}”表示函数体。
MT4智能交易系统_编程手册知识讲解

点击这里查看如何添加、启动、测试智能交易系统软件。
智能交易系统软件是一个创新的交易工具,允许客户对自己的交易策略进行设定并进行测试。
还可以创建新的技术指标获取交易系统的逐步解释 - 反转条 - 点击这里。
MultiBank FX程序员MultiBank FX向那些想要对其交易策略进行自动化,但又不想学习智能交易系统程序语言客户提供程序服务。
欲知详情,请联系在线客服智能交易系统软件是用来对交易过程全程自动化,免除交易商连续对市场进行日常烦琐的监护。
许多专业交易商利用多层交易系统,对不同的市场和在不同的环境下进行操作。
通常他们在著名的分析软件包里对交易战略进行编写和测试,比如,MetaStock 和 TradeStation。
使用MultiBank Trader智能交易系统软件,招招领先,你可以把交易系统产生的信号和真实账户联系起来,这样连接以便于能追踪和管理你的某个时段的开仓部位,提交的订单和止损单。
什么是智能交易系统?它是一个用特殊的MetaQuotes 语言 4 (MQL 4)编写的自动交易系统(ATS),和特定的图表联系在一起。
智能交易系统不仅能通知交易商交易机会,而且还能自动执行交易账户上的交易,直接发送到交易服务器。
和许多的IT系统一样,智能交易系统系统支持历史数据战略测试,图表上表示的登入/登出点。
而且,智能交易系统的可执行码分别存储于源文件和加密的执行文件中-这种安排保证了交易商所使用的逻辑隐藏(如有必要的话),而不会泄密。
编写自己的智能交易系统软件也非常容易:尝试一下吧!不需要是专业编程高手,你只需要学会使用非常简单的语言-MQL 4语言。
即使用户不能自行编写智能交易系统规则,但是他需要熟悉近的编程技能,不过很可能不需一个小时他便掌握了这些规则并能编写程序。
无数的交易商为MetaStock 和 TradeStation软件开发了多种多样的交易战略。
其中多数均被翻译成MQL 4语言,这就使得用户可以把前期累计的经验并合到里面去。
从零开始学MT4编程

常用自定义函数 ..........................................................................................................31 3.4.1 最大开仓量计算 .................................................................................................32 3.4.2 新单开仓 ..............................................................................................................33 3.4.3 3.4.4 3.4.5 持仓单平仓 ..........................................................................................................34 追踪止损 ..............................................................................................................35 定时交易 ..............................................................................................................36
1.4.3 准备 10 年的历史数据 .......................................................................................10 第二章 MQL4 语言 ...................................................................................................................12 2.1 预备知识 ......................................................................................................................12 2.1.1 2.1.2 2.1.3 2.2 EA 框架 .................................................................................................................12 指标框架 ..............................................................................................................13 坐标系 ..................................................................................................................14
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录MT4编程入门(一):MT4自定义指标的基本操作MT4编程入门(二):指标源码中的常用符号说明MT4编程入门(三):自定义变量MT4编程入门(四):自定义函数MT4编程入门(五):自定义数组MT4编程入门(六):市场数据取值MT4编程入门(七):判断语句MT4编程入门(八):循环MT4编程入门(九):MT4自定义指标的结构MT4编程入门(十):画一条指标线MT4编程入门(十一):MT4的报警MT4编程入门(一):MT4自定义指标的基本操作MT4自定义指标的保存目录、指标编缉器与指标调用一、MT4自定义指标保存在C:\Program Files\MetaTrader 4\experts\indicators这个目录中,该目录中主要有二种类型的文件,一种是mq4文件,这是MT4自定义指标的源码文件,是一种高级语言文件,可以人工编写修改,机器不能直接执行,但能在MT4启动时自动编译为ex4可执行文件。
另一种就是ex4文件,这是MT4自定义指标的可执行文件,由mq4文件编译得到。
mq4文件必须编译为ex4文件才能被MT4执行。
但ex4文件是机器码文件,人工不可修改另外还有一个文件是mqlcache.dat,它用来保存目录中的文件信息,如果MT4无法自动编译,只要删除此文件即可解决问题mq4文件编译为ex4可执行文件有两种方法:2、用MQ语言编辑器打开mq4文件,点一下“编写”按钮,即可生成ex4文件二、下载保存mq4文件、ex4文件在论坛上我们经常看到有mq4文件、ex4文件可供下载,我们只要把它们保存到C:\Program Files\MetaTrader 4\experts\indicators这个目录,也就是下面这个目录中,就可以了。
如果下载的是ex4文件,那可以直接调用;如果是mq4文件,则需要重启动MT4,让系统自动编译生成ex4可执行文件。
如果下载的是rar、zip等类型的压缩文件,还必须下载后解压到此目录才能使用。
三、将源码保存为源码文件在论坛上,我们也经常能看到指标源码贴在网页上,但没有mq4、ex4等文件可以下载,只能复制源码。
此时需要我们自己动手将源码保存为源码文件,那也没关系,非常地简单,多点几下鼠标就搞定。
1、打开MQ语言编辑器2、在MQ语言编辑器中新建一个文件,文件名一定要输,别的随便操作都没关系。
3、删除新文件里面的所有内容,成为一个空文件,4、接着我们就可以将网页上源码复制粘贴进来试着点一下“编写”,如果左下角出现“0错误,0警告”,那说明源码没问题,编译通过了,成功生成了ex4可执行文件5、还有很重要的一点,就是要把源码文件保存到正确的目录中保存后,再点一下编写。
到此,源码保存完成。
可以打开一个原已存在的mq4文件,然后另存为你需要的文件名,再删除文件中的所有内容成为空文件,把网页上的源贴到文件中保存即可也可以在记事本中新建一个文件,把网页上的源码贴进记事本,然后取个文件名保存到上面提到的目录,不过文件后缀必须输入mq4,保存类型选择“所以文件”四、mt4程序调用自定义指标这非常简单MT4编程入门(二):指标源码中的常用符号说明一、注释符:单行注释“//”、多行注释“/* */”程序不执行注释,注释内容仅供阅读或保留不用的语句在MQ语言编辑器中,注释内容以灰色显示二、分号“;”表示一个语句结束三、逗号“,”表示一个语句内部间隔,不结束语句。
四、等于号“=”赋值语句,把等号后面的值赋给等号前的变量中五、加号“+”整数或小数,则表示值相加;字符串,则表示前后连接。
六、加加“++”表示把符号前的变量值加1,例如:“i++;”这实际上就是:“i=i+1;”的简写,表示i的值加1七、加等于“+=”表示把符号后的值加到符号前的变量中。
例如“i+=2;”,实际上就是“i=i+2;”的简写,表示i的值加2八、双等号“==”等于号。
用于逻辑判断,双等号前后值相等,则返回逻辑值“真true”;双等号前后值不相等,则返回逻辑值“假false”九、叹号等号“!=”不等于号。
用于逻辑判断,不等号前后值不相等,则返回逻辑值“真true”;不等号前后值相等,则返回逻辑值“假false”十、“&&”逻辑符“并且”十一、“||”逻辑符“或者”十二、大括号“{}”表示函数体。
{}内部为函数体语句。
MT4编程入门(三):自定义变量一、自定义变量在使用前,必须先创建(定义),设定变量的类型和名称。
创建时可同时赋值,也可以不赋值。
名称可以使用中文字符。
例:int mark;创建一个整型变量,变量名为“mark”。
bool 是否报警=true;创建一个逻辑型变量,变量名为“是否报警”,同时,赋初值“true”二、类型和类型定义词自定义变量的基本类型有:1、整形(int):就是整数,包括负整数2、双精度小数(double):可以简单地理解为带小数位的数3、字符串型(string)。
4、逻辑型(bool):其值分别为“true、false”,即“真、假”,也可以写成“1、0”(1真,0假)。
类型定义词仅在创建变量时使用,后面使用变量时,就不能再加类型定义词了三、附加变量附加变量就是在程序投入使用后,变量值允许用户自由更改的变量,一般用作程序参数。
一般指标,例如MACD(12,26,9)参数输入就是通过附加变量实现,(12,26,9)分别为三个附加变量的默认值。
定义附加变量只需在变量定义语句前加“extern”例:extern int 周期=9;创建一个整型附加变量,变量名为“周期”,默认值为9,允许用户在程序外部修改参数值MT4编程入门(四):自定义函数例如:数学函数ft(x,y)=3x+2y (x,y为正整数) 写成程序语句就是:int ft(int x,int y){int temp;temp=3*x+2*y;return(temp);}一、和自定义变量一样,自定义函数在使用前,也必须先设立,以定义其类型、名称、参数和运算语句。
函数类型、名称、参数位于函数头部(参数间以逗号分隔),大括号中的是运算语句,也就是函数体部分。
return语句为函数结束语句,return后面括号中的值为函数返回值,即函数运算结果。
上例中,int为函数类型,表示该函数的返回值(运算结果)是整数;(x,y)为参数,由于自定义变量使用之前都必须先创建,所以要加上类型定义词intft为函数名,有了函数名,我们就可以在别处用ft(2,1)的形式来调用此函数;函数体部分有三句:第一句,定义一个整形变量temp第二句,计算temp的值第三句,函数结束,返回调用点,以temp的值作为本函数返回值。
此函数也可以简写为:int ft(int x,int y) {return(3*x+2*y);}二、函数类型与类型符函数类型就是函数返回值(运算结果)的类型,与自定义变量类型差不多有整型(int)、双精度型(double)、字符串型(string)、逻辑型(bool)等,还有一种函数是以函数运行为目的,运行结束后不需要返回值也没有返回值的,则函数类型可以写成void(无值型)三、函数中如果定义了自定义变量,那么此变量仅在本函数内部存在,函数运行结束时,自定义变量也就自动注销。
上例中,有x、y、temp三个自定义变量,在函数运行时创建,在函数运行结束时自动消失,仅在函数内部有效,与函数外部无关。
四、函数的调用函数调用非常简单,只要函数名正确、参数个数一致、类型相同就能正确调用如我们前面创建了ft(x,y)函数,则别处我们可以用ft(4,5)等样式来调用ft(x,y)函数求值。
调用时,传递参数值给ft(x,y)函数(按顺序把4传给x,把5传给y),返回结果22后继续执行主程序。
MT4编程入门(五):自定义数组一、数组是一系列同类型变量的集合,可以同时存储多个数值。
例:int aa[4]={4,3,2,1};这是一个数据名为aa、包含了4个元素的整数型数组(即数组长度为4),可以同时存储4个数值。
二、自定义数组也必须“先建立,后使用”创建(定义)时,必须设定类型和名称。
创建(定义)时,数组的元素个数也可以设定,也可以不设定数组中第一个元素的编号为0,第二个为1,以此类推。
编号使用方括号括起来在这上例中aa[0]的值为4、aa[1]的值为3、aa[2]的值为2、aa[3]的值为1创建(定义)数组的同时,可以赋初值,也可以不赋初值。
int bb[]; 创建数组bb,不设定数组元素个数int cc[8]; 创建数组cc,设定数组元素为8个,不赋初值int dd[3]={9,8,7}; 创建数组dd,设定数组元素为4个,并赋初值赋值后,dd[0]的值为9、dd[1]的值为8、dd[2]的值为7int ee[9]={0,1,2,3}; 创建数组ee,设定数组元素为9个,但只给前4个元素赋初值三、数组使用时的赋值数组的赋值必须指定明确的赋值对象,除了新建数组时可以批量赋值外,数组元素必须一个一个赋值例如:dd[2]=1;这是对数组dd的第3个元素dd[2]([0]是第1个,[2]表示第3个)重新赋值为1在这里,没有整数型变量定义符int,这样,数组dd原有三个值{9,8,7}就变为{9,8,1}四、数组的引用数组只是一系列变量的集合,所以每次只能使用数组中的一个元素。
数组的引用必须指定明确的引用对象,一次只能引用一个。
如果需要使用整列数组,则必须逐个使用。
例如:数组aa[4]的值为{4,3,2,1}我们用aa来引用数组aa中的值当i=0时,aa[i]的值为4当i=1时,aa[i]的值为3当i=2时,aa[i]的值为2当i=3时,aa[i]的值为1MT4编程入门(六):市场数据取值一、预定义数组(MT4已经定义好的,可以直接使用)开盘价、最高价、最低价、收盘价、成交量等历史数据,每根K线蜡烛都各有一个,所以必须用数组来解决问题,MT4有几个预定义数组:开盘价Open[]、最高价High[]、最低价Low[]、收盘价close[]、成交量Volume[]、所属时间Time[]类型为双精度double型(即精确小数)这里有一个位置的问题,右边第一根K线蜡烛(即最新的蜡烛)的编号为0,第二根蜡烛编号1,第三根蜡烛编号2,也就是说从右向左倒着数过去。
Open[0]、High[0]、Low[0]、Close[0],表示最新的开盘价、最高价、最低价、收盘价Open[1]、High[1]、Low[1]、close[1],表示第2根K线蜡烛的开盘价、最高价、最低价、收盘价Open[2]、High[2]、Low[2]、close[2],表示第3根K线蜡烛的开盘价、最高价、最低价、收盘价Open[3]、High[3]、Low[3]、close[3],表示第4根K线蜡烛的开盘价、最高价、最低价、收盘价Open、High、Low、close,表示第i+1根K线蜡烛的开盘价、最高价、最低价、收盘价以此类推。