MQL5关键知识点总结(一)
MQL5统计学基础(电子书版)
此表列出的数据称为样本,而数据数量称为样本大小。我们将看一看给定样本的某些参数。所有参数都是样本参数,因为它们是 从样本数据得出的结果,而不是从随机变量数据。
1. 样本平均值
样本平均值指样本中的平均值。在我们的例子中,它是该组中人的平均身高。
要计算平均值,我们应:
1. 求所有样本值之和。 2. 将得到的值除以样本数量。
因此,回到在简介中指出的重点,知道并理解统计学和概率之间的关系,以及具有风险评估和风险状况的相关知识也非常重要。 但是,后两者不在本文的讨论范围之内。
基本统计参数
现在,让我们回顾一下基本的统计参数。假定我们拥有一组中 10 个人的身高数据,以厘米为单位:
1 2 3 4 5 6 7 8 9 10 身高 173 162 194 181 186 159 173 178 168 171
//+------------------------------------------------------------------+
//| Script program start function
|
//+------------------------------------------------------------------+
概率论和统计学
任何统计都是生成统计的对象的状态改变的结果。让我们讨论以小时为单位的时间框架中欧元兑美元 (EURUSD) 的价格图:
在这个例子中,对象是两种货币之间的关系,而统计是这两种货币在每一时间点的价格。两种货币之间的相关性如何影响它们的 价格?为什么我们在给定的时间区间得到此价格图而不是另外的价格图?为什么价格当前是下跌的而不是上涨的?这些问题的答 案是“概率”这一词。视概率而定,每一个对象能够取这个值,也能够取另一个值。
针对初学者以 MQL5 编写“EA 交易”的分步指南 - MQL5文章
简介
本文的目标受众是想要学习如何以全新的 MQL5 语言编写简单“EA 交易”的初学者。首先,我们将定义我们的 EA(EA 交易)的功 能,接下来是 EA 如何实现这些功能。
1. 交易策略
EA 的功能:
EA 将监视一个特定的指标,当满足某一条件时(或满足某些条件时),它将基于当前满足的条件进行交易(卖出/出售或买 入/购买)。
//其他参数 …
这是单行注释
/* 这是一个多行注释
*/
5/24
这是多行注释。多行注释的起始和结束以符号对 /* 和 */ 标示。 在编译代码时,编译程序会忽略所有注释。
将单行注释用于输入参数是一个很好的方式,使 EA 用户可以理解那些参数的意义。 在 EA 输入属性上,我们的用户将不会看到参 数本身,而是看到如下所示的注释:
从上述各种数据类型的说明我们可以得知,无符号整数类型不是为存储负值而设计,任何设置负值的尝试可能导致意想不到的后 果。例如,若要存储负值,不能将其存储于无符号类型中(即 uchar、uint、ushort、ulong)。
回到有关 EA 的讨论。考察这些数据类型,您会同意我们使用 char 或 uchar 数据类型,因为我们要在这些参数中存储的数据分别 小于 127 或 255。要获得良好的内存管理,这么做是最合适的。但为了便于我们讨论,我们将继续使用 int 类型。
inputint TakeProfit=100; //获利
inputint ADX_Period=8; //ADX周期
inputint MA_Period=8; //移动平均周期
inputint EA_Magic=12345; //EA幻数
MQL5关键知识点总结(五)(1)
MQ15关键知识点总结(五)知识点颜色说明:01、不同字体表示一般级别的知识点。
02、加黑字条表示中等级别的知识点。
03、红色字体表示高级别知识点。
缸色加黑字条衰示极其玄美、易出错知识点。
0801、参数TrU只是市场报价中的交易品种0802、如果一选择参量是true,函数返回字符的数量就在市场窗口中选择。
0803、如果值是fa1se,返回所有交易品种的数量。
0804、stringSymbo1Name(int pos z//列表中的数字boo1se1ected //true-只是市场报价中的交易品种);0805、返回交易品种名称。
0806、SeIeCted[in]请求方式,如果值是true,该交易品种从其在市场观测的选择中找出。
0807、如果值是fa1se,交易品种从总目录中找出。
0808、函数返回:包含交易品种名称的字符串的值。
0809、这里的字符串是包含所有品种名称的字符而不是〃OSOI1〃这样的东西。
0810χboo1Symbo1Se1ect(stringname, //交易品种名称boo1 se1ect //添加或者移除);0811、在市场观测中选择一个交易品种或者从窗口中移动一个交易品种。
0812、第二个参数决定是添加还是移除。
0813、如果值是fa1se,交易品种从市场观测中删除。
0814、然后在窗口中选择一个交易品种,0815、如果该品种有开仓则不能关闭这个窗口。
0816、boo1Symbo11sSynchronized(stringname,//交易品种名称);0817、该函数检验在客户端中选出来的交易品种数据与交易服务器中的数据是否同步。
0818、如果数据是同步的,返回true,否则返回fa1se,>0819、doub1eSymbo11nfoDoub1e(stringname,//交易品种intpropJd//属性标识符);0820、上述用法快速返回规定值。
0821、boo1Symbo11nfoDoub1e(stringname,//交易品种intpropjd,〃属性标识符doub1e&doub1e_var//这里假设属性值);0822、返回真值或失败值取决于函数操作是否成功。
mql5语言编程手册中文
mql5语言编程手册中文1. 语言概述MQL5是一种专为MetaQuotes Language 4(MQL4)的高级用户设计的编程语言。
这种语言主要被用于开发交易算法和自定义交易平台功能。
由于它的面向对象性质,MQL5提供了一种灵活且强大的方式来编写和管理复杂的交易策略。
2. 语法基础-------MQL5的语法与C++类似,但也有一些独特的特点。
主要区别在于数据类型、声明方式、控制结构和函数定义等方面。
了解C++等语言的程序员会很快适应MQL5的语法。
3. 数据类型-------MQL5有18种不同的数据类型,包括:int, double, string, datetime, boolean等。
每种数据类型都有其特定的用途和限制。
例如,int类型用于整数,而string类型用于文本数据。
4. 变量与常量--------在MQL5中,变量被用于存储在程序运行过程中改变的值。
常量是那些在程序运行期间不会改变的值。
所有变量都必须先声明后使用。
5. 控制结构-------MQL5提供了许多控制结构,包括条件语句(if-else)和循环语句(for, while)。
这些结构允许程序员根据不同的情况执行不同的代码,或者重复执行某段代码。
6. 函数与过程--------函数是一段可重用的代码,它接受输入参数并返回一个值。
过程类似于函数,但不返回值。
通过使用函数和过程,可以减少代码重复,并提高代码的可维护性。
7. 数组与矩阵--------MQL5支持一维和多维数组以及矩阵。
这些数据结构允许程序员存储和操作大量数据。
数组和矩阵的使用需要理解相关的索引和边界检查。
8. 文件操作-------MQL5允许程序员进行文件操作,包括读取和写入文件。
这使得程序员可以从外部文件读取数据,或者将数据保存到外部文件中。
在进行文件操作时,必须考虑到平台和路径的问题。
9. 调试与优化--------MQL5提供了一套完整的调试工具,包括断点、单步执行、变量监视等。
在 MQL5 中寻找趋势的几种方法
在MQL5 中寻找趋势的几种方法简介所有交易员都知道一个规则:”趋势是您的好朋友,要跟着它走。
“但是到底什么是趋势,这却是仁者见仁智者见智的问题。
几乎每位交易员都听说过一些可怕的故事,这些故事的中心思想就是:逆趋势而行者,亡。
任何一位交易人都有可能面临准确把握趋势的好机会。
也许这就是每个人都想找到的万能圣杯。
在本文中,我们将讨论几个判断趋势的方法。
更准确地说,是如何通过MQL5 方法,制定几个经典的趋势判断程序。
1. 什么是趋势,为什么要知道趋势首先,让我们来介绍一下趋势的广义概念。
趋势,是市场价格变化的长期倾向(方向)。
趋势的这个广义概念会产生几个结果:价格变化的方向以时间周期为其基础,考虑的是价格时间序列。
价格变化的方向需要选择一个参考点,从这个点开始时间序列的分析,判断趋势。
让我们用图形表示这个概念:图1. 趋势分析让我们来看这个图,您会发现从2005 年末至2006 年5 月,整体的趋势为上涨(图中绿色箭头)。
但是,当我们把实现缩短到图中更短的时间周期,就会发现2006 年2 月的趋势明显为下降(图中红色箭头),而几乎整个1 月的价格都处于盘整期(黄色箭头)。
因此,在您判断趋势之前,首先要决定您想要选择的时间周期。
对于交易而言,时间周期最重要的作用,就是决定在市场中从建仓到平仓的整个持仓时间。
此外,还会决定您的保护性止损和预计平仓操作,以及交易操作频率。
本文的目的,就是帮助交易新手娴熟运用Meta Trader 5 平台的趋势判断工具。
本文还为您提供关于编写简单指标的基础知识,让这个程序自动运行。
其终极目标就是编写简单的EA 交易,使用这些指标进行自动交易。
我们将以欧元美元日线图(1 天时间周期)为例,这是Forex 市场中流动性最强的工具。
该时间周期的持仓时间可以从几天到几个月不等。
相应地,目标就是达到几百甚至几千的点位,在几百个点位之外的地方设置保护性止损。
广义而言,以下所有描述都可以用于任何一个时间周期。
MQ基础知识及操作指南
MQ通讯机制一.MQ基本操作MQ中有几个很重要的组件:队列管理器(QueueManager)、队列(Queue)和通道(Channel)。
其基本的操作方法如下:创建队列管理器crtmqm –q QMgrName-q是指创建缺省的队列管理器删除队列管理器dltmqm QmgrName启动队列管理器strmqm QmgrName如果是启动默认的队列管理器,可以不带其名字停止队列管理器endmqm QmgrName 受控停止endmqm –i QmgrName 立即停止endmqm –p QmgrName 强制停止显示队列管理器dspmq –m QmgrName运行MQSeries命令runmqsc QmgrName如果是默认队列管理器,可以不带其名字往队列中放消息amqsput QName QmgrName如果队列是默认队列管理器中的队列,可以不带其队列管理器的名字从队列中取出消息amqsget QName QmgrName如果队列是默认队列管理器中的队列,可以不带其队列管理器的名字启动通道runmqchl –c ChlName –m QmgrName启动侦听runmqlsr –t TYPE –p PORT –m QMgrName停止侦听endmqlsr -m QmgrNameMQSeries命令定义死信队列DEFINE QLOCAL(QNAME) DEFPSIST(YES) REPLACE设定队列管理器的死信队列ALTER QMGR DEADQ(QNAME)定义本地队列DEFINE QL(QNAME) REPLACE定义别名队列DEFINE QALIAS(QALIASNAME) TARGQ(QNAME)远程队列定义DEFINE QREMOTE(QRNAME) +RNAME(AAA) RQMNAME(QMGRNAME) +XMITQ(QTNAME)定义模型队列DEFINE QMODEL(QNAME) DEFTYPE(TEMPDYN)定义本地传输队列DEFINE QLOCAL(QTNAME) USAGE(XMITQ) DEFPSIST(YES) +INITQ(SYSTEM.CHANNEL.INITQ)+PROCESS(PROCESSNAME) REPLACE创建进程定义DEFINE PROCESS(PRONAME) +DESCR(‘STRING’)+APPLTYPE(WINDOWSNT)+APPLICID(’ runmqchl -c SDR_TEST -m QM_ TEST’)其中APPLTYPE的值可以是:CICS、UNIX、WINDOWS、WINDOWSNT等创建发送方通道DEFINE CHANNEL(SDRNAME) CHLTYPE(SDR)+CONNAME(‘100.100.100.215(1418)’) XMITQ(QTNAME) REPLACE 其中CHLTYPE可以是:SDR、SVR、RCVR、RQSTR、CLNTCONN、SVRCONN、CLUSSDR 和CLUSRCVR。
MQL5 快速上手
为什么说您需要MQL5您决定学习现代MQL5 交易策略编程语言的原因可能多种多样,但不管怎样,我们都热烈欢迎!有经验的用户可以随心所欲地徜徉浏览此语言文档,以及于此提供的各种文章和服务。
但如果您是首次接触MetaTrader 5 客户端,刚开始可能会对许多事物觉得不习惯,晕头转向。
那么,通过掌握MQL5,您能得到哪些好处呢?可能您已经决定要学习一门当代的OOP (面向对象编程)语言。
学成MQL5 后,您就可以轻松掌握其它的高级语言,比如C++、С#、Java 等。
当然,这并不是说它们非常相似,而是其基础都大同小异。
或者,您已经掌握了上述某种语言,而且有制作自己的交易机器人或信息分析系统、以供金融市场中使用的想法?这种情况下,您就可以轻松掌握专门为此创建的专用MQL5 语言。
又或者,您已经懂得MQL4 语言,且活学活用于制作各种交易机器人,并针对备受欢迎的MetaTrader 4 交易终端制作指标?那么,您只需要驾轻就熟地查看新MQL5 语言的全部阵容,以及新MetaEditor 5 开发环境的所有优点。
学习MQL5 的理由可能多种多样,而我们会为您提供一些小贴士,告诉您从哪里着手以及重点关注的内容。
那么,我们开始吧。
此语言的可能性与功能MetaQuotes Language 5 (MQL5)由MetaQuotes Software Corp. 基于其在创建几代在线交易平台领域的长时间经验开发而成。
主要优势:▪语言语法尽可能贴近C++。
允许MQL5 轻松适配用其它语言编写的应用程序。
▪MQL5 程序的运行速度几乎与С++ 程序一样快。
▪丰富的内置功能,可供创建技术指标、图形对象及用户界面。
▪内置OpenCL 支持。
▪一个巨大的标准库以及代码库中的海量示例。
▪数十数千单线程的并行数学优化任务,且无需编写任何代码。
致编程新手如果您没有高级语言编程方面的经验,在学习MQL5 语言基础时,您可以将任何C++ 手册作为示例参照:语法、数据类型、变量、操作符、函数、OOP 等。
针对初学者的 MQL 5 中的自定义指标(电子书版)
针对初学者的 MQL 5 中的自定义指标Nikolay Kositsin | 13 九月, 2013简介深刻理解任何知识学科(无论是数学、音乐还是编程等)的基础是对其基础的学习。
如果从很小的时候起就开始相似的学习则再好不过,这样对于基础的理解要容易得多,并且理解具体而全面。
遗憾的是,大部分人是人到中年才开始接触金融和股票市场,所以学习起来并不容易。
在本文中,我将帮助大家克服这一理解MQL5 和为 MetaTrader 5 客户端编写自定义指标的最初障碍。
作为简单示例的 SMA 指标学习事物最有效且最合理的方式是实际问题的解决方案。
既然我们讨论的是自定义指标,我们将从学习简单指标开始,简单指标包含在MQL5中展示指标操作的基础方面的一些代码。
作为示例,我们会探讨最有名的技术分析指标 - 简单移动平均线 (SMA)。
它的计算简单:SMA = SUM (CLOSE (i),MAPeriod) / MAPeriod其中:SUM - 值的总和;CLOSE (i) - 第 i 个柱的收盘价;MAPeriod - 求平均的柱的数量(平均周期)。
以下是不包括任何额外功能的该指标的代码://+------------------------------------------------------------------+//| SMA.mq5 |//| Copyright 2009, MetaQuotes Software Corp. |//| |//+------------------------------------------------------------------+#property indicator_chart_window#property indicator_buffers 1#property indicator_plots 1#property indicator_type1 DRAW_LINE#property indicator_color1 Redinput int MAPeriod = 13;input int MAShift = 0;double ExtLineBuffer[];//+------------------------------------------------------------------+//| 自定义指标初始化函数 |//+------------------------------------------------------------------+void OnInit(){SetIndexBuffer(0, ExtLineBuffer, INDICATOR_DATA);PlotIndexSetInteger(0, PLOT_SHIFT, MAShift);PlotIndexSetInteger(0, PLOT_DRAW_BEGIN, MAPeriod - 1);}//+------------------------------------------------------------------+//| 自定义指标迭代函数 |//+------------------------------------------------------------------+int OnCalculate(const int rates_total, const int prev_calculated, const int begin, const double &pric {if (rates_total < MAPeriod - 1)return(0);int first, bar, iii;double Sum, SMA;if (prev_calculated == 0)first = MAPeriod - 1 + begin;else first = prev_calculated - 1;for(bar = first; bar < rates_total; bar++){Sum = 0.0;for(iii = 0; iii < MAPeriod; iii++)Sum += price[bar - iii];SMA = Sum / MAPeriod;ExtLineBuffer[bar] = SMA;}return(rates_total);}//+------------------------------------------------------------------+在 MetaTrader 5 客户端中的运行结果如下:首先,我们需要考虑两件事情 - 一方面,每个代码串的目的,另一方面,程序代码和客户端的交互。
MQL5关键知识点总结
MQL5关键知识点总结MQL5是MetaTrader 5的编程语言,用于编写自动化交易和技术指标的程序。
在掌握MQL5的关键知识点之前,首先需要了解一些编程的基本概念和术语。
以下是MQL5的关键知识点总结。
1. 基础语法和数据类型:MQL5的基础语法与大多数其他编程语言类似。
它具有变量、数据类型(如整数、浮点数和字符串)、运算符(如加、减、乘和除)和控制语句(如if-else和for循环)等基本概念。
2.函数和指标:在MQL5中,函数是执行特定任务的代码块。
您可以创建自己的函数,并通过参数向函数传递数据。
指标是技术分析工具,用于分析市场数据并发出交易信号。
3.变量和赋值运算符:在MQL5中,变量用于存储数据。
您可以使用赋值运算符将值赋给变量,并使用变量进行计算和操作。
变量可以是任何数据类型,包括数字、布尔值和字符串。
4. 条件和循环语句:条件语句(如if-else语句)用于根据特定条件执行特定代码。
循环语句(如for和while循环)允许您重复执行一段代码,直到满足特定条件。
5.数组和结构体:数组是一种用于存储和处理多个值的数据结构。
您可以使用数组在MQL5中存储和操作大量数据。
结构体是一种自定义数据类型,用于组合多个不同类型的数据。
6.内置函数和指标:MQL5提供了许多内置函数和指标,用于执行常见的任务,如计算指标值、执行交易操作和处理历史数据。
7.访问市场数据:MQL5允许您访问市场数据,如当前价格、历史价格和交易量。
您可以使用这些数据进行技术分析和制定交易策略。
8.执行交易操作:MQL5允许您执行交易操作,如开仓、平仓和修改订单。
您可以使用内置函数和指令来执行这些操作,并通过编程自定义交易策略。
9.错误处理和调试:在编写MQL5程序时,可能会出现错误。
MQL5提供了错误处理机制和调试工具,以便您能够识别和修复错误。
10.自定义指标和交易策略:使用MQL5,您可以创建自己的指标和交易策略,以满足个人的交易需求。
mql5中数学计算
mql5中数学计算在MQL5中,数学计算是非常重要的,它可以帮助我们进行各种金融市场分析和交易策略的开发。
MQL5提供了许多内置的数学函数和操作符,可以进行常见的数学计算。
首先,MQL5中的数学函数包括基本的算术运算函数,如加法、减法、乘法和除法。
例如,可以使用加法函数`MathSum()`来计算两个数的和,使用减法函数`MathSub()`来计算两个数的差,使用乘法函数`MathMul()`来计算两个数的乘积,使用除法函数`MathDiv()`来计算两个数的商。
此外,MQL5还提供了一些常见的数学函数,如绝对值函数`MathAbs()`、平方根函数`MathSqrt()`、指数函数`MathExp()`、对数函数`MathLog()`等。
这些函数可以用于进行各种数值计算和数学运算。
除了基本的数学函数,MQL5还提供了一些高级的数学函数,如三角函数(如正弦函数`MathSin()`、余弦函数`MathCos()`、正切函数`MathTan()`等)、指数函数(如自然对数函数`MathLog()`、以10为底的对数函数`MathLog10()`等)、取整函数(如向上取整函数`MathCeil()`、向下取整函数`MathFloor()`等)等。
这些函数可以用于更复杂的数学计算和分析。
此外,MQL5还提供了一些随机数生成函数,如随机数函数`MathRand()`和随机浮点数函数`MathRandFloat()`。
这些函数可以用于生成随机数,用于模拟随机事件或进行蒙特卡洛模拟等。
除了内置的数学函数,MQL5还支持自定义函数的编写。
通过定义自己的数学函数,可以实现更复杂的数学计算和算法。
在自定义函数中,可以使用MQL5提供的数学操作符和内置函数,也可以使用自己编写的辅助函数和算法。
总之,MQL5提供了丰富的数学计算功能,可以满足金融市场分析和交易策略开发的需求。
无论是基本的算术运算还是高级的数学函数,MQL5都提供了相应的函数和操作符,方便开发者进行各种数学计算和分析。
mql5 数组的运算
mql5 数组的运算
在MQL5中,数组是一种非常重要的数据结构,可以用于存储和操作大量的数据。
数组的运算包括对数组元素的访问、修改、计算以及数组之间的操作等。
首先,我们可以通过索引来访问数组的元素。
MQL5中的数组索引是从0开始的,也就是说第一个元素的索引是0,第二个元素的索引是1,依此类推。
通过数组索引,我们可以读取或者修改数组中的元素值。
其次,MQL5提供了丰富的数组操作函数,比如ArrayCopy()函数可以用于数组的复制,ArrayFill()函数可以用于给数组填充特定的值,ArrayMaximum()和ArrayMinimum()函数可以用于找到数组中的最大值和最小值,ArraySort()函数可以对数组进行排序等等。
这些函数可以帮助我们对数组进行各种运算操作。
另外,MQL5还支持数组之间的运算,比如可以对两个数组进行相加、相减、相乘等操作。
需要注意的是,对数组进行运算时,需要确保数组的维度和大小是匹配的,否则会导致运算错误。
除了以上提到的基本运算,MQL5还支持更加复杂的数组操作,比如多维数组的处理、数组的遍历操作、数组的统计计算等等。
通过灵活运用这些数组操作,我们可以更加高效地处理和分析大量的数据。
总之,MQL5中的数组运算涵盖了对数组元素的访问、修改以及数组之间的各种操作,通过这些操作,我们可以方便地处理和操作各种类型的数据。
希望这些信息能够帮助到你。
MQL5关键知识点总结(四)
MQL5关键知识点总结(四)薛辉原创知识点颜色说明:01、不同字体表示一般级别的知识点。
02、加黑字条表示中等级别的知识点。
03、红色字体表示高级别知识点。
红色加黑字条表示极其重要、易出错知识点。
0601、比较好的初始化变量是:GetTickCount()函数的返回值,因为是毫秒数值,所以重复概率很低。
0602、取代MathSrand()使用srand().0603、double MathTan(double rad // 弧度参数);0604、rad [in] 弧度角0605、取代MathTan()可以使用tan().0606、bool MathIsValidNumber(double number // 检测数);0607、检测双精度数的正确性。
0608、返回真值,如果检测值是可以接受的实数。
0609、如果检测值是正无穷或者负无穷大,或者没有数字(NaN),函数返回错误值。
0610、这个函数是MQL5中新推出来的函数。
对于检测双精度类型数据的有效性有重要意义。
0611、字符串是任何程序中一种极其重要,但有有一定复杂程度的数据类型。
0612、bool StringAdd(string& string_var, // 将要添加内容的字符串string add_substring // 被添加的字符串);0613、在字符串末尾添加子串。
0614、第一个参数是使用引用形式提供的,新字符串添加在第一个字符串的末尾。
0615、成功返回true,否则是false,为了获得错误代码,可以调用GetLastError() 函数。
0616、int StringBufferLen(string string_var // 字符串)0617、计算字符串缓冲区的大小。
0618、0 值表示字符串是恒量,缓冲器大小不改变。
0619、-1 表示字符串属于客户端,缓冲器内容修正拥有不确定因素。
0620、最小缓冲器大小是16。
MQL5关键知识点总结(二)
MQL5关键知识点总结(二)薛辉原创知识点颜色说明:01、不同字体表示一般级别的知识点。
02、加黑字条表示中等级别的知识点。
03、红色字体表示高级别知识点。
04、红色加黑字条表示极其重要、易出错知识点。
0201、OnStart()函数就是启动事件处理程序,运行脚本时自动生成。
0202、OnInit() 函数是初始化事件处理程序。
0203、必须是空型或者整型,无参数。
0204、初始化事件处理程序在EA 交易或者指标下载后即时生成;它不生成脚本。
0205、OnInit()函数用于初始化。
如果OnInit()返回值为整型,非零结果意味着初始化失败,生成初始化失败原因代码REASON_INITFAILED 。
0206、OnDeinit() 函数称为失败初始化,是初始化失败事件处理程序。
0207、必须是空型且有一个包括初始化失败原因代码的常量整型参数。
0208、如果声明不同类型,编译程序会发出警告,但函数不可调用。
0209、对于脚本来说不会生成初始化失败事件,因此OnDeinit()函数不用于脚本。
0210、仅仅EA交易依附的图表中,交易品种收到新订单号时EA交易会生成新订单号事件。
0211、自定义指标或者脚本中确定OnTick()函数是无效的,因为订单号事件不为它们而生。
0212、订单号事件只为EA交易而生,但是却不意味着EA交易需要OnTick()函数,因为EA 交易不仅需要生成订单号,也需要生成计时器,预定事件和图表事件。
0213、计时器事件发生时调用OnTimer()函数,由系统计时器生成仅用于EA 交易-不能用于脚本或者指标。
0214、函数EventSetTimer()接收事件,当同意该事件声明时,设置事件发生频率。
0215、可以用函数EventKillTimer()为特殊EA交易注销计时器事件。
0216、函数必须为空值,没有参数。
0217、建议在OnInit() 函数中调用EventSetTimer() 函数。
MQL5关键知识点总结(一)
MQL5关键知识点总结(一)薛辉原创知识点颜色说明:01、不同字体表示一般级别的知识点。
02、加黑字条表示中等级别的知识点。
03、红色字体表示高级别知识点。
04、红色加黑字条表示极其重要、易出错知识点。
0001、静态库的功能还是有的。
只是写法和过去有些不同了。
函数定义时需要使用export 关键词输出。
0002、如何把类包含在静态库中还不清楚,MQL5示例代码中没有提供介绍。
0003、静态库文件编译后的EX5文件必须放在library目录下。
0004、头文件中必须引入ex5文件,并且必须在“#import”之间导入函数名称。
0005、MT5的安装目录下有MQL.EXE程序这个程序负责编译MQL5应用程序。
0006、MQL.EXE程序既可以编译程序生成可执行文件,也可以只检查语法是否准确。
检查语法节约很多时间。
0007、Bases目录下面主要是保存各种历史数据。
0008、历史数据按照不同服务器来源放在不同目录下面。
0009、历史数据又根据不同交易品种放在不同目录下。
0010、历史数据似乎是以年为单位保存在*.hcc文件中。
0011、*.hcc文件应该是一种经过压缩的文件,体积很小。
一般单纯数据文件比较好压缩。
0012、logs目录下以日期为单位记录重大事件。
0013、metaeditor.log文件记录编辑器的一些重要事件。
0014、Profiles目录应该是一些配置文件。
0015、Sound目录下面是一些声音文件。
0016、tester目录下保存的是测试用数据。
0017、MQL5目录是最重要的程序目录。
0018、EA系统、脚本、指标、包含文件、库文件都在这个目录下。
这个目录显然应该定期备份的。
0019、MT4平台对应的文件名直接就是expert,EA程序直接就放在该目录下面。
0020、MQL5\Experts提供了一些EA系统的源代码,对于学习EA开发帮助非常大。
不过不适合初学者。
0021、MQL5\Include分成了多个文件夹。
MQL 中文版
1 钛合金制造—微量润滑-MQL(近干切削-NDM)1.1微量润滑-MQL (近干切削-NDM)1.1.1概述切削加工中一直试图减少切削液的用量,甚至完全不用。
由于切削液处理只过滤掉尺寸比0.03mm大的杂质,因此,每排放1000L乳化液平均要付约9分钱的排污费,这对于大批量生产是一个不小的负担。
如在汽车传动箱壳体的加工中,每个工件分担的排污费约40分,这相当于全部刀具费用的30%~40%。
此外切削液对人身体也是有很大的危害,因此欧盟等世界各国相继对切削液给出了环保标准,并推行绿色加工技术。
具有代表性的绿色加工技术有:绿色湿式切削(生物稳定型切削液、水蒸汽冷却、绿色切削液)、干式切削(包括干切削、气体射流、低温冷风切削、低温液氮冷却切削)、以及亚干式切削(微量润滑MQL、微量冷却润滑Minimum Quantity Cooling Lubrication MQCL、低温微量润滑)等[1-3]。
然而,不采用任何辅助手段的纯干切削,又在刀具磨损、冷却、断屑、零件表面加工质量等方面存在缺陷。
一个折中的方案就是应用MQL(最小量润滑)的技术。
于是,采用少切削液(微量润滑)的对环境友好的低成本的绿色加工技术,已经成为当前各国推广的一个趋势。
在德国,MQL装置近几年来每年有15000套的市场,而且还将进一步增加。
微量润滑MQL(Minimum/Minimal Quantity Lubricant/Lubrication,Microlubrica- tion)将压缩气体与极微量润滑油混合气化后,喷射(喷雾)到加工区,对刀具和工件之间的加工部位进行有效润滑的一种方法。
而采用这种润滑方式的切削又称为半干切削(Semi Dry Machining)、近干切削NDM(Near Dry Machining)、准干式切削、亚干式切削、MMKS ( Minimalmengen- Kühlschmierung)。
微量润滑技术是把压缩的气液两相流体喷出时,体积骤然膨胀对外做功,消耗了内能,可以使常温的气液温度降低10°C左右;高速喷射的分子级细微的润滑油在刀具刃部和工件上的瞬间渗透力和附着力,超过目前所知的一切冷却液和润滑液,大大减小了刀具和工件间的相互作用力,最大限度地减少了加工产生的热量;再由于两相流体有较高的速度,能及时充分地冲走碎屑,带走加工产生的热量。
MQL5跨平台专家交易系统订单管理器(电子书版)
(MQL5)
bool OrderSend( MqlTradeRequest& MqlTradeResult& );
request, result
// 查询结构 // 应答结构
MQL4 函数有一个更直接的方式。而另一方面, MQL5 函数更复杂一些, 但将参数的数量减少到两个, 包含请求和结果的数据 (struct)。有关将 MQL5 标准库的某些组件导入 MQL4, 特别是 CExpertTrade 和 CExpertTradeX 类这个障碍, 已经在前一篇文章中很 大程度上得以解决。因此, 订单管理器将会简单地利用这些类来确保在发出交易请求时两种语言之间的兼容性。
设置验证 订单管理器上的设置验证将通过调用该类的 Validate 方法来实现。所述方法的代码显示在以下代码段中:
bool COrderManagerBase::Validate(void) const { if(CheckPointer(m_moneys)==POINTER_DYNAMIC) { if(!m_moneys.Validate()) return false; } if(CheckPointer(m_stops)==POINTER_DYNAMIC) { if(!m_stops.Validate()) return false; } return true; }
如图例中所示, 该方法从准备操作所需的数据开始。如果该位置允许入场并满足预设条件, 则该方法将处理订单入场。否则, 处理结 束。在发送交易请求之前, 必要的数值需要先行计算。如果请求成功, 则检查结果, 并创建一个新的 COrder 实例, 然后将其添加到当 前订单/仓位列表 (m_orders) 中。 仅执行纯计算的方法可以在基类中找到。由于两种语言调用函数的方法不同, 所以将基类方法扩展到各自特定语言的类中。然而, 在 这种方法上, 操作如何执行差别甚微。因此, 基类方法是纯虚拟的, 并且可以在两个版本之间分别找到相应实现。我们将在下面找到 基类方法的实现:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MQL5关键知识点总结(一)薛辉原创知识点颜色说明:01、不同字体表示一般级别的知识点。
02、加黑字条表示中等级别的知识点。
03、红色字体表示高级别知识点。
04、红色加黑字条表示极其重要、易出错知识点。
0001、静态库的功能还是有的。
只是写法和过去有些不同了。
函数定义时需要使用export 关键词输出。
0002、如何把类包含在静态库中还不清楚,MQL5示例代码中没有提供介绍。
0003、静态库文件编译后的EX5文件必须放在library目录下。
0004、头文件中必须引入ex5文件,并且必须在“#import”之间导入函数名称。
0005、MT5的安装目录下有MQL.EXE程序这个程序负责编译MQL5应用程序。
0006、MQL.EXE程序既可以编译程序生成可执行文件,也可以只检查语法是否准确。
检查语法节约很多时间。
0007、Bases目录下面主要是保存各种历史数据。
0008、历史数据按照不同服务器来源放在不同目录下面。
0009、历史数据又根据不同交易品种放在不同目录下。
0010、历史数据似乎是以年为单位保存在*.hcc文件中。
0011、*.hcc文件应该是一种经过压缩的文件,体积很小。
一般单纯数据文件比较好压缩。
0012、logs目录下以日期为单位记录重大事件。
0013、metaeditor.log文件记录编辑器的一些重要事件。
0014、Profiles目录应该是一些配置文件。
0015、Sound目录下面是一些声音文件。
0016、tester目录下保存的是测试用数据。
0017、MQL5目录是最重要的程序目录。
0018、EA系统、脚本、指标、包含文件、库文件都在这个目录下。
这个目录显然应该定期备份的。
0019、MT4平台对应的文件名直接就是expert,EA程序直接就放在该目录下面。
0020、MQL5\Experts提供了一些EA系统的源代码,对于学习EA开发帮助非常大。
不过不适合初学者。
0021、MQL5\Include分成了多个文件夹。
从文件夹的名字就可以看出来属于不同的功能类别。
0022、Include\Arrays目录包含和数组处理相关的很多类的定义和实现。
不同的数组元素类型使用不同的文件。
0023、Include\ChartObjects目录下主要保存图表对象相关的类定义和实现。
0024、Include\Charts目录下保存图表相关文件的定义和实现。
0025、Include\Expert目录非常重要,有很多和EA系统开发类定义和实现。
0026、Include\Expert目录下又有金钱、交易、Trailing等子目录。
0027、Include\Files目录下有文件处理相关的类定义及实现。
0028、Include\Indicators目录下的类定义和实现同技术指标相关。
0029、Include\Strings字符串相关处理类在这个目录下。
0030、Include\Trade目录下有大量账户信息、交易信息、订单信息、交易历史信息相关的类定义和实现。
0031、MQL5中依然大量支持MQL4中的函数,并新增了很多新的强大的函数。
0032、MQL5的底层依然是普通的库函数。
通过\Include目录下的大量mqh头文件封装了很多类的定义及实现。
0033、MQL5中使用标识符给变量和函数进行命名,长度不能超过31 个字节。
0034、标示符可以使用数字0-9、拉丁字母大写A-Z和小写a-z(大小写有区分的)还有下划线(_)。
0035、标示符的首字母不可以是数字并且标识符不能和保留字冲突。
0036、数据类型的关键词有:0037、访问控制类关键词有:0038、存储控制类关键词有:0039、操作类关键词有:0040、其他关键词有:0041、同MQL4相比MQL5的整数类型新增了:short、ushort、uint、long、ulong等几种类型。
0042、日期时间型是为存储日期时间型预留的,开始日期是1970 年1 月1 日,占8 字节内存。
0043、标准C++中没有专门的日期时间类型数据,这是MQL4、MQL5语言中的特例。
0044、日期时间型常量可被当做数字串,由6个部分的字符组成:年、月、日(或是日、月、年)、时、分、秒。
0045、日期时间数据声明时以D 开头,用单引号括起。
0046、日期时间类型数据的表示方法:D'2004.01.01 00:00' // 新年D'1980.07.19 12:30:27'D'19.07.1980 12:30:27'D'19.07.1980 12' //等同于D'1980.07.19 12:00:00'D'01.01.2004' //等同于D'01.01.2004 00:00:00'D'12:30:27' //等同于D'[编辑日期] 12:30:27'D'' //等同于D'[编辑日期] 00:00:00'0047、日期时间类型的终值在:3000年12 月31 日。
0048、颜色类型数据用于存储颜色信息的,占用4 个字节。
0049、颜色类型数据的第一个个字节忽略不计,其他3 个字节包括红绿蓝3 个数据。
0050、颜色类型数据也是C++中没有定义的一类数据。
MQL5定义此类数据主要是为了方便绘制各种图形。
0051、颜色数据可以用三种方法表示:字符数据、整型数据或者是颜色名。
0052、字符数据的表达方法是用三个数字来表示三种主要颜色:红、绿、蓝的比例。
0053、字符数据以C 开头,用单引号括住。
数字的值在0~255之间按比例选取。
0054、整数数据的表达方法使用十六进制或十进制数字。
0055、十六进制数字如:0x00BBGGRR,其中RR 是红色元素的比例,GG 是绿色的比例,BB 是蓝色的比例。
0056、十进制数不能直接体现红绿蓝的比例,而是十六进制数字的十进制表示方式。
0057、布尔类型是用来存储true或者false的逻辑值的,它们的数字表示法分别是1 和0。
0058、枚举类型数据是一种重要的数据集合。
0059、MQL4不支持枚举类型,而MQL5支持此种类型。
0060、枚举类型的一般定义:enum name of enumerable type{list of values};该值列表是分割逗号命名的标识符常量列表。
0061、枚举类型的实例:enum months // 已命名常量的计算{January,February,March,April,May,June,July,August,September,October,November,December};0062、真实型(或浮点型)数据是带有小数的数据类型。
0063、在MQL5 语言里,浮点型数据有两种类型。
0064、在内存中实型(real)数据的表示方法由IEEE754标准规定。
它并不依赖平台、操作系统和程序语言。
0065、浮点型和双精度类型数据的对比表格:0066、双精度类型的含义是为了表示浮点型数据的双倍准确度。
0067、在大多数情况下双精度型是最方便的,浮点型数据的精密度不够高。
0068、双精度和浮点数据定义示例:double a=12.111;double b=-956.1007;float c =0.0001;float d =16;0069、双精度数据保存时依然存在误差,不要直接比较两个双精度数是否相等。
0070、字符串数据用于存储文本串。
0071、文本串是由字符组成,且最后一位为0 的字符序列。
0072、每串常数分配给一个变量,每串数据都用双引号引出。
0073、储存字符串的表达式占用8 字节的结构。
0074、结构中的第一个元素是int buf_len型的整数,它包括分配给每串的字符长度。
0075、结构的第二个元素是buf_ptr结构,有32点指向缓冲区的字符串,在缓冲区的右边有各种str_len型字符串,包括字符串的长度(字符串中字符的数量直到0)。
0076、结构体可以包含任何类型的元素(除了空型)。
0077、因此结构体组合了不同类型,但逻辑上相关成员变量。
0078、结构体是MQL5引入的新复合数据类型,MT4中没有此类型。
0079、定义结构类型数据类型:struct structure_name{elements_description};0080、结构体数据类型定义示例:struct trade_settings{uchar slippage; // 许可的下降值-1字节大小char reserved1; // 跳过1 字节short reserved2; // 跳过2 字节int reserved4; // 跳过另4个字节。
确保定位8字节界限double take; // 固定利润价格值double stop; // 受保护的止损价格值};0081、类和结构体有很多形似和不同的地方,下面从几个方面对比。
0082、类在声明中使用关键字class。
0083、即使在类中没有虚函数,类对象总是有一个虚函数图表。
0084、结构体没有虚函数。
0085、结构类没有虚函数0086、构造函数是一类有特殊功能的函数。
0087、当结构体或类的一个对象生成时构造函数自然调用。
0088、也用来初始化类的成员。
0089、MQL5 的构造函数不含输入参数。
0090、因此每一类都只有一个构造函数。
(不能依靠不同类型、个数的参数来实现函数重载。
)0091、析构函数是一种特殊功能的函数,当类对象被删除时自动调用。
0092、析构函数的名称用波浪字符(~)加class类名实现。
0093、允许转换的数据类型格式:0094、箭头指明表示转换方向,期间没有任何损失信息。
0095、布尔型可以取代字符类型(只占用1 字节)。
0096、颜色型可以取代整型(4字节),日期时间型可以取代长型(占用8 字节)。
0097、四条灰色虚线,也带有箭头可以进行转换,但是会出现精度缺失的情况。
0098、如果两个数据进行数值运算,在执行操作前需要按照下表的先后顺序,把低类型转化成高类型。
0099、数值类型调整转换的顺序为:0100、在MQL5 中可以动态创造复杂类型的对象。
0101、new()创建一个新的对象,返回结果是一个描述符。
该描述符占用8个字节的空间。
0102、MyObject* hobject= new MyObject();0103、与C++不同的是:上述示例变量hobject并不指向内存,只是目标的描述符号。
0104、在MQL5 中简单类型参数可以通过传值或者传引用来传送。
0105、而复合类型参数经常通过引用来传递。
0106、若要使编译器了解参数是通过引用传送,需要在参数前加上&符号。