零基本学MQL4编程
- 格式:doc
- 大小:1.84 MB
- 文档页数:27
mql4编程水平支撑阻力水平支撑和阻力是重要的技术分析概念,用于识别价格走势反转的关键级别。
在MQL4编程中,可以使用一些方法来识别并绘制水平支撑和阻力级别。
以下是一种常用的方法:1. 寻找价格水平:在价格图表上寻找明显的高点和低点,这些点可以是峰值或谷底。
2. 绘制水平线:一旦找到高点和低点,就需要使用MQL4编程语言中的对象函数来绘制水平线。
可以使用 `ObjectCreate()` 函数来创建一个水平线对象,并使用 `ObjectSet()` 函数来设置对象的位置和其他属性。
示例代码:```mql4// 寻找高点和低点double highPoint = High[Highest(NULL, 0, MODE_HIGH, 10, 0)]; double lowPoint = Low[Lowest(NULL, 0, MODE_LOW, 10, 0)];// 绘制水平线ObjectCreate(0, "Support", OBJ_HLINE, 0, lowPoint); ObjectSet("Support", OBJPROP_COLOR, clrBlue);ObjectSet("Support", OBJPROP_STYLE, STYLE_SOLID); ObjectSet("Support", OBJPROP_WIDTH, 1);ObjectCreate(0, "Resistance", OBJ_HLINE, 0, highPoint); ObjectSet("Resistance", OBJPROP_COLOR, clrRed); ObjectSet("Resistance", OBJPROP_STYLE, STYLE_SOLID); ObjectSet("Resistance", OBJPROP_WIDTH, 1);```上述代码中,我们先找到了最近的高点和低点,并使用`ObjectCreate()` 函数创建了两条水平线对象,分别表示支撑和阻力级别。
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编程语言全接触语法[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作为开始。
第03课MQL4程序设计基础语句语法规则详解(脚本)一、MQL4程序的相关概念MQL4程序:为了得到按照既定的交易策略/方案来自动化交易,可以由MT4外汇软件执行的代码序列。
MQL4程序设计:是给出解决特定交易问题程序的过程,是软件构造活动中的重要组成部分,以MQL4程序设计语言为工具,写出具体代码的一套完整过程。
程序设计过程应当包括分析、设计流程/步骤、编码、测试、排错等不同阶段。
MQL4程序的运行:MT4需要加载代码,双击即可在某图表上运行程序。
需要注意的是,在做历史测试的时候,需要加载高质量的Tick级别历史数据,否则测试质量很低,不具有参考性。
MQL4编程:是编写程序的中文简称,就是让计算机代为解决某个交易问题,对某个计算体系规定一定的运算方式,使计算体系按照该计算方式运行,并最终得到相应结果的过程。
为了使计算机能够理解人的意图,人类就必须将需解决的问题的思路、方法和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。
这种人和计算体系之间交流的过程就是编程。
算法:是指对某些交易问题的严格的解释方法,一般的,一个算法拥有以下特点:1)有穷性:算法必须保证在执行有限步骤后结束。
2)可行性:算法是确切可行的,即使在数学中,该算法可行,但若在实际应用中,程序不可以被执行,那么,该算法也是不具有可行性的。
3)确切性:算法的每一个步骤必须具有明确的意义。
4)输入:一个算法必须要有0个或多个输入。
5)输出:一个算法必须要有1个或多个输出。
流程图:使用图形表示算法的思路是一种极好的方法,因为千言万语不如一张图。
流程图在汇编语言和早期的BASIC语言环境中得到应用。
相关的还有一种PAD图,对PASCAL或C 语言都极适用。
而且算法也可以在流程图中得以体现。
MQL4开发:计算机程序开发是周而复始的,需要经历:编写新代码、测试、分析等,从事这种事业的工作人员叫做程序员。
面向初学者的MQL4语言。
自定义指标(第2部分)简介这是“面向初学者的MQL4 语言”系列的第五篇文章。
今天我们将学习使用图形对象,这是个非常强大的开发工具,可以大幅拓宽指标的应用范围。
此外,它们可以用于脚本和Expert Advisor。
我们将学习创建对象,更改其参数以及检查错误。
当然,我不可能详细地描述所有对象,那也太多了。
但你会获得让你能够自主学习这些对象的所有必要知识。
本文还包含一个逐步引导你创建复杂信号指标的示例。
于此基础上,你可以创建任意信号指标,为多个指标显示所有周期上的交易信号。
在这里示例中,很多参数都是可调整的,这样就能轻松更改指标的外观。
关于图形对象使用 MetaTrader 4 终端时,你经常会和它们打交道。
图形对象有很多用途。
交易者可以设置支撑位和阻力位、枢轴点、斐波纳契位等。
我们来看一个简单的对象用例:四个图形对象连接到此图表:•两条水平线•一个文本对象•一个对象符号(箭头)今天我们要学习使用MQL4 连接此类对象。
想象一下,有多少手动操作可以通过使用对象实现自动化!举个例子,你曾手动计算过枢轴点、支撑位和阻力位,然后再手动绘制它们吗?好吧,这个工作量并不算多,但如果在MQL4 中自动化这个流程,终端会自动计算并绘制对应的价位。
你要做的就是双击脚本名称,然后坐等结果。
此外,你可以使用图形对象编写非常有用的信号指标。
处理对象的概念在 MQL4 中处理所有图形对象的算法如下:•创建对象•修改其参数(移动、更改颜色、板框等)•删除对象这就是一个特定的“生命周期”。
现在我们来详细说明各个阶段。
创建图形对象要绘制任何图形对象,都会用到通用函数ObjectCreate()。
以下是其原型:bool ObjectCreate(string name, int type, int window, datetime time1, double price1, datetime time2=0,double price2=0, datetime time3=0, double price3=0)如果一切正常,此函数返回true,如果无法创建对象或出现错误,则返回false要找出错误代码,使用函数GetLastError():if(ObjectCreate(/* arguments */)==false){// an error occurred, its code should be recorded into a journalPrint('Error of calling ObjectCreate():',GetLastError());}我们要错误代码做什么?它会帮助你找到错误说明,或可消除错误。
MQL4命令手册MQL4 ReferenceMQL4命令手册(本手册采用 Office2007编写)2010年 2月MetaQuotes Language 4 MQL4 是一种新的内置型程序用来编写交易策略。
这种语言可以创建你自己的智能交易,使自己的交易策略能够完全自动地执行。
而且,MQL4 还能自定义客户指标,脚本和数据库。
内包含了大量可以分析当前及历史报价所必须的函数,以及一些基本的运算和逻辑操作。
并内置了一些基本的指标和操作命令。
MetaEditor 4集合了编写 MQL4 程序代码的各种语句,它能帮助使用者方便地写出规范的代码。
MetaQuotes Language Dictionary 是 MQL4 语言的帮助工具,它包含了我们在使用工程中所有可能用到的函数。
MetaQuotes Language 4 :可以编写不同作用的程序代码■智能交易是一种连接到特定图表的自动交易系统。
它能够根据设置的节点自动启动 ,当它开始运行后,它不会同时去处理另一个新的指令也就是说必须等到当前程序完成。
这种交易系统能够在提醒用户可以交易的同时,将交易定单自动送到交易服务器。
与大多数交易系统一样, 它也能够用历史数据测试交易策略,并在图表上显示出来。
terminal_directory\experts智能交易存储在。
■自定义指标可用来编写新的技术指标,和内置的指标一样,它不能用来进行自动交易,只能作为分析数据的工具。
自定义指标储存在 terminal_directory\experts\indicators。
■脚本是执行单一功能的一段程序,和智能交易不同,脚本不能单独执行,只能被调用。
terminal_dictionary\experts\scripts脚本存储在。
■数据库常被使用的自定义函数的集合。
数据库不能单独运行。
数据库建议存储在 terminal_directory\experts\libraries。
MQL4 经典入门第5课预处理程序预处理程序是一个特殊MQL4的子程序,在程序执行之前预先准备的程序源代码。
预处理程序会尽可能地读取源代码。
代码的结构可能包括MQL4 程序源代码的特殊文件。
对于读取的代码尽可能地按照具体常数分配储存。
预处理程序允许MQL4 程序参量指定。
如果# 标志被使用在程序的第一线, 这条线是预处理程序方针。
预处理程序方向末端以换行字符结尾。
MQL4包括4种预处理程序:A、Constant declaration用#define定义常数可以在程序中指定货币对字串符并且定义货币对名称或货币对常数。
稍候,编辑器会按照相应的字串符名称还原所有显示。
事实上,这些名称可以由任意数组文本替换:此常数识别符符合变量名称的规则值可以是以下任意类型:B、C ontrolling compilation每个MQL4 程序允添加以#property名称特殊的参量来帮助客户端服务。
这是一个内设指标。
示例:在执行模板设定时,编译器将会写入值。
C、Including of files#include命令可以放置到程序的任意部分,但是通常所有文件的源代码被统一放置。
调用格式;示例:对于 WinUser32.mqh.文件内容预处理程序还原线。
三角括号表示WinUser32.mqh文件将会从默认目录调用(通常默认目录terminal_directory\experts\include)。
不需要搜索当前目录。
如果载开盘价栏内文件名称未锁,搜索将在当前目录中执行(加载的源代码主文件)。
不需要搜索标准目录。
D、Importing of functions函数从MQL4 编译模板 (*.ex4 文件) 和执行系统文件模板(*.dll文件)通过。
模板名称被指定在#import指令中。
来自输入函数和通过参量的兵役数据需要带有完整的描述部分。
函数描述会立即按照#import "模板"名称执行。
新的#import命令完成引入输入函数描述部分。
【MQL4】MQ语言简单说明与教程MQL II语言包括大量的用于控制现在和过去的报价、主要算法、逻辑运算的变量,并在建立主要指示器以及指示开立和控制头寸方面起关键作用。
这种语言是同TRADERSTION技术公司开发的EASY语言是相类似的,但它有一些特殊功能。
程序代码是由METAEDITOR文字编辑器编写的,它能将MQL II 不同部分设定为不同颜色,因而,可帮助用户以// 标记(双斜线)开始通过专家系统文本注释。
注释也可以用斜线星号星号斜线(/*(注释)*/,即如C语言一样)来标记。
编辑器是固定以灰色显示注释。
为了建立和控制投资交易战略,客户必须有一有关记录信号产生、变动的进行交易的结果的信息的日志文件。
人工智能系统的日志是在环球银行客户目录中的/logs/YYYYMMDD.log 文件下。
当前日志可直接访问下级终端窗口。
若要访问MQL II 语言的目录系统,就需要打开METAQOUTES语言窗口或者按下字典按钮或从工具菜单中查找,这使得用户能获取每一用该语言的信息的详细数据。
1.主要语言结构同其它语言一样,MQL II有一套主要的元素来构建他的主要结构。
这些元素应以特殊的方式组合与安排,用以表示特定的语句和公式。
语言的主要对象是数据,即三种类型的数据:数值型、逻辑型、字符型。
所有的数值型都用双重格式,逻辑型数据为真或假,字符串是用省略号标记的一串字符。
字符串又名为文本串。
数据可包括不同类型的变量,也可直接表示为源程序正本。
每一个METAQUOTES语句都是一完整结构,可以包含固定词、操作指令、数据、变量、表达式、标点符号,通常是以分号结束。
固定语句是指预先确定的具有特殊和具体意义的词汇。
操作指令是指定特定数据、变量、表达式操作的符号。
变量通常包含数值、字符、逻辑型数据。
表达式是指固定语句、变量、操作指令、数据的联合体,是语言中三种类型数据即数值型、字符型、逻辑型数据综合运用的结果。
标点符号是用来描述表达式、定义参量、划分句子以及数列再排序的。
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编程语言可以创建自定义指标和脚本。
自定义指标是根据特定算法计算的技术指标,用于辅助交易决策。
零基础学MQL4编程特别说明:本文中主要内容来源于英文版MQL4 Reference 摘译,本人在MQL4 Reference基础上进行了摘译、整理,加入了部分通俗的文字说明和简明易懂的图片示例等,目的是更易于初学者上手。
如有侵权,请及时联系本人删除。
第一部分初识MQL4一、MQL4概述MetaQuotes Language 4(MQL4)是用于编程交易策略和或自定义指标等的内置语言。
该语言由MetaQuotes Software Corp根据其在创建在线交易平台方面的长期经验开发。
使用这种语言,您可以创建自己的智能交易系统,使交易管理自动化。
这非常适合实施您自己的交易策略。
此外,使用MQL4,您可以创建自己的技术指标(自定义指标),脚本和库。
MetaQuotes Language 4(MQL4)是面向对象的高级编程语言,用于编写自动交易策略,用于分析各种金融市场的自定义技术指标。
它不仅可以编写各种设计用于实时操作的专家系统,还可以创建自己的图形工具来帮助您做出交易决策。
MQL4基于流行编程语言C ++的概念。
该语言具有枚举,结构,类和事件处理。
通过增加嵌入式主类型的数量,MQL4中的可执行程序与其他应用程序之间通过dll的交互现在变得越来越简单。
MQL4语法类似于C ++的语法,可直接对C/C++语言的程序进行编译。
MQL4包含了分析当前和以前收到的报价所需的大量函数,并且具有用于管理交易订单并对其进行控制的内置基本指标和函数。
MetaEditor(文本编辑器)突出显示不同的MQL4语言结构,用于编写程序代码。
它可以帮助用户很容易地在专家系统(也叫智能交易系统)文本中定位自己。
简要指南包含函数、操作、保留字和其他语言结构,并将其分为不同的类别。
MetaQuotes Language 4可以编写具有不同功能和用途的程序:(一)、智能交易系统(EA) 这是连接到某个图表的机械交易系统。
当启动交易系统后,EA开始运行,处理以下事件:初始化事件和取消初始化事件,新的订单接收发送事件,计时器事件,市场变化事件深度,图表事件和自定义事件。
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 进行表示。
MQL4编程参考中⽂版MetaTrader 4 平台MetaQuotes Language 4 (MQL4)编程参考(简体中⽂第1版)严泽平修订前⾔MetaQuotes (迈达克)软件公司是全球外汇、CFD和期货在线交易软件的领导⼚商之⼀。
该公司⼀直致⼒于在线⾦融交易软件的研制和专业开发,MetaTrader 4交易平台(MT4)就是该公司在此领域多年研究成果,全球⾦融机构使⽤其开发的MT4交易平台可以为客户提供专业的、⾼质量的在线交易服务。
⽬前,全球有100余家经纪公司和银⾏采⽤了MT4交易平台向客户提供在线⾦融交易服务,国内民⽣银⾏也选⽤了 MT4作为外汇交易平台。
MT4交易平台是MetaQuotes公司专业开发的产品,它⽐世界上那些⼤型经纪公司或银⾏⾃研的⾯向普通客户的交易平台更专业、运⾏更稳定、功能更强悍, 深受朋友们喜爱、好评,特别是其内置的⾯向⾼端客户的MQL4编程语⾔,强⼤的编程能⼒⽆⼈能与之⽐肩,是MT4平台最⼤特⾊之⼀。
MetaQuotes Language 4 (MQL4)是MT4平台客户端程序内置的交易策略编程语⾔。
这种语⾔允许⽤户创建⾃⼰的智能交易程序(EA),使⾃⼰的交易操作能够⾃动地执⾏,此外,⽤户还可以使⽤MQL4创建⾃定义指标、脚本和库。
MQL4编程语⾔包含了⼤量可以分析当前数据及历史数据所必备的函数,像⼤多数计算机程序设计语⾔⼀样,它也包含了多种数据类型、各种运算符、预定义常量、数组、控制语句和丰富的数据处理函数,内置了⼀些基本的技术指标和⽤户定单管理命令等。
集成在客户端的MetaEditor 4(ME4⽂本编辑器)是编写MQL4程序源码的集成开发环境。
ME4⽀持语法⾼亮显⽰,带有在线帮助系统,⽤户可在客户端内利⽤历史数据模拟运⾏程序,⾃⾏评估程序运⾏效果。
鉴于MT4平台在国内已有应⽤,在国际上已有百余家公司采⽤,国内炒汇朋友不可避免要⽤到该平台,学习和应⽤MQL4语⾔就是⾼⼿们抢占先机、⾛向辉煌的必经之路。
mql4 移动止损函数
摘要:
一、MQL4 移动止损函数概述
二、MQL4 移动止损函数的应用
三、MQL4 移动止损函数的优点和局限性
四、MQL4 移动止损函数的示例代码
正文:
一、MQL4 移动止损函数概述
MQL4 是一种用于编写自动交易策略的编程语言,其具有丰富的函数库和灵活的语法结构,使得交易者可以充分发挥自己的交易思路。
在MQL4 中,移动止损函数是一种非常有用的功能,可以帮助交易者在动态的市场环境中调整止损位置,降低亏损的风险。
二、MQL4 移动止损函数的应用
移动止损函数可以用于编写各种类型的交易策略,例如趋势跟踪策略、震荡策略等。
以下是一个简单的趋势跟踪策略的示例,该策略使用MQL4 的移动止损函数来调整止损位置。
这一章主要讲述MQL4编程语言基本的规则:•一些基本概念描述“tick”(最小波动值)之类的术语,运算的“控制”,程序中的“注释”。
在金融市场上交易的重心是价格的变化,所以tick作为重要事件支撑着MQL4程序的运行。
新tick到达时该做什么?采取什么样的行动?tick 是通往前线的触发条件。
不要忘了为你的代码添加注释。
•常量和变量引入常量和变量两个名词,解释两者的不同点。
常量,象它的名字暗示的那样,是恒久不变的,一次设置随时使用。
而变量,是代码中可以修改其内容的对象。
写程序而又不用常量和(或)变量根本办不到。
•数据类型数据的特定类型被用在任何编程语言中。
一个变量的类型是选择它的使用目的。
我们怎样声明一个变量?我们怎样对它进行初始化(设定初始值)?错误地选择变量的类型可能会降低程序的效率,甚至导致错误的结果。
•运算符和表达式运算符操作操作数。
操作符的类型有哪些?类型转换是做什么的?整形操作的特殊用途是什么?为什么记住不同数据类型的优先级很重要?如果不了解某些操作符的特性,你会遇到一些奇怪的问题。
•语句简单与复合语句。
如果需要把一组语句作为一个大的语句块执行,则需要把它们包含在复合语句里,而简单语句则不需要这样做。
使用语句的要求和具体的例子讲在下面给出。
•函数代码封装的需求把我们带向函数。
为了在程序的不同位置调用函数,需要进行函数声明并提供函数参数。
我们会考虑创建自定义函数的过程。
下面给出了使用标准函数的例子。
•程序类型脚本、自定义指标和EA是MQL4程序与金融市场交易相关的所有内容,为了更好地使用MT4客户端,有必要了解每一种程序类型的使用目的。
•一些基本概念••那么,我们关注的主题是MQL4的程序编写。
在我们开始详细地介绍编写程序的规则前,有必要先描述一下程序的特性和信息环境相关的基本概念。
MT4客户端是联机工作的,客户端图表随着金融市场的形势变化而不断更新。
客户端收到的tick便是市场的价格变动信息。
mql4编写盘整逻辑-回复以下是一篇关于MQL4编写盘整逻辑的文章:盘整逻辑是交易中一种常见的价格行为模式,它通常发生在市场行情出现波动之后,价格在一段时间内水平震荡,没有明显的趋势方向。
对于交易者来说,能够识别和利用盘整行情是一种有利的技巧,可以帮助他们捕捉市场波动中的机会。
在MQL4编写盘整逻辑之前,首先需要了解关于盘整行情的一些基本知识。
盘整行情通常发生在市场波动之后,也就是价格多次下跌或上涨后出现震荡的情况。
此时,市场参与者对于价格行动存在分歧,无法形成明确的趋势方向。
盘整行情通常在一个水平区间内进行,价格在该区间内来回波动,形成一种箱体或三角形等图形模式。
MQL4是一种专门用于编写自动交易程序的编程语言。
通过使用MQL4编写盘整逻辑,在交易软件中实现自动识别盘整行情以及自动执行交易操作的需求。
下面将一步一步介绍如何编写这样的逻辑。
步骤一:定义盘整行情的判断条件在编写盘整逻辑之前,需要定义一些判断条件来确定当前市场是否处于盘整行情中。
这些判断条件可以是技术指标的数值或者价格的波动范围。
常用的技术指标包括移动平均线、波动率指标或者相对强弱指标等。
根据交易者的策略和偏好,选择适合的指标来判断市场是否处于盘整行情中。
步骤二:编写判断盘整行情的函数在MQL4中,可以使用函数来编写判断盘整行情的逻辑。
通过计算和比较价格和指标的数值,确定当前市场是否处于盘整行情中。
例如,可以编写一个函数,计算移动平均线的斜率,并根据该斜率的值来判断市场是否处于盘整行情中。
通过编写这样的函数,可以在交易软件中自动识别盘整行情,并作出相应的交易动作。
步骤三:设置交易策略一旦识别了盘整行情,下一步就是制定相应的交易策略来利用这种行情。
根据交易者的偏好和风险承受能力,可以设置不同的交易逻辑。
例如,可以设置一个在价格突破盘整区间时开仓的策略,或者设置一个在价格回撤到盘整区间低点时开仓的策略。
通过设置不同的交易策略,可以做到在盘整行情中捕捉到市场的波动。
零基础学MQL4编程特别说明:本文中主要内容来源于英文版MQL4 Reference 摘译,本人在MQL4 Reference 基础上进行了摘译、整理,加入了部分通俗的文字说明和简明易懂的图片示例等,目的是更易于初学者上手。
如有侵权,请及时联系本人删除。
第一部分初识MQL4一、MQL4概述MetaQuotes Language 4(MQL4)是用于编程交易策略和或自定义指标等的内置语言。
该语言由MetaQuotes Software Corp根据其在创建在线交易平台方面的长期经验开发。
使用这种语言,您可以创建自己的智能交易系统,使交易管理自动化。
这非常适合实施您自己的交易策略。
此外,使用MQL4,您可以创建自己的技术指标(自定义指标),脚本和库。
MetaQuotes Language 4(MQL4)是面向对象的高级编程语言,用于编写自动交易策略,用于分析各种金融市场的自定义技术指标。
它不仅可以编写各种设计用于实时操作的专家系统,还可以创建自己的图形工具来帮助您做出交易决策。
MQL4基于流行编程语言C ++的概念。
该语言具有枚举,结构,类和事件处理。
通过增加嵌入式主类型的数量,MQL4中的可执行程序与其他应用程序之间通过dll的交互现在变得越来越简单。
MQL4语法类似于C ++的语法,可直接对C/C++语言的程序进行编译。
MQL4包含了分析当前和以前收到的报价所需的大量函数,并且具有用于管理交易订单并对其进行控制的内置基本指标和函数。
MetaEditor(文本编辑器)突出显示不同的MQL4语言结构,用于编写程序代码。
它可以帮助用户很容易地在专家系统(也叫智能交易系统)文本中定位自己。
简要指南包含函数、操作、保留字和其他语言结构,并将其分为不同的类别。
MetaQuotes Language 4可以编写具有不同功能和用途的程序:(一)、智能交易系统(EA) 这是连接到某个图表的机械交易系统。
当启动交易系统后,EA开始运行,处理以下事件:初始化事件和取消初始化事件,新的订单接收发送事件,计时器事件,市场变化事件深度,图表事件和自定义事件。
EA交易者可以通知您有关交易的可能性,并自动将订单直接发送至交易服务器的账户进行交易。
智能交易系统存储在terminal_directory \ MQL4 \ Experts中。
(二)、自定义指标除了已经集成到客户终端的技术指标之外,还有独立编写的技术指标。
像内置指标一样,它们不能自动交易,仅用于实施分析功能。
自定义指标存储在terminal_directory \ MQL4 \ Indicators中。
(三)、脚本这是一个旨在执行某些操作的程序。
与EA不同,脚本不处理任何操作,但start 事件除外(这需要脚本中的OnStart处理函数)。
脚本存储在terminal_directory \ MQL4 \ Scripts中。
(四)、库这是一组用于存储和分发常用程序块的自定义函数。
库不能自行开始执行。
库存储在terminal_directory \ MQL4 \ Libraries中。
(五)、包含文件这是最常用的自定义程序块的源文本。
在编译阶段,这些文件可以包含在Expert Advisor的源文本,脚本,自定义指标和库中。
使用包含文件比使用库更可取,因为在调用库函数时会发生额外的负担。
包含文件可以存储在与源文件相同的目录中- 在这种情况下,使用带双引号""的#include指令,如:#include "MyEA.mqh"。
另一个存储包含文件的地方是terminal_directory \ MQL4 \ Include,在这种情况下#include指令与尖括号<>一起使用,如:#include <MyEA.mqh>。
综上所述,MQL4可以编写上述五种程序。
这些程序都是运行在MT4上的,但各自的功能不同,如EA用于自动交易,可实现自定策略;自定指标用于实施分析,等等。
MQL4语言是在MQ语言编辑器上使用的,使用时须启动MQ语言编辑器。
二、MQ语言编辑器界面简述(一)、启动MQ语言编辑器有三种启动方式:一是定位到MT4安装目录,双击metaeditor.exe,或直接在桌面双击它(若桌面已经有该图标)。
如下图1-1所示:图1-1二是在MT4界面,在菜单栏点击“工具”、再点“MQ语言编辑器”。
或直接按F4。
如下图1-2:图1-2三是在MT4导航栏选择一个EA或指标后右键——“修改”,即打开了MQ语言编辑器。
图1-3示。
图1-3打开后的MQ语言编辑器如下图1-4:图1-4 (二)、MQ语言编辑器简介图1-51、标题栏:如图1-5,标题栏显示当前处于激活状态的程序名称。
2、菜单栏:共有8个菜单,分别是:文件、编辑……帮助等。
“文件”菜单下有“新建”、“打开”、“保存”等选项。
作用与WORD类似,这里不再详述。
3、工具栏:是菜单栏的便捷化按钮。
简要介绍见图1-5示。
点击“新建”按钮后,即新建一个应用程序。
点击“编写”按钮,即对当前程序进行编译。
注:编译即将当前的.mq4文件编译为.ex4文件,简单说,MT4应用程序上只认可或者说只能运行.ex4后缀格式的文件,通过MQ语言编辑器编写的文件是后缀名为.mq4格式的文件,当程序编写完毕后,必须点击“编写”按钮或按F7进行文件编译,程序在MT4上才能正常运行。
点击“调试”按钮,则程序直接跳转到MT4界面,进行进入指定图表的调试状态显示。
其它按钮请各自尝试。
4、导航区域:菜单栏点击“查看”下拉中的“导航”,显示或隐藏导航区域。
导航区域显示相关文件的存放路径。
如:Experts文件夹存放的是EA(智能交易系统或叫专家顾问)的存放路径。
5、工具箱显示在下方,当程序编写完毕,点击“编写”或F7后,工具箱显示编译情况和结果。
图示中即为编译通过,程序可以在MT4中调用了。
6、主界面区域即为程序代码编辑区。
交易系统策略、指标、脚本、包含文件等均在此区域用代码实现。
三、新建第一个EA程序My_OneEA1、启动MQ语言编辑器。
2、在“文件”菜单下,点击“新建”,弹出MQL向导文件对话框。
如下图1-6。
图1-6选中EA交易(模板)单选按钮,即为创建EA交易系统。
若选中自定义指标单选按钮,则创建自定义指标。
这里选择EA交易(模板)点击下一步。
3、进入EA交易性质设置对话框。
如下图1-7。
图1-7名称栏输入新建EA的名称,本例为My_OneEA。
作者:输入自定名称,本例见图示。
链接:输入自定的网页链接地址,本例为本人微博链接。
参数:即程序中需要用的变量,包括三个要素,名称/类型/初始值。
这个暂时不管,以后根据需要再在程序中创建。
点击下一步。
4、进入EA交易的事件处理程序向导对话框。
如下图1-8。
图1-8这里主要设置是否调用OnTimer()和OnChartEvent()两个事件函数。
需要就勾选,不需要就不选。
当然,若不选,后续若需要,也可以直接在程序中直接输入该事件函数来实现。
点击下一步。
5、进入测试事件处理程序设置对话框。
如图1-9。
图1-9一般不用,直接点完成。
6、至此,我们新建的EA交易系统的框架就创建好了。
详细框架说明如下图1-10和1-11示。
图1-10图1-117、点击“编写”按钮或按下F7,下方工具箱显示0错误0警告,说明编译正常通过,MQ语言编辑器已经将我们创建的程序My_OneEA交易系统正常编译,并生成了.ex4文件(可从安装目录中查看,也可以在MT4上的导航框中查看并双击运行了),见下图1-12。
图1-128、这只是一个空程序,它什么也不做。
因为,我们只是按MQL向导一步步点击生成了程序框架,并没添加任何我们自己的处理代码。
但它已经是一个能正常在图表上运行的EA交易系统了哈^_^^_^9、添加一些简单代码实现简单功能示例:在当前柱(K线)开盘价位置画一条水平线,要求:水平线按以下条件变换显示颜色:如果当前柱收盘价大于前一柱收盘价,显示为红色线;如果当前柱收盘价小于或等于前一柱收盘价,显示为蓝色线。
示例代码见图1-13和图1-14。
图1-13图1-14//如果你有C/C++基础,以下内容可跳过。
代码说明:变量部分:double Oprice=0; //当前柱开盘价double 是变量的类型,即此变量的类型声明为double(双精度类型),为什么要用双精度类型?因为,此变量是用来保存当前柱开盘价,不同交易品种这个价格数据是要保留小数点后几位几位的。
如果用整型(int),则只精确到个位数,则数据将失真或者说将出现不必要的严重错误。
更多类型说明,请参阅MQL4参考(600以上新版MQL4中文参考文档已译,有需要的可联系)。
Oprice 这是变量名,程序人自定的,取名权利完全在你手中,即可以是AAA或B001,等等,只要符合MQL取名规则就行。
(取名规则也在MQL4参考帮助文档中有说)类型与变量名之间须有至少一个空格(英文状态下的空格)。
= 这是赋值符号,意为将=号后面的值赋值给前面的变量。
0 是初始赋值。
;分号是本语句结束标志。
// 双斜线是注释符号,其后面的当前行内容作为程序人说明便于解读程序使用,程序编译时被剔除。
如本语句中的“当前柱开盘价”即为注释内容,编译时无用。
附注:如果你不知道什么是变量,可以参阅MQL参考,通俗说,变量是用来保存程序运行中某些需要修改和变动的一个参数的量的标识符号,从声明开始,程序就按这个标识符给它一定的存储空间(空间大小视类型而定),直到程序用完它后将其销毁并释放该存储空间。
于是,你也许会问,有些变量从程序一启动就要用,直到程序结束,有些变量仅在某些条件下使用,过后就不用了,为了不浪费存储空间资源,该变量什么时候不用了就应该销毁,是的,这就有了全局变量和局部变量之说,后续资料将详细说之。
本语句的意思:声明一个双精度类型变量Oprice,同时将0赋值给这个变量。
以下两句类同,分别保存当前柱收盘价和前一柱收盘价double LasrCprice=0; //当前柱收盘价double CurCprice=0; //前一柱收盘价初始化部分:图1-15第23行其语义第22行已注释说明。
需要补充的是iOpen(...)是MQL预定内置函数,这个函数用于获取指定品种名称、指定周期、指定偏移柱数的开盘价,该函数有3个参数,分别用“,”逗号隔开(英文状态下的逗号),第一个参数为要获取开盘价的品种名称,Symbol()变即内置函数,此函数为无参函数,用于获取当前图表的品种名称的字符串,第二个参数为要获取开盘价的图表时间周期(如H1、D1等),0表示当前图表时间周期,第三个参数为指定偏移柱数,0表示当前柱(即从右向左数第1柱),1表示从右向左数第2柱,依此类推。