外汇MT4编程:一种画线数值的编写方法
外汇MT4_EA智能系统MQ4编写详细举例

创建一简易的人工智能系统举例说明让我们将MACD指标同获利能力、支撑移动止损位以及操作安全等因素结合起来考虑以创建人工智能系统。
下面的例子是开立和控制一个单独的头寸。
<BR><BR>交易原则:<BR><BR>. 做多(买入)信号——即当MACD 指针是在0轴在以下,为向上的趋势并与向下的信号线相交(金叉) <BR><BR>. 做空(卖出) 信号——即当MACD 指针是在0轴以上,为向下趋势并与向上的信号线相交(死叉) <BR><BR>. 多头平仓信号——即执行限价平仓指令或移动止损指令以获得利润或者在MACD指针与信号线相交(MACD指针在0轴以上且为向下趋势并与向上趋势的信号线相交)时平仓 <BR><BR>. 空头平仓信号——即执行限价平仓指令或移动止损指令以获得利润或者在MACD指针与信号线相交(MACD指针在0轴以下且为向上趋势并与向下趋势的信号线相交)时平仓 <BR><BR>重要提示: <BR><BR> 在我们分析MACD指标时,为了排除MACD指示中一些并不重要的变化情况(即图表中的细微“小丘”),下面我们另外引荐一种控制“小丘”大小的方法: <BR><BR>指示范围至少为5个最小单位(5点,即USD/CHF=0.0005,USD/JPY=0.05) <BR><BR><BR><BR>第一步:撰写人工智能系统说明 <BR><BR><BR>将鼠标指在导航窗口的人工智能系统,点击鼠标右键在弹出的菜单中CREATE A NEW EXPERT(创建一个智能系统)命令. 正在初始化的WISARD OF EXPERT ADVISOR 会问你是否要输入数据.在弹出的窗口中你得写下NAME名字(人工智能系统的名字) 、AUTHOR作者、与你的网址链接、须知—人工智能系统的测试样本.你也可以设定你想要的Lots(交易单位), Stop Loss(止损点), Take Profit(平仓) 和 Trailing Stop(移动止损)的默认值. <BR><BR><BR><BR>第二步:创立程序的初步结构 <BR><BR>测试系统的代码仅仅为几页纸,即使是这几页纸仍然是难以理解的,特别是在我们这些不是专业的程序员的眼里是非常难的.不然,我们也不必写下这段说明,不是吗? <BR><BR>为了了解标准的人工智能系统的结构,我们来看一下下面的解释: <BR><BR>1.初始资料检查 <BR><BR>.检查图表,图表上棍的数量 <BR><BR>.检查外部变数值:LOTS,S/L,T/P,T/S <BR><BR>2.设置为快速数据存取的内部变量 <BR><BR>3检查交易终端—是否有空间?如果有,然后 <BR><BR>.检查账户中的可用资金 <BR><BR>.是否可以做多(买入) <BR><BR>.建仓买入和平仓 <BR><BR>.是否可以做空(卖出) <BR><BR>.建仓卖出和平仓 <BR><BR>4. 定期控制已开立的头寸<BR><BR>..若是多头合约 <BR><BR> .是否要平仓 <BR><BR>.是否要重新设定移动止损点 <BR><BR>..若是空头合约 <BR><BR>.是否要平仓 <BR><BR>.是否要重新设定移动止损点 <BR><BR>这是相对简单的样板,仅仅只有4个主要单元. <BR><BR>现在我们来试着逐渐将结构表中的每一部分的代码做出来: <BR><BR>1.初始资料检查 <BR><BR>这一块的数据通常是经过稍稍修改后从一个系统移至另一系统的—这实际上是一单元检查. <BR><BR>If Bars<200 Then Exit; // the chart has less than 200 bars - exit <BR><BR>If TakeProfit<10 Then Exit; // wrong takeprofit parameters 收益小于10点退出<BR><BR>2设置为快速数据存取的内部变量 <BR><BR>在程序代码中,有的是经常需要存取的指示值和操做的计算值.为了简化译码和加速存取,数据最初便在内部变数中嵌套进去<BR><BR>.MacdCurrent=iMACD(12,26,9,MODE_MAIN,0); // MACD value on the current bar <BR><BR>MacdPrevious=iMACD(12,26,9,MODE_MAIN,1); // MACD value on the previous bar <BR><BR>SignalCurrent=iMACD(12,26,9,MODE_SIGNAL,0); // Signal Line value on the current bar <BR><BR>SignalPrevious=iMACD(12,26,9,MODE_SIGNAL,1);//Signal Line value on the previous bar<BR><BR>MaCurrent=iMA(MATrendPeriod,MODE_EMA,0); // moving average value on the current bar <BR><BR>MaPrevious=iMA(MATrendPeriod,MODE_EMA,1); // moving average value on the previous bar <BR><BR>现在,我们以在程序中简单的写入字符MacdCurrent代替晦涩难懂的iMACD(12,26,9,MODE_MAIN,0).所有的人工智能系统中的变量都依据MQL II语言进行基本的解释. <BR><BR>var: MacdCurrent(0), MacdPrevious(0), SignalCurrent(0), SignalPrevious(0); <BR><BR>var: MaCurrent(0), MaPrevious(0); <BR><BR>MQL II语言还另外推出一种的用户自定义变量,它可以在程序外设定而无须任何系统程序下的源程序正文的参考.这个特点使程序更具灵活性MATrendPeriod变量就是一个这种类型的用户自定义变量,因此,我们在程序的开头加入这段说明. <BR><BR>defines:MATrendPeriod(56); <BR><BR ><BR ><P>3. 检查交易终端是否有空间?如果有,然后 <BR><BR>在我们的人工智能系统中,我们只能使用现时头寸而不能操作延迟的买卖盘.为了安全起见,我们介绍一种核对过去交易终端已下买卖盘的程序. <BR><BR>If TotalTrades<1 then // no opened orders identified <BR><BR>{ <BR><BR>3.检查: 账户的可用资金……. 在分析市场状况之前最好先检查一下你的账户的资金情况, 以确保账户中有开立头寸的资金. <BR><BR>If FreeMargin<1000 then Exit; // no funds – exit <BR><BR><BR>. 是否可以做多(买入) <BR><BR> 买入的条件信号:MACD指标在0轴以下,为向上趋势且与向下趋势的信号线相交。
MT4编程入门

