MT4MT5外汇EA编程教程大全之日期时间函数
外汇mt4编程:ea编写中级(第2版)

外汇mt4编程:ea编写中级(第2版)外汇MT4编程:MT4 EA编写中级(第2版共十六课)原创:李沂鸿(柒侠伍义)国家:马来西亚第1章:初级EA以下是初级EA////////////ea 不读这个注解///////////////////////#property copyright "柒侠伍义_初级EA教程_商业版本" datetime 限制一根柱子下注一次=0; //自定义extern double下注数量=0.1; //自定义extern double止损=200; //自定义extern double止盈=200; //自定义extern double 滑点=30; //自定义externbool 使用音乐=true; //true=要用false=不要用externbool 使用弹出提示=false; //true=要用false=不要用string ea名字="柒侠伍义_初级EA教程";extern double开始交易时间=3; //自定义交易时间extern double结束交易时间=23; //自定义交易时间double魔术号码=16384; //自定义魔术号码double 死亡日期年=2009; //自定义ea终止日期double 死亡日期月=12; //自定义ea终止日期double 死亡日期日=12; //自定义ea终止日期double 死亡日期时=12; //自定义ea终止日期double 用户账户=90240764; //自定义指定用户帐号double 赢钱目标=10000;//自定义赢太多了不要做单double 输钱目标=500; //自定义输太惨了不要做单string 交易商= "";//自定义交易商extern string 货币对1 ="EURUSD"; //自定义指定货币对extern string 货币对2 ="EURJPY"; //自定义指定货币对extern string 货币对3 ="GBPUSD"; //自定义指定货币对double时间周期1=30,时间周期2=60; //自定义时间周期////////////ea 不读这个注解///////////////////////int start() //ea 开始运行{ //开始主程式HideTestIndicators(true);//命令ea隐藏ea中的指标if(AccountFreeMarginCheck(Symbol(),OP_BUY,下注数量)<=0|| GetLastError()==134) {return;}//命令ea如果保证金不足不要交易if(AccountFreeMarginCheck(Symbol(),OP_SELL,下注数量)<=0|| GetLastError()==134){return;}//命令ea如果保证金不足不要交易////////////ea 不读这个注解///////////////////////if( //开始如果OrdersTotal()==0 //没有单可以下注&&Close[0]-Open[0]>200*Point //判断上升趋势&&Close[1]-Open[1]>200*Point //判断上升趋势&&Close[2]-Open[2]>200*Point //判断上升趋势&&Close[3]-Open[3]>200*Point //判断上升趋势&& 限制一根柱子下注一次!=Time[0] //限制一根柱子下注一次&& IsDemo() //限制模拟户口运行&& DayOfWeek()!=0 //礼拜不要交易&& DayOfWeek()!=6 //星期6不要交易&& DayOfWeek()!=5 //星期5不要交易&&(Hour()>开始交易时间&&Hour()<结束交易时间)//限制交易时间:早上3点到晚上10点可以交易&&Year()==2009 //限制交易时间:只限2009年可以运行&&(Year()<=死亡日期年&&Month()<=死亡日期月&&Day()<=死亡日期日&&Hour()<=死亡日期时) //ea死亡日期&& AccountNumber()==用户账户//指定用户账户&&(AccountBalance()<赢钱目标&&AccountBalance()>输钱目标) //赢太多了不要做单输太惨了不要做单&&AccountCompany()==交易商//指定交易商方可交易&&(Symbol()==货币对1||Symbol()==货币对2||Symbol()==货币对3) //指定货币对&&(Period()==时间周期1||Period()==时间周期2) //指定时间周期运行){OrderSend(Symbol(),OP_BUY,下注数量,Ask,滑点,Ask-止损*Point,Ask+止盈*Point,""+ea名字+"",魔术号码,0,Green);限制一根柱子下注一次=Time[0];if(使用音乐){PlaySound("Conditions.wav");}if(使用弹出提示){Alert(" M",Period(),"",Symbol(),"buy开仓,余额资金::",AccountBalance()," ");}} // end if 结束如果////////////ea 不读这个注解///////////////////////if( //开始如果OrdersTotal()==0 //没有单可以下注&&Open[0]-Close[0]>200*Point //判断下降趋势&&Open[1]-Close[1]>200*Point //判断下降趋势&&Open[2]-Close[2]>200*Point //判断下降趋势&&Open[3]-Close[3]>200*Point //判断下降趋势&& 限制一根柱子下注一次!=Time[0] //限制一根柱子下注一次&& IsDemo() //限制模拟户口运行&& DayOfWeek()!=0 //礼拜不要交易&& DayOfWeek()!=6 //星期6不要交易&& DayOfWeek()!=5 //星期5不要交易&&(Hour()>开始交易时间&&Hour()<结束交易时间)//限制交易时间:早上3点到晚上10点可以交易&&Year()==2009 //限制交易时间:只限2009年可以运行&&(Year()<=死亡日期年&&Month()<=死亡日期月&&Day()<=死亡日期日&&Hour()<=死亡日期时) //ea死亡日期&& AccountNumber()==用户账户//指定用户账户&&(AccountBalance()<赢钱目标&&AccountBalance()>输钱目标) //赢太多了不要做单输太惨了不要做单&&AccountCompany()==交易商//指定交易商方可交易&&(Symbol()==货币对1||Symbol()==货币对2||Symbol()==货币对3) //指定货币对&&(Period()==时间周期1||Period()==时间周期2) //指定时间周期运行){OrderSend(Symbol(),OP_SELL,下注数量,Bid,滑点,Bid+止损*Point,Bid-止盈*Point,""+ea名字+"",魔术号码,0,Red);限制一根柱子下注一次=Time[0];if(使用音乐){PlaySound("Conditions.wav");}if(使用弹出提示){Alert(" M",Period(),"",Symbol(),"sell开仓,余额资金::",AccountBalance()," ");}} // end if结束如果////////////ea 不读这个注解///////////////////////return(0); //叫ea重复运行每秒大概可能重新运算100次} //startto end 结束主程式第2章:删除不是很重要的自定义为了方便学习1.////////////ea 不读这个注解///////////////////////2.#property copyright "柒侠伍义_初级EA教程_商业版本"3.datetime 限制一根柱子下注一次=0; //自定义4.extern double 下注数量=0.1; //自定义5.extern double 止损=200; //自定义6.extern double 止盈=200; //自定义7.extern double 滑点=30; //自定义8.extern bool 使用音乐=true; //true=要用false=不要用9.extern bool 使用弹出提示=false; //true=要用false=不要用10.string ea名字= "柒侠伍义_初级EA教程";11.//extern double 开始交易时间=3; //自定义交易时间12.//extern double 结束交易时间=23; //自定义交易时间13.double 魔术号码=16384; //自定义魔术号码14.//double 死亡日期年=2009; //自定义ea终止日期15.//double 死亡日期月=12; //自定义ea终止日期16.//double 死亡日期日=12; //自定义ea终止日期17.//double 死亡日期时=12; //自定义ea终止日期18.//double 用户账户=90240764; //自定义指定用户帐号19.//double 赢钱目标=10000;//自定义赢太多了不要做单20.//double 输钱目标=500; //自定义输太惨了不要做单21.//string 交易商= ""; //自定义交易商22.//extern string 货币对1 = "EURUSD"; //自定义指定货币对23.//extern string 货币对2 = "EURJPY"; //自定义指定货币对24.//extern string 货币对3 = "GBPUSD"; //自定义指定货币对25.//double 时间周期1=30,时间周期2=60; //自定义时间周期26.////////////ea 不读这个注解///////////////////////27.int start() //ea 开始运行28.{ //开始主程式29.30.HideTestIndicators(true);//命令ea隐藏ea中的指标31.if(AccountFreeMarginCheck(Symbol(),OP_BUY,下注数量)<=0|| GetLastError()==134) {return;}//命令ea如果保证金不足不要交易32.if(AccountFreeMarginCheck(Symbol(),OP_SELL,下注数量)<=0|| GetLastError()==134){return;}//命令ea如果保证金不足不要交易33.34.////////////ea 不读这个注解///////////////////////35.36.if( //开始如果37.OrdersTotal()==0 //没有单可以下注38.&&Close[0]-Open[0]>200*Point //判断上升趋势39.&&Close[1]-Open[1]>200*Point //判断上升趋势40.&&Close[2]-Open[2]>200*Point //判断上升趋势41.&&Close[3]-Open[3]>200*Point //判断上升趋势42.&& 限制一根柱子下注一次!=Time[0] //限制一根柱子下注一次43.//&& IsDemo() //限制模拟户口运行44.//&& DayOfWeek() !=0 //礼拜不要交易45.//&& DayOfWeek() !=6 //星期6不要交易46.//&& DayOfWeek() !=5 //星期5不要交易47.//&&(Hour()>开始交易时间&&Hour()<结束交易时间)//限制交易时间:早上3点到晚上10点可以交易48.//&& Year()==2009//限制交易时间:只限2009年可以运行49.//&&(Year()<=死亡日期年&&Month()<=死亡日期月&&Day()<=死亡日期日&&Hour()<=死亡日期时)//ea死亡日期50.//&& AccountNumber()==用户账户//指定用户账户51.//&&(AccountBalance()<赢钱目标&&AccountBalance()>输钱目标) //赢太多了不要做单输太惨了不要做单52.//&& AccountCompany()==交易商//指定交易商方可交易53.//&&(Symbol()==货币对1||Symbol()==货币对2||Symbol()==货币对3) //指定货币对54.//&&(Period()==时间周期1||Period()==时间周期2) //指定时间周期运行55.){56.OrderSend(Symbol(),OP_BUY,下注数量,Ask,滑点,Ask-止损*Point,Ask+止盈*Point,""+ea名字+"",魔术号码,0,Green);57.限制一根柱子下注一次=Time[0];58.if(使用音乐){PlaySound("Conditions.wav");}59.if(使用弹出提示){Alert(" M",Period(),"",Symbol(),"buy开仓,余额资金::",AccountBalance()," ");}60.} // end if 结束如果61.62.////////////ea 不读这个注解///////////////////////63.64.65.if( //开始如果66.OrdersTotal()==0 //没有单可以下注67.&&Open[0]-Close[0]>200*Point //判断下降趋势68.&&Open[1]-Close[1]>200*Point //判断下降趋势69.&&Open[2]-Close[2]>200*Point //判断下降趋势70.&&Open[3]-Close[3]>200*Point //判断下降趋势71.&& 限制一根柱子下注一次!=Time[0] //限制一根柱子下注一次72.//&& IsDemo() //限制模拟户口运行73.//&& DayOfWeek() !=0 //礼拜不要交易74.//&& DayOfWeek() !=6 //星期6不要交易75.//&& DayOfWeek() !=5 //星期5不要交易76.//&&(Hour()>开始交易时间&&Hour()<结束交易时间)//限制交易时间:早上3点到晚上10点可以交易77.//&& Year()==2009//限制交易时间:只限2009年可以运行78.//&&(Year()<=死亡日期年&&Month()<=死亡日期月&&Day()<=死亡日期日&&Hour()<=死亡日期时)//ea死亡日期79.//&& AccountNumber()==用户账户//指定用户账户80.//&&(AccountBalance()<赢钱目标&&AccountBalance()>输钱目标) //赢太多了不要做单输太惨了不要做单81.//&& AccountCompany()==交易商//指定交易商方可交易82.//&&(Symbol()==货币对1||Symbol()==货币对2||Symbol()==货币对3) //指定货币对83.//&&(Period()==时间周期1||Period()==时间周期2) //指定时间周期运行84.){85.OrderSend(Symbol(),OP_SELL,下注数量,Bid,滑点,Bid+止损*Point,Bid-止盈*Point,""+ea名字+"",魔术号码,0,Red);86.限制一根柱子下注一次=Time[0];87.if(使用音乐){PlaySound("Conditions.wav");}88.if(使用弹出提示){Alert(" M",Period(),"",Symbol(),"sell开仓,余额资金::",AccountBalance()," ");}89.} // end if 结束如果90.91.92.////////////ea 不读这个注解///////////////////////93.94.return(0); //叫ea 重复运行每秒大概可能重新运算100次95.} //start to end 结束主程式第3章:真正删除不重要的是不是好看一点了?哈哈和。
【MQL4】新手快速学会怎样编写外汇EA