MT4编程入门MT4编程入门1: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可执行文件有两种方法:1、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语言编辑器中新建一个文件,文件名一定要输,别的随便操作都没关系。
MT4平台指标编程

MT4平台指标编程MetaTrader 4(MT4)是一种常用的外汇和证券交易平台,由俄罗斯MetaQuotes Software开发。
它具有强大的功能和灵活性,可以进行交易操作、分析市场和编写自定义指标等。
在本文中,我们将探讨如何编写自定义指标。
在MT4平台中,指标是用于辅助交易决策的技术工具。
它们通过分析历史市场数据并提供相关的统计信息来帮助交易员做出决策。
指标可以根据交易者的需求来自定义编程。
指标编程通常使用MetaQuotes Language 4(MQL4)完成。
MQL4是一种专门为MT4开发的面向对象的编程语言,具有类似于C语言的语法结构。
要编写指标,您需要掌握MQL4语言的基本概念和语法。
以下是一些编写自定义指标的步骤:1.确定指标的计算方法:首先,您需要确定指标的计算方法。
这可以是基于常见的技术分析指标,如移动平均线、相对强弱指标或随机指标,或者是一种全新的计算方法。
您应该清楚地定义指标的输入和输出。
2. 创建MQL4脚本文件:在MT4平台中,打开MetaEditor,然后创建一个新的MQL4脚本文件。
您可以选择"自定义指标"选项来创建一个新的指标。
在脚本文件中,您可以定义指标的计算逻辑和输入参数。
3.编写指标计算逻辑:在MQL4脚本文件中,您可以使用各种内置函数和操作符来实现指标的计算逻辑。
您可以使用历史市场数据、价格、成交量和其他可以访问的信息来计算指标的值。
您还可以使用不同的循环结构和条件语句来优化指标的计算速度和准确性。
4.定义输入参数和输出结果:指标可以接受一些输入参数来调整计算过程。
您可以定义这些输入参数,并在指标计算中使用它们。
此外,您还可以定义指标的输出结果,并将其返回给MT4平台进行显示。
5. 进行语法检查和编译:在编写完指标代码后,您可以使用MetaEditor提供的语法检查工具来检查代码的语法错误。
一旦通过语法检查,您可以编译指标代码以生成一个可在MT4平台中使用的指标。
实用MT4编程教学完整版

实⽤MT4编程教学完整版第⼀篇创建新⽂件1、打开 MetaEditor (如何打开⾃⼰想办法)呵呵,如果这个都打不开,拜托下⾯的也不⽤看了。
也许你不适合研究这个。
:lol2、选择⽂件-->新⽂件打开⽂件创建页⾯。
3、选择第⼆项客户指标然后点下⼀步。
注:这个页⾯可以创建6种⽂件。
我们常⽤的有《客户指标》,《脚本》,《智能交易系统》三种。
我们先从指标开始。
4、输⼊名字,作者等等。
(⽀持中⽂)暂时不添加参数。
注:这个位置可以添加⽤户变量以后讲解。
5、下⼀步我们先建⼀个主窗⼝指标所以这个页⾯什么都不⽤操作注:这个位置可以添加指标“线”。
以后提及。
6、点击完成。
ok新的指标⽂件⽣成了。
但还没有任何有⽤的代码。
初始化代码齐全。
呵呵!下⼀篇继续。
新建⽂件的样⼦和各功能区。
1.//+------------------------------------------------------------------+2.//| MT4指标编辑.mq4 |3.//| ldj |4.//| /doc/2e586ed16137ee06eff9186b.html |5.//+------------------------------------------------------------------+6.#property copyright "ldj"7.#property link "/doc/2e586ed16137ee06eff9186b.html "8.9.#property indicator_chart_window10.//+------------------------------------------------------------------+11.//| Custom indicator initialization function |12.//+------------------------------------------------------------------+13.int init()14. {15.//---- indicators16.//----17. return(0);18. }19.//+------------------------------------------------------------------+20.//| Custom indicator deinitialization function |21.//+------------------------------------------------------------------+22.int deinit()23. {24.//----25.26.//----27. return(0);28. }29.//+------------------------------------------------------------------+30.//| Custom indicator iteration function |31.//+------------------------------------------------------------------+32.int start()33. {34. int counted_bars=IndicatorCounted();35.//----36.37.//----38. return(0);39. }40.//+------------------------------------------------------------------+复制代码上⾯的就是刚刚新建的⼀个指标⽂件。
MT4平台指标编程

MT4编程实例:会变色的均线这里实际上有两条均线,一条红线,一条绿线:当价格在均线上方时,红线显示,绿线隐藏;当价格在均线下方时,红线隐藏,绿线显示,所以看起来就只是一条会变色的均线。
要隐藏一条指标线中的其中一段,也很简单,只要把这一段指标线的值赋为空值(EMPTY_VALUE)就行了。
说说容易,但实际操作的时候,我们又遇到了一个小问题,那就是红绿转换点的“断点”问题,红线和绿线不连续了。
图:这个问题着实困扰了我好一阵,后来终于想通了。
原来,画线的条件是:前后两个时点上都必须有值,才能画出线来。
而上图中2和3之间应该画上红线,但在3点位上,红线的值为空,所以,红线画不出来。
要让红线、绿线连续,必须使3点位上,既有绿线值又有红线值,这样2和3之间才能出现红线,红线绿才会连续。
为了做到这一点,我们在给指标线循环赋值的时候:1、在i 时点上,除了给i 时点赋值,同时还要给i+1时点赋同色值(以上图为例:我们在给3时点赋绿线值时,同时给4时点赋绿线值;在给2时点赋红线值时,同时再给3点赋红线值;这样3时点上就既有红线值,又有绿线值);2、赋值的顺序为从左向右,即递减循环,以避免前一操作所赋的值被清空。
这样我们的目的就达到了。
下面这是经过测试的源代码---------------------------------------------------------------------------------------------------#property indicator_chart_window#property indicator_buffers 2#property indicator_color1 Red#property indicator_color2 Greenextern int 变色均线=18;double duo[];double kong[];int init(){SetIndexBuffer(0,duo);SetIndexBuffer(1,kong);SetIndexStyle(0,DRAW_LINE);SetIndexStyle(1,DRAW_LINE);SetIndexDrawBegin(0,变色均线);SetIndexDrawBegin(1,变色均线);IndicatorDigits(Digits);return(0);}int start(){double temp0,temp1;int limit;int counted_bars=IndicatorCounted();if(counted_bars<0) return(-1);if(counted_bars>0) counted_bars--;limit=Bars-counted_bars;for(int i=limit; i>=0; i--){duo[i]=EMPTY_VALUE;kong[i]=EMPTY_VALUE;temp0=iMA(NULL,0,变色均线,0,MODE_SMA,PRICE_CLOSE,i);temp1=iMA(NULL,0,变色均线,0,MODE_SMA,PRICE_CLOSE,i+1);if(iClose(NULL,0,i)>=iMA(NULL,0,变色均线,0,MODE_SMA,PRICE_CLOSE,i)){duo[i]=temp0; duo[i+1]=temp1;}else {kong[i]=temp0; kong[i+1]=temp1;}}return(0);}-----------------------------------------------------------------------------------------------------------当然,上面这个是以价格在均线上下方为条件的,我们也可以以MACD、KDJ、RSI等指标作为均线变色的条件。
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编程语言可以创建自定义指标和脚本。
自定义指标是根据特定算法计算的技术指标,用于辅助交易决策。
mt4ma代码

mt4ma代码对不起,关于编写“mt4ma代码”超过400字的详细描述是一个模糊的问题。
"MA" 在金融中通常表示移动平均线(Moving Average),这是一个常见的技术分析工具,用于确定资产的长期趋势或支撑/阻力水平。
如果你正在寻找如何在MetaTrader 4(MT4)平台上编写MA的代码,那么以下是一个简单的示例。
```mql//@version=4strategy("Moving Average", overlay=true); Calculating simple moving averageinput int period = 20output double sma = iMA(NULL, 0, period, MODE_SMA, PRICE_CLOSE, 0)plot(sma, "Simple Moving Average", color=color.blue)```这段代码将在图表上绘制一个20日的简单移动平均线。
`iMA`函数用于计算移动平均线,其参数包括:* NULL:通常用于当前图表的数组或指标。
在这种情况下,我们不需要这个参数,所以用NULL填充。
* 0:用于选择需要被计算的数据。
在这个例子中,我们使用CLOSE价格。
* period:移动平均线的天数。
* MODE_SMA:这是我们选择的计算模式,这里是简单移动平均线。
* PRICE_CLOSE:这是我们计算的数据类型,这里是收盘价。
* 0:这是第二个可选参数,用于指定计算的开始日期。
在这个例子中,我们不指定日期,所以用0填充。
以上是基本示例,您可能需要根据您的具体需求进行调整。
例如,如果您想计算其他类型的移动平均线(如指数移动平均线),您需要使用不同的函数和参数。
外汇交易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交易平台用户指南

图形 — 使用几何体(矩形、三角形、椭圆形)在报价图表中标明不同的区 域; 箭头 — 使用符号(箭头、测试和停止符号)在报价图表中突出标明重要的 事件; 文字 — 文字用于在图表中进行注释。
返回上一级 返回总目录
“图表”菜单
柱状图 — 显示柱状图,也叫竹线图或美国线。也可以使用快捷键“Alt+1”或“图表”工具栏中的 操作; 阴阳烛 — 显示日本蜡烛图。也可以使用快捷键“Alt+2”或“图表”工具栏中的 操作; 折线图 — 显示用收盘价连接在一起的曲线。也可以使用快捷键“Alt+3”或“图表”工具栏中的 操作; 图表前置 — 图表前置。如果这个功能被激活,那么所有分析对象放置在图表的后面; 时段 — 图表的时间周期; 模板 — 显示模板控制菜单;”保存模板”指令能够将当前激活的图表窗口保存为模板,“删除模板”—删除 以前保存的模板; 刷新 — 重新更新历史价格数据。既然这样,在可提供的历史数据范围之内将更新所有丢失的数据。也可以在 图表窗口的右键菜单使用同样的指令操作; 网格 — 显示/隐藏图表窗口的网格。也可以在图表窗口的右键菜单使用同样的指令操作或使用快捷键“Ctrl+G” 操作; 成交量 — 显示/隐藏图表中的成交量。也可以在图表窗口的右键菜单使用同样的指令操作或使用快捷键 “Ctrl+L”操作;或“图表”工具栏中的 操作; 自动滚动 — 在新的价位到来时,启动/关闭图表自动向左滚动。也可以使用“图表”工具栏中的 操作; 图表平移 — 从窗口右边移动图表。也可以使用“图表”工具栏中的 操作; 启动智能交易系统 — 启动/关闭智能交易系统。也可以使用快捷键“Ctrl+E”或“图表”工具栏中的 操作; 放大 — 放大。也可以使用“+”键或“图表”工具栏中的 操作;或者按住鼠标左键,沿着水平轴向右移动光 标指针; 缩小 — 缩小。也可以使用“-”键或“图表”工具栏中的 操作;或者按住鼠标左键,沿着水平轴向左移动光 标指针; 步长 — 每次向左移动一格图表。也可以按F12进行同样的操作; 删除最近对象 — 在图表窗口删除最近的对象(如分析线、图形、箭头、文字等),也可以按Backspace键进行 同样的操作; 删除选中对象 — 在图表窗口删除所有选中的对象(如分析线、图形、箭头、文字等); 删除所有符号 — 在图表窗口删除所有的对象(如分析线、图形、箭头、文字等); 对象列表 — 图形对象监控窗口; 属性 — 显示图表属性窗口。也可以按热键F8进行同样的操作;
mt4指标源码

mt4指标源码MT4平台是世界上最常用的交易平台,其广泛的应用使得MT4上的指标源码变得非常有价值。
虽然编写MT4指标源码可能需要一定的编程技能,但是如果您已经具备了这些技能,那么这将是一次非常有趣且有益的学习经验。
本文将介绍如何编写MT4指标源码,并提供一些示例代码。
一、了解MT4指标首先,我们需要了解什么是MT4指标。
MT4指标是一种技术分析工具,它通常用于衡量市场趋势、买卖力度以及预测未来的价格走势。
MT4指标可以包括移动平均线、趋势线、布林带、RSI、MACD等。
要编写MT4指标源码,您需要使用MT4平台的编程语言——MQL4。
MQL4是一种面向对象的编程语言,它允许您创建自定义指标。
1. 创建指标文件首先,您需要创建一个新的指标文件。
在MT4平台的安装目录下,找到“MQL4”文件夹,并在此文件夹中创建一个新的文件。
文件名通常以“MyIndicator”开头,以区别于其他指标。
2. 编写代码打开指标文件后,您需要编写代码来实现您的指标逻辑。
代码应该包括以下部分:* 初始化部分:用于初始化指标所需的变量和对象。
* 计算部分:用于计算指标值。
以下是一个简单的移动平均线指标的示例代码:```c++// MyMovingAverage.mqh// 简单移动平均线指标#property copyright("2023 MT4 Code Examples")#property info "Simple Moving Average Indicator"#import "MQL4Functions.mqh" version="1.0"// 初始化部分integer period = 10; // 移动平均线的周期double[] ma = new double[1]; // 用于存储移动平均线值ma[0] = 0; // 初始化移动平均线值为0// 计算部分function Calculate(current_price) {ma[0] = (ma[0] + current_price) / 2; // 计算移动平均线值}// 更新部分function Update() {// 将移动平均线值返回给MT4平台return ma;}```3. 编译并加载指标完成代码编写后,您需要编译指标文件并将其加载到MT4平台中。
MT4平台各种线的画法

6.双通道线:在mt4平台中找到等距通道,按照趋势线的画 法把单通道画好,双击,按住ctrl键的同时,平行的将通道 线推上或推下,将中间部分重叠,即形成双通道线。
7.安德鲁音叉线:当一个5浪行情刚开始的时候,在mt4平台中 找到安德鲁音叉线,确定3个点(如图),分别用十字准星在3个 点上分别点一下,软件会在图形上自动生成三条线,即是安德鲁 音叉线。
下降趋势线:连接某一时间段最高点(或相对高点)与最低 点之前的高点的直线,中间不穿越任何价位。
.2 拐点线画法:取任意两个低点和高点连结一条线,双击,按住
ctrl键再平行的往上和往下推出一条线放在响应的高点和低点。拐
点线原则:欲找上,先画下;欲找下,先画上。
3.斐波那契回调线(黄金分割线):可以分上升和下跌两种 画法,上升行情从最低点拉到最高点;下跌行情从最高点拉 到最低点。整个回调位置中,38.2,50,61.8,78.6非常 的重要。
8.扇形反转线:在一波大行情结束之后,我们拉一条斐波那契 回调线,再在底部或顶部画一条垂直线,而后从趋势的顶部或底
部拉出直线,与垂直线同斐波那契回调线的交叉点相交,即可形 成扇形反转线。
的上涨和下跌行情;第二,前一段固定周期内的最高点和最 低点。从低点向上回调时,线从上向下画。 从高点向下回调时,线从下向上画。
4.斐波那契周期线:价格有和谐比例,时间周期也一样。50%, 100%是时间周期最常用的二种。在mt4平台上,找到周期线,从 一波行情的开始拉到一波行情的结束即可。
5. 通道线:趋势线画好之后,双击趋势线,按住ctrl键的 同时,平行的将趋势线推上或推下,放在上面或下面的一个 对应点上,形成的一个通道就是上升或下降通道。MT4平台各线的画法和应用讲课人:兵哥
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中的调试功能来检查和修复潜在的错误。
mt4ea编写指标

mt4ea编写指标MT4EA编写指标的基本步骤和注意事项随着外汇交易的发展,投资者需要有各种各样的工具来协助他们进行交易分析和决策。
其中,MT4EA(MetaTrader 4 Expert Advisors)编写指标就是一种非常重要的工具。
它可以帮助投资者根据交易策略来制定交易决策,并自动执行交易操作。
下面是关于如何编写MT4EA指标的基本步骤和注意事项。
第一步:明确指标的目的和功能在编写MT4EA指标之前,首先需要明确指标的目的和功能。
这包括确定指标的计算方法、所涉及的数据和指标的输出结果等。
例如,如果你希望编写一个用于确定买入和卖出信号的指标,你需要决定是使用哪些技术指标或价格模式来计算买卖信号,并确定指标的输出结果是一个具体的数值还是一个图表。
第二步:编写指标代码在MT4平台中,你可以使用MQL4编程语言来编写MT4EA指标。
MQL4是一种功能强大的编程语言,可以帮助你实现各种复杂的交易策略和指标。
在编写指标代码时,你需要使用MQL4提供的各种函数和指令,来计算指标的数值或图表,并输出给MT4平台进行显示。
在编写指标代码时,需要注意以下几点:1.确保指标的计算过程正确和高效。
在编写指标代码之前,最好先将其思路和计算过程画图或进行模拟,以确保它可以正确地计算出预期的结果,并且计算过程不会因为数据的增加而变得非常缓慢。
2.尽量减少指标的计算时间和资源占用。
指标的计算过程可能需要一些复杂的数学运算或历史数据的读取,这可能会消耗很多计算资源。
因此,在编写指标代码时,要尽量优化计算过程,减少计算的时间和资源占用。
3.添加适当的参数和选项。
为了使指标更加灵活和适应不同的交易策略,你可以添加一些参数和选项,以便投资者可以根据自己的需求来进行设置。
第三步:测试和优化指标在编写完指标代码之后,需要对其进行测试和优化,以确保其适用性和可靠性。
测试可以通过回测或实时交易来进行。
在测试指标时,要尽量多地使用不同的交易策略和数据周期,以验证指标的性能和准确度。
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语言智能交易系统编写MetaQuotes 4 语言是用来编写自定义智能交易系统软件,以便使交易程序管理自动化以及执行交易商自己的交易策略。
MetaQuotes 4 语言易学、易用、易创建。
MetaQuotes 4 语言包括相当数量的变量,用来控制当前和前期的报价、主要的算术和逻辑运算和特征,主要的内置指标和用来开启和控制头寸的命令。
在语法上,该语言和由 TradeStation 技术有限公司开发的简易语言相似,但是它有其自身的一些具体特征。
程序代码是用MetaEditor4编辑器编写的,它能够用不同的色彩集中反映MQL 4语言的不同结构,因此,有助于用户熟悉专家系统的文本。
注解开始于//符号(双斜线)。
注解也可以用“斜线-星号”-“星号-斜线”组合(/*[注解]*/, 就像在 "C"编程语言一样)。
设定和控制操作战略,交易商保存一份日志文件,存储产生的信号信息、变量输出和已执行交易的结果。
智能交易系统日志保存在MultiBank Trader目录下/logs/YYYYMMDD.log 文件里。
当前的日志可以从下方的“终端”窗口(日志标签)直接进入。
进入MQL 4语言的目录系统,要么按目录按钮或从工具菜单打开MetaQuotes语言词典窗口操作。
这个短小的手册包含分类、运算、存储词语等功能,使得用户对该语言所用到的每个元素都有所了解。
1. 主要语言结构像其他任何语言一样,MQL4有一套构成基本结构的主要组成元素。
这些组成元素以一种特殊的方式组合排列的,以便代表适当的陈述和表达。
语言的主要对象就是数据,包括三种类型:数字、逻辑和排列。
所有的数值均采用双格式,逻辑数据可能包括真值和假值。
排列就是用省略号标注的一系列字符。
字符串也叫做文本串。
数据可以包含在适当类型的变量之中,或直接由程序的源文本表现出来。
一个MetaQuotes 语言陈述指一个完整的用法说明。
陈述可以包括保留字、运算符号、数据、变量、表达式或标点符号,而且总是以分号结尾。
MT4使用基础(七):画线分析Tags:MT4

MT4使用基础(七):画线分析Tags:MT4画线分析是在价格和技术指标图表中画上线条和几何图形。
包括支撑/阻力线、趋势线、斐波纳奇、江恩和安德鲁分叉线等等。
在MT4软件终端中,画线分析组合在“ 插入”菜单和“画线分析”工具条中。
水平线Horizontal Line 水平线用来标示不同的水准。
特别是用来标示支撑和阻力位。
支撑位是指当价格受买方(多头)控制时,阻止其下跌的水准。
阻力位则相反,当价格受卖方(空头) 控制时,抑制其进一步上涨的水准。
垂直线Vertical Line 垂直线一般用于在时间轴上标示不同的界限,或用于技术指标信号和动态价位的比较。
趋势线Trendline 趋势线便于揭示价格趋势。
为了设定趋势,您必须确定两点位置,然后接连这两个点成一条线。
角度线Trend by Angle 趋势线有助于揭示价格的发展走势。
与简单的趋势线相比,运用此工具您可设置趋势线度数。
线性回归通道Linear Regression Channel 线性回归是统计学的分析工具,基于可利用数据预测今后的价值。
在上涨趋势下,假设下一个棒图将高于前一个棒图。
在这种逻辑假设下,线性回归方法可获得此假设的统计确定。
您需要设定两个点创建这一工具。
等距通道Equidistant Channel 等距通道(平行线)指一种趋势通道。
这类通道线总是平行的。
为创建这种工具,您必须确定两个点。
标准偏差通道Standard Deviation Channel 标准偏差通道。
标准偏差是用统计的方法测量波动性。
标准偏离影响此通道的宽度。
您必须调整两个点来创建此工具。
江恩45度线Gann Line 甘氏45度线是45度角的趋势线。
您必须设定两个点来创建此工具。
江恩扇形线Gann Fan 甘氏扇形线是从一点以不同角度画出的一组趋势线,1×1趋势线(45度)是最重要的一条线。
如果价格曲线高于此线,意味着市场向好,如果低于此线,市场向淡。
mt4绘制k线的函数

mt4绘制k线的函数MT4是一款非常流行的外汇交易软件,提供了丰富的技术分析工具。
其中,K线图是一种常用的技术分析图表类型,可以显示出一定时间范围内外汇交易的开盘价、收盘价、最高价、最低价等信息。
本文将介绍MT4中绘制K线图的函数。
MT4中绘制K线图的函数为iBars。
该函数的语法格式为:int iBars(string symbol, int timeframe)其中,symbol表示货币对的名称,timeframe表示K线图的时间周期。
例如,如果我们要绘制EURUSD的30分钟K线图,可以使用以下代码:int totalBars = iBars('EURUSD', PERIOD_M30);该函数返回的是指定时间周期内已经形成的K线数量。
接下来,我们可以使用下面的代码获取K线的开盘价、收盘价、最高价和最低价:double openPrice = iOpen('EURUSD', PERIOD_M30,totalBars-1);double closePrice = iClose('EURUSD', PERIOD_M30, totalBars-1);double highPrice = iHigh('EURUSD', PERIOD_M30,totalBars-1);double lowPrice = iLow('EURUSD', PERIOD_M30,totalBars-1);需要注意的是,iOpen、iClose、iHigh和iLow函数的第三个参数指定的是K线的索引,从0开始计数。
因此,如果要获取最后一根K线的价格信息,需要将totalBars-1作为函数的第三个参数。
通过以上代码,我们可以获取到指定时间周期内最后一根K线的所有信息。
如果需要绘制K线图,可以根据这些信息计算出每根K线的高度和宽度,并使用MT4提供的绘图函数绘制出K线图形。
MT4作图技巧

MT4作图技巧MT4编程开发实战系列----画图系列1:如何画直线这是MT4编程开发实战系列的第一站,我们先来学习一下如何在MT4图表上进行基本的画图操作。
在开始动手之前,首先讲一个很基本也很重要的概念:在MT4系统中,图表的方向是从右到左的,举例说:在一个记录有当前图表每根K线位置的数组中,第一个数值表示的是图表最右边、也就是当前的K线的数值!画图最基本的操作是画直线。
下面的两个例子将演示如何在图表上画一条直线。
首先在MetaEditor编辑器中创建一个客户指标文件,名字可以任意,我这里就把它命名为Lesson1_DrawLine。
然后在其中的start()函数中添加下面的代码:添加完毕后,按F5编译代码,然后在MT4中打开任意一张图表,把编译好的指标Lesson1_DrawLine添加到图表上,我们可以看到图表上已经画出了一条横线:现在来解释一下上面的代码。
上面的代码使用了ObjectCreate这个函数。
ObjectCreate是一个非常重要的函数,在后面的画图教程中会多次使用到这个函数。
在上面的例子中,ObjectCreate函数有5个参数,第1个”Hline”是对你要画的横线起一个名字,这个名字是可以任意的;第2个OBJ_HLINE是MT4系统默认的一个变量,表示横线,意义是告诉系统你准备画一条横线;第3个参数是0,表示在主窗口进行画图的操作,这里暂时不对这个参数作详细的说明,后面我会专门用一个专题来将画图窗口的知识;第4个参数也是0,这个代表的是横坐标(X轴),第5个参数是Bid,这个是MT4系统默认的一个变量,意思是当前的卖出价。
这里重点说一下最后两个参数:在MT4中,图表的横坐标(X轴)代表时间,纵坐标(Y轴)代表价格,在上面的例子中,ObjectCreate函数的最后两个参数0和Bid就分别代表X轴坐标和Y轴坐标,意思是在Y轴为当前卖出价格的地方画一条横线(因为直线为无限长,X坐标没有意义,所以这里就设成0了)。
MT4自动计算并画出趋势线

MT4自动计算并画出趋势线MT4自动计算并画出趋势线通过MT4平台编程,进行自动计算并画出趋势线,其方法如下所示。
下面先介绍几个特殊函数,才能正确进行相关编程。
一、基本函数介绍:1、窗口函数:WindowBarsPerChart(); //屏幕可见K线总数解释:该函数返回窗口中可见的K线数目总数,我们在画趋势线时,所选择的K线范围,一定属于在可见的范围之中,否则,难以知道其中的数据,也就不可能去画相应的趋势线了。
因此,画趋势线的范围,是由窗口中可见K线数为基础条件的。
因此,计算时,首先要获得窗口中的可见K线数。
2、时间序列图表数据:iHighest(string symbol,int timeframe,int type,void count,voidstart); //一组K线最高价的序号参数说明:string symbol:选定的货币对,NULL、symbol()均代表当前图表中的货币对int timeframe:所选时间周期,0代表当前图表中的时间周期inttype:所选数组的类型,如MODE_HIGH(最高价)、MODE_LOW(最低价)、MODE_OPEN(开盘价)、MODE_CLOSE(收盘价)、MODE_VOLUME(成交量)、MODE_TIME(交易开始时间)void count:一组K线的计算根数void start:开始K线的序号最高价=High[ iHight()];iLowest(string symbol,int timeframe,int type,void count,voidstart); //一组K线最低价的序号参数说明:与以上函数相对应,使用方法相同。
最低价=Low[iLowest()];3、数组函数:ArrayMaximum(double array[],void count,void start); //数组最大值位置参数说明:double array[]://要求搜索的数组void count://该数组的项目数void start://开始搜索的序号最大值=array[ArrayMaximum()];ArrayMinimum(double array[],void count,void start); //数组最小值位置参数说明:以上面最大值位置相对应,使用方法相同。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
_Show("TrendLinePrice",TrendArrayPrice[0],4, 划线文字 X 位 置,划线文字 Y 位置 +60,文字颜色 ); } if(! 显示开关 ) { // ObjectDelete("OrderNum"); ObjectDelete("VlineTime"); ObjectDelete("VlinePostion"); ObjectDelete("HlinePrice"); ObjectDelete("TrendLinePrice"); }} //=============================================
}
}//for(i = 0; i < obj_total; i++)VlineBar=iBarShift(Symbol(),0,VlineTimeArray[0],true);
HlineBar=HlineArrayPrice[0];
if( 显示开关 )erNum", 订单号 ,0,200,0);
HlineArrayPrice[0]=NULL; TrendArrayPrice[0]=NULL; string name,text; int i, j; for(i = 0; i < obj_total; i++) { name = ObjectName(i); if(ObjectType(name) == OBJ_VLINE) { VlineTimeArray[VlineCount]=ObjectGet(name,OBJPROP_TI ME1);
{ RefreshRates(); int VlineCount=0; int HlineCount=0; int TrendCount=0; int obj_total = ObjectsTotal(); ArrayResize(VlineTimeArray, obj_total); ArrayResize(HlineArrayPrice, obj_total); ArrayResize(TrendArrayPrice, obj_total); VlineTimeArray[0]=NULL;
=========================================
4
在屏幕上显示自定义文字 _show() 可以用来 显示 整形
double 数据
_showStr() 可以用来显示字符串可以见 3 中的使用方法
//============================================= =========================================
void _Show(string Str,double dTemp,int dNum,int xOffset,int yOffset,color 文字颜色 )
{
string Signal;
Signal=Str+": "+DoubleToStr(dTemp,dNum);
_writetext(Str,Signal, 划线文字 X 位置 +xOffset, 划线文字 Y 位 置+yOffset, 文字颜色 ,划线字体大小 );
实际上是 TrendArrayPrice[] VlineTimeArray[]
HlineArrayPrice[]
如果设置为全局数组可以把屏幕上的横线
竖线 趋势线都
获得 改变数组的下标就可以了
//============================================= ==============int 自动获取物件 ()
VlineCount++; }if(ObjectType(name) == OBJ_HLINE) { HlineArrayPrice[HlineCount]=ObjectGet(name,OBJPROP_PRI CE1); HlineCount++; } if(ObjectType(name)==OBJ_TREND) //ObjectGetValueByShift { TrendArrayPrice[TrendCount]=ObjectGetValueByShift(name,0) ; TrendCount++;
_ShowStr("VlineTime",TimeToStr(VlineTimeArray[0]), 字 X 位置 ,划线文字 Y 位置 );
划线文
_Show("VlinePostion",VlineBar,0, 划线文字 X 位置 ,划线文字 Y 位置 +20,文字颜色 );
_Show("HlinePrice",HlineArrayPrice[0],4, 划线文字 X 位置 ,划 线文字 Y 位置 +40,文字颜色 );
}
//---------------------------------void _ShowStr(string Str,string StrTemp,int xOffset,int yOffset) { string Signal; Signal=Str+": "+StrTemp; _writetext(Str,Signal, 划线文字 X 位置 +xOffset, 划线文字 Y 位 置+yOffset, 文字颜色 ,划线字体大小 ); }void _writetext(string Labelname,string data,int x,int y,color ColorValue,int FontSize) { RefreshRates();
外汇 MT4 编程:一种画线数值的编写方法
外汇 MT4 编程: 一种获得画线数值的编写方法 非本人杰作,相信会对一些朋友有用
如何获得 所画的横线 竖线 趋势线 横竖线 趋势线的价格相信用来做 半自动 EA 或指标比较实用
//下面这个函数 可以获得 最后一根横线的价格 HlineBar 竖 线的位置 VlineBar 趋势线最后对应的价格 TrendArrayPrice[0],