【MQL4】新手快速学会怎样编写外汇EA# 什么是MT4?我就当你了解什么是MT4了MT4就是META. TRADER 4# 什么是EA?我也当你了解什么是EA了EA 就是 Expert AdviserEA 就是智能交易系统智能教育系统就是:-软件自己判断下订单-软件自己判断提成利润-软件自己判断砍仓止输# 什么是速成班?就是你在很短很快的时间内就可以学会如何编写EA 是的,快则8个学习小时慢则24个学习小时# 什么叫“易学难精”?就是你很快的就上手,难在成为厉害的高手。
这需要时间慢慢的去研究编写。
久而久之你就可以是EA编写高手了。
第一课::了解EA的形式* 以下就是EA的编写形式//#property copyright "外汇联盟 QQ群144033"#property link ""//+------------------------------------------------------------------+//| expert initialization function |//+------------------------------------------------------------------+int init(){//----//----return(0);}//+------------------------------------------------------------------+//| expert deinitialization function |//+------------------------------------------------------------------+int deinit(){//----//----return(0);}//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int start(){//----//----return(0);}//+------------------------------------------------------------------+#property copyright "外汇联盟 QQ群144033"#property link ""写与不写都无所谓我们也不用理他* //+------------------------------------------------------------------+//| expert initialization function |//+------------------------------------------------------------------+int init(){//----//以后可能有用到//----return(0);}//+------------------------------------------------------------------+//| expert deinitialization function |//+------------------------------------------------------------------+int deinit(){//----//以后可能有用到//----return(0);}这两个很少用到。
外汇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 编程手册

语法[Syntax]数据类型[Data types]运算符和表达式[Operations & Expressions]操作符 [Operators]函数[Function]变量[Variables]预处理程序[Preprocessor]账户信息[Account Information]数组函数[Array Functions]类型转换函数[Conversion Functions]公用函数[Common Functions]自定义指标函数[Custom Indicator Functions]日期时间函数[Date & Time Functions]文件处理函数[File Functions]全局变量函数[Global Variables Functions]数学运算函数[Math & Trig]物体函数[Object Functions]预定义变量 [Pre-defined Variables]字符串函数[String Functions]标准常量 [Standard Constants]技术指标调用[Technical Indicator calls]交易函数[Trading Functions]窗口函数[Window Functions]语法[Syntax]代码格式空格建、Tab键、换行键和换页符都可以成为代码排版的分隔符,你能使用各种符号来增加代码的可读性。
注释多行注释使用/* 作为开始到*/ 结束,在这之间不能够嵌套。
单行注释使用// 作为开始到新的一行结束,可以被嵌套到多行注释之中。
示例:标识符标识符用来给变量、函数和数据类型进行命名,长度不能超过31个字节你可以使用数字0-9、拉丁字母大写A-Z和小写a-z(大小写有区分的)还有下划线(_)。
此外首字母不可以是数字,标识符不能和保留字冲突.示例:保留字下面列出的是固定的保留字。
不能使用以下任何保留字进行命名。
MT4MT5外汇EA编程教程大全之交易函数word资料12页

MT4MT5外汇EA编程教程大全之交易函数word资料12页MT4 MT5外汇EA编程教程大全之交易函数(三)从自定义指标中不能调用OrderSend(), OrderClose, OrderCloseBy, OrderDelete和OrderModify交易函数。
OrderCloseOrderCloseByOrderClosePriceOrderCloseTimeOrderCommentOrderCommissionOrderDeleteOrderExpirationOrderLotsOrderMagicNumberOrderModifyOrderOpenPriceOrderOpenTimeOrderPrintOrderProfitOrderSelectOrderSendOrdersHistoryT otalOrderStopLossOrdersTotalOrderSwapOrderSymbolOrderTakeProfitOrderTicketOrderTypebool OrderClose( int ticket, double lots, double price, int slippage, void Color)对定单进行平仓操作。
如果函数成功,返回的值是真实的。
如果函数失败,返回的值是假的。
获得详细错误信息,请查看GetLastError()函数。
参量:ticket - 定单编号。
lots - 手数。
price - 收盘价格。
slippage - 最高划点数。
Color - 图表中标记颜色。
如果参量丢失,CLR_NONE值将不会在图表中画出。
示例:if(iRSI(NULL,0,14,PRICE_CLOSE,0)>75){OrderClose(order_id,1,Ask,3,Red);return(0);}bool OrderCloseBy( int ticket, int opposite, void Color)用相反定单对打开仓位进行平仓操作。
外汇EA编程教程——函数

外汇EA编程教程——函数外汇EA(Expert Advisor)是一种基于计算机算法进行外汇交易决策的自动交易系统。
编程外汇EA需要使用MetaQuotes公司的MetaTrader平台编写代码。
在编写外汇EA时,函数是非常重要的组成部分之一、本篇教程将介绍外汇EA编程中常用的函数及其使用方法。
1. 在编写外汇EA时,首先需要定义init函数。
该函数在EA被加载到图表上时执行一次,用于初始化一些变量及设置一些参数。
例如:```void initint ma_period = 20; // 移动平均线的周期```在init函数中,我们可以定义一些全局变量,并对其进行初始化。
在上述例子中,我们定义了一个整型变量ma_period,并将其赋值为20。
2. 然后,我们需要定义start函数。
该函数在每个价格更新时执行一次。
在该函数中,我们可以编写外汇交易的主要逻辑。
例如:```void startdouble current_price = Ask; // 获取当前的卖出价double ma = iMA(NULL, 0, ma_period, 0, MODE_SMA, PRICE_CLOSE, 0); // 计算移动平均线if(current_price > ma)//当前价格高于移动平均线,执行买入操作OrderSend(Symbol(, OP_BUY, 0.1, current_price, 3,current_price - StopLoss*Point, current_price +TakeProfit*Point);}else if(current_price < ma)//当前价格低于移动平均线,执行卖出操作OrderSend(Symbol(, OP_SELL, 0.1, current_price, 3,current_price + StopLoss*Point, current_price -TakeProfit*Point);}```在上述例子中,我们使用了iMA函数计算移动平均线的值。
MT4MT5外汇EA编程教程大全之交易函数

MT4MT5外汇EA编程教程大全之交易函数一、交易函数介绍1、 OrderSend(函数OrderSend(函数是EA程序中用于下达交易的核心函数。
它的作用是以市价或限价发出市场位或限价位的指令。
2、 OrderModify(函数OrderModify(函数的作用是修改处于有效状态的交易指令。
3、 OrderClose(函数OrderClose(函数是核心函数,它的作用是把有效的交易指令平仓,它只能关闭有效的市价或限价位交易指令,而不能关闭已经结算的位置交易指令。
4、 OrderDelete(函数OrderDelete(函数的作用是从交易账户中删除尚未执行的交易指令。
它只能删除尚未在市场中执行且处于有效状态的市价或限价位的指令,而不能删除已经在市场中执行的指令。
5、 OrderSelect(函数OrderSelect(函数是一个非常重要的函数,它的作用是从交易账户中调取需要的交易指令。
6、 OrderPrint(函数OrderPrint(函数的作用是将交易账户中的交易指令在终端的列表窗口中显示出来,可以打印出位于市场中的交易指令以及所有的历史交易指令的详细信息。
7、 OrderProfit(函数OrderProfit(函数的作用是返回一个有效交易订单的实际盈利金额。
8、 OrdersTotal(函数OrdersTotal(函数的作用是返回交易账户中当前有效的交易指令总数,该函数通常与OrderStep(函数配合使用,可以快速统计出交易账户当前有效的交易指令总数。
二、OrderSend(函数详解1、函数功能OrderSend(函数是EA程序中用于发出市场位或限价位指令的核心函数,它的作用是以市价或限价发出市场位或限价位的指令。
MT4编程入门详解

目录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等类型的压缩文件,还必须下载后解压到此目录才能使用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MT4 MT5外汇EA编程教程大全之日期时间函数(四)
表示时间类型数据的一组函数
(从1970年1月1日午夜开始以秒为单位计算)。
Day
DayOfWeek
DayOfYear
Hour
Minute
Month
Seconds
TimeCurrent
TimeDay
TimeDayOfWeek
TimeDayOfYear
TimeHour
TimeLocal
TimeMinute
TimeMonth
TimeSeconds
TimeYear
Year
int Day( )
返回这个月的当天,最后一次访问服务器的时间。
注解: 在测试中, 时间格式为最后设定的服务器模式。
示例:
if(Day()<5) return(0);
int DayOfWeek( )
返回这周的星期数,(0-星期天,1,2,3,4,5,6 以此类推)来自最后已知的服务器上的时间。
注解: 在测试中, 时间格式为最后设置的服务器模式。
示例:
// 假期不工作
if(DayOfWeek()==0 || DayOfWeek()==6) return(0);
int DayOfYear( )
返回年的当天(1 代表1月1 日.., 365(6) 就是12月31 日),最后访问服务器的时间。
注解: 在测试中, 时间格式为最后已知的服务器模式。
示例:
if(DayOfYear()==245)
return(true);
int Hour( )
在程序开始以前的片刻,返回小时数(0,1,2,..23) 最后访问的服务器时间(在程序执行之内的时期这个值不会改变) 。
注解: 在测试中, 时间格式为最后设置的服务器模式。
示例:
bool is_siesta=false;
if(Hour()>=12 || Hour()<17)
is_siesta=true;
int Minute( )
在程序开始以前的片刻,返回当前的分钟(0,1,2,..59)最后访问的服务器时间(在程序执行期间这个值不会改变) 。
示例:
if(Minute()<=15)
return("first quarter");
int Month( )
在程序开始以前的片刻,返回当前的月数(1,2,..12)最后访问的服务器时间(在程序执行期间这个值不会改变) 。
注解: 在测试中, 时间格式为最后设定的服务器模式。
示例:
if(Month()<=5)
return("the first half year");
int Seconds( )
在程序开始以前的片刻,返回当前的秒数作为数字最后访问的服务器时间(在程序执行期间这个值不会改变) 。
示例:
if(Seconds()<=15)
return(0);
datetime TimeCurrent( )
返回最后访问的服务器时间(最新的行情输入时间)作为秒钟数字从00:00 1970 年1月1 日开始。
注解: 在测试中, 时间格式为最后设定的服务器模式。
示例:
if(TimeCurrent()-OrderOpenTime()<360) return(0);
int TimeDay( datetime date)
返回输入日期中的日期(1-31)
参量:
date - 作为秒钟的数字从00:00 1970 年1月1 日开始。
示例:
int day=TimeDay(D'2003.12.31');
// 天数为31
int TimeDayOfWeek( datetime date)
返回从零开始的星期中的第几天(0 代表星期天, 1, 2, 3, 4, 5, 6) 为指定日期。
参量:
date - 作为秒钟的数字,从00:00 1970 年1月1 日开始。
示例:
int weekday=TimeDayOfWeek(D'2004.11.2');
// 数字2 - 星期二
int TimeDayOfYear( datetime date)
返回一年中的日数(1 意味1月1 日.., 365(6) 表示12月31 日)为指定日期。
参量:
date - 作为秒钟的数字,从00:00 1970 年1月1 日开始。
示例:
int day=TimeDayOfYear(TimeCurrent());
int TimeHour( datetime time)
返回小时为指定的时间。
参量:
time - 作为秒钟的数字,从00:00 1970 年1月1 日开始。
示例:
int h=TimeHour(TimeCurrent());
datetime TimeLocal( )
返回当前电脑时间,从00:00 1970 年1月1 日开始。
注解: 在测试中, 时间格式为最后设定的服务器模式。
示例:
if(TimeLocal()-OrderOpenTime()<360) return(0);
int TimeMinute( datetime time)
返回分钟为指定的时间。
参量:
time - 作为秒钟的数字,从00:00 1970 年1月1 日开始。
示例:
int m=TimeMinute(TimeCurrent());
int TimeMonth( datetime time)
返回月数为指定的时间。
参量:
time - 作为秒钟的数字,从00:00 1970 年1月1 日开始。
示例:
int m=TimeMonth(TimeCurrent());
int TimeSeconds( datetime time)
返回秒数为指定的时间。
参量:
time - 作为秒钟的数字,从00:00 1970 年1月1 日开始。
示例:
int m=TimeSeconds(TimeCurrent());
int TimeYear( datetime time)
返回年数为指定的时间。
返回值的范围可以在1970 到 2037之间。
参量:
time - 作为秒钟的数字,从00:00 1970 年1月1 日开始。
示例:
int y=TimeYear(TimeCurrent());
int Year( )
返回本年度的年数字,即,服务器的年数时间。
注解: 在测试中, 时间格式为最后设定的服务器模式。
示例:
// 如果时间范围在2006年1月到4月30日之间,返回。
if(Year()==2006 && Month()<5)
return(0);。