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等类型的压缩文件,还必须下载后解压到此目录才能使用。
MT4MT5外汇EA编程教程大全之交易函数-10页精选文档
MT4 MT5外汇EA编程教程大全之交易函数(三)从自定义指标中不能调用OrderSend(), OrderClose, OrderCloseBy, OrderDelete和OrderModify交易函数。
OrderCloseOrderCloseByOrderClosePriceOrderCloseTimeOrderCommentOrderCommissionOrderDeleteOrderExpirationOrderLotsOrderMagicNumberOrderModifyOrderOpenPriceOrderOpenTimeOrderPrintOrderProfitOrderSelectOrderSendOrdersHistoryTotalOrderStopLossOrdersTotalOrderSwapOrderSymbolOrderTakeProfitOrderTicketOrderTypebool 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编程教程大全之日期时间函数日期时间函数在编程中非常常用,可以用于获取当前时间、格式化时间、日期的加减运算等功能。
下面是关于日期时间函数的一些常用知识点和实例代码。
1.获取当前时间获取当前时间是程序中一项常用任务,可以使用date函数来实现。
date函数可以返回当前系统时间的多种格式。
常见的格式化字符串参数包括:"Y-m-d H:i:s"(年-月-日时:分:秒)、"Y/m/d H:i:s"(年/月/日时:分:秒)、"Y年m月d日 H时i分s秒"(年月日时分秒)等。
```python```输出结果可能为:2024-05-0614:30:452.时间的加减运算```pythonafter_1_hour = now + delta```输出结果可能为:2024-05-0615:30:453.将字符串转换为时间对象```pythondate_string = "2024-01-01 12:00:00"print(date_object)```输出结果可能为:2024-01-0112:00:004.将时间对象转换为字符串```pythonprint(date_string)```输出结果可能为:2024-05-0614:30:455.获取指定日期的星期几有时需要知道一些日期是星期几,可以使用weekday函数来实现。
weekday函数返回的是一个整数,0代表星期一,1代表星期二,依次类推。
```pythondate_string = "2024-05-06"weekday = date_object.weekdayprint(weekday)```输出结果为:"4",表示星期五总结:。
MT4MT5外汇EA编程教程大全之日期时间函数
MT4 MT5外汇EA编程教程大全之日期时间函数(四)表示时间类型数据的一组函数(从1970年1月1日午夜开始以秒为单位计算)。
DayDayOfWeekDayOfYearHourMinuteMonthSecondsTimeCurrentTimeDayTimeDayOfWeekTimeDayOfYearTimeHourTimeLocalTimeMinuteTimeMonthTimeSecondsTimeYearYearint 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)最后访问的服务器时间(在程序执行期间这个值不会改变) 。
MT4自带的EA详解(MA和MACD)
一个成交价,则向下继续运行)
//---- get Moving Average –获取均线数值 ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0); //获取当前以收盘价为基准计算出的均线数值
iMA(NULL,0,12,6,MOD_SMA,PRICE_CLOSE,0)
extern double Lots extern double MaximumRisk extern double DecreaseFactor extern double MovingPeriod extern double MovingShift
= 0.1; //每单的交易量 = 0.02;//本系统最大风险系数,即可以动用总资金的 2% = 3; //下跌因素个数 = 12; //均线的计算周期=12 根 K 线; = 6; //均线在 K 线图中向右显示的偏移量=6 根 K 线;
if(Volume[0]>1) return;//如果当前 K 线的成交价次数>1 时,则返回 //---- get Moving Average //获取均线数值 ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0); //获取当前以收盘价为基准计算出的均线数值
MT4 MT5外汇EA编程教程大全之数组函数
MT4 MT5外汇EA编程教程大全之数组函数(五)使用数组的一组函数。
数组的最大维数为四维。
每个维数被索引编为从0 至维度-1。
事实上,第一维数组的50 个,在调用时第一个数组显示为[0], 最后一个数组显示为[49]。
使用这些函数(除那些改变定量和定性的数组外)能够预定义时间系列Time[], Open[], High[], Low[], Close[], Volume[]ArrayBsearchArrayCopyArrayCopyRatesArrayCopySeriesArrayDimensionArrayGetAsSeriesArrayInitializeArrayIsSeriesArrayMaximumArrayMinimumArrayRangeArrayResizeArraySetAsSeriesArraySizeArraySortint ArrayBsearch( double array[], double value, void count, void start, void direction)如果没有发现事件,值会返回到第一个维度的数组或者最近的一个数组。
此函数不能用在字符型或连续数字的数组上(除打开柱的连续数组)。
注解: 双元查找只能够存储数。
存储数字数组使用ArraySort() 函数。
参量:array[] - 需要搜索的数组.value - 将要搜索的值count - 搜索的数量,默认搜索所有的数组.start - 搜索的开始点,默认从头开始.direction - 搜索的方向:MODE_ASCEND 顺序搜索,MODE_DESCEND 倒序搜索.示例:datetime daytimes[];int shift=10,dayshift;// 全部 Time[] 数组被排列在后面的形式ArrayCopySeries(daytimes,MODE_TIME,Symbol(),PERIOD_D1);if(Time[shift]>=daytimes[0]) dayshift=0;else{dayshift=ArrayBsearch(daytimes,Time[shift],WHOLE_ARRAY,0,MODE_DESCEND);if(Period()<PERIOD_D1) dayshift++;}Print(TimeToStr(Time[shift])," corresponds to ",dayshift," day bar opened at ", TimeToStr(daytimes[dayshift]));ArrayCopyint ArrayCopy( void dest[], object source[], void start_dest, void start_source, void count) 复制一个数组到另外一个数组。
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指标编程入门解析
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`的浮点数数组,用于存储移动平均线的值。
MT4MT5外汇EA编程教程大全之日期时间函数
MT4MT5外汇EA编程教程大全之日期时间函数1、Time函数Time函数用于获取当前服务器时间,即GMT时间,这是一个用于时间基衡的,与你的本地时间相差一个时差的时间。
Time函数的语法格式:返回值类型:long,即整数类型,以秒为单位Time函数实例://取得GMT时间long lGMTTime = Time(;2、TimeLocal函数TimeLocal函数用于取得当前本地时间。
TimeLocal函数的语法格式:TimeLocal()返回值类型:long,即整数类型,以秒为单位TimeLocal函数实例://取得本地时间long lLocalTime = TimeLocal(;3、TimeCurrent函数TimeCurrent函数用于取得当前的服务器时间或本地时间等,它可以获取的参数与该函数的返回值规格一样(可选参数TimeLocal(/TimeGMT(/TimeCurrent()。
TimeCurrent函数的语法格式:TimeCurrent([可选参数])返回值类型:long,即整数类型,以秒为单位TimeCurrent函数实例://取得当前时间long lCurrentTime = TimeCurrent(;4、TimeDay函数TimeDay函数用于取得当日的服务器时间,此时间是单经过的秒数,而不是从零点开始的秒数。
TimeDay函数的语法格式:TimeDay([可选参数])返回值类型:long,即整数类型,以秒为单位TimeDay函数实例://取得其中一日的当前时间long lNowTime = TimeDay(;5、TimeWeek函数TimeWeek函数可以取得当前服务器时间的星期几,以数字形式输出,星期一为1,星期日为7TimeWeek函数的语法格式:TimeWeek()返回值类型:int,以数字表示TimeWeek函数实例:。
完整版MT4编程入门详解 有图表
目录 MT4编程入门(一):MT4自定义指标的基本操作指标源码中的常用符号说明自定义变量自定义函数 自定义数组市场数据取值 判断语句 循环 MT4自定义指标的结构 MT4编程入门(十):画一条指标线 MT4编程入门(^一 ): MT4的报警& indicatorff文件匹 錦矩② 查看② 收障® 工具⑴ 帮助QP Q 后退-保存目录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 这个目录,也就是下面这个目录中,就可以了。
MT4MT5外汇EA编程教程大全之常用函数
MT4 MT5外汇EA编程教程大全之常用函数(一)对于每个执行的MQL4程序,一定数量的变量设定可以轻松应对图表中的价格状态:智能交易,脚本或者是客户指标。
.资料应用到可变量的模型中来。
可以由预定义的变量分开处理。
这些数据会在开启后应用 RefreshRates()函数更新。
AskBarsBidCloseDigitsHighLowOpenPointTimeVolumeAskdouble Ask对于当前货币对的最新卖价格。
使用RefreshRates()函数更新。
参见 MarketInfo().示例:if(iRSI(NULL,0,14,PRICE_CLOSE,0)<25){OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point, "My order #2",3,D'2005.10.10 12:30',Red);return;}Barsint Bars返回图表中的柱数。
参见 iBars().示例:int counter=1;for(int i=1; i<=Bars; i++){Print(关闭[i-1]);}Biddouble Bid对于当前货币对的最新买价格。
使用RefreshRates()函数更新。
参见 MarketInfo().示例:if(iRSI(NULL,0,14,PRICE_CLOSE,0)>75){OrderSend("EURUSD",OP_SELL,Lots,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point, "My Order #2",3,D'2005.10.10 12:30',Red);return(0);}Closedouble Close[]系列数组包含当前图表每个柱的收盘价格。
MT4EA编程自动计算并画出趋势线
MT4EA编程自动计算并画出趋势线MT4 EA编程自动计算并画出趋势线通过MT4平台编程,进行自动计算并画出趋势线,其方法如下所示。
下面先介绍几个特殊函数,才能正确进行相关编程。
一、基本函数介绍:1、窗口函数:WindowBarsPerChart(); //屏幕可见K线总数解释:该函数返回窗口中可见的K线数目总数,我们在画趋势线时,所选择的K线范围,一定属于在可见的范围之中,否则,难以知道其中的数据,也就不可能去画相应的趋势线了。
因此,画趋势线的范围,是由窗口中可见K线数为基础条件的。
因此,计算时,首先要获得窗口中的可见K线数。
2、时间序列图表数据:iHighest(string symbol,int timeframe,int type,void count,void start); //一组K线最高价的序号参数说明:string symbol:选定的货币对,NULL、symbol()均代表当前图表中的货币对int timeframe:所选时间周期,0代表当前图表中的时间周期int type:所选数组的类型,如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,void start); //一组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); //数组最小值位置参数说明:以上面最大值位置相对应,使用方法相同。
MT4外汇交易时间限制功能
MT4外汇交易时间限制功能外汇市场分为三个主要时段:东京时段、伦敦时段以及美国时段。
此功能代码可以针对上述三个市场分别设置允许交易的时间段,可以很方便的就可以集成到MT4指标或者E A中使用。
此商品包含了如下的附件和服务:1、时间限制功能源代码;2、商品说明书(外汇市场时间基本知识、含集成功能到EA中的方法等)3、1个月的免费咨询服务(限交易时间相关)商品说明书中的外汇市场交易时间基本知识摘录如下:外汇市场分为三个主要时段:东京时段、伦敦时段以及美国时段。
下图给出了三个市场的交易时间跨度:其中两个市场重叠的时候为市场最为繁忙和活跃的时候,特别是图中红色虚线框的部分,对应中国下午17:00到24:00的时间,市场最为活跃,也适合国内人进行交易。
以下是一些容易赔钱的或者不适合交易的时间(摘录自《外汇交易进阶》):(1)星期五:行情最不好预测,容易赔钱。
(2)星期日、节假日:成交量清淡,偶尔走势比较怪异。
(3)新闻或数据发布:市场公布数据时,很难推测出价格的走势,且波动剧烈,适宜观望为先。
智能原现在没有以后做好了发上来//////////////////////////////////////////////////////////////////////////自定义函数:extern int BeginH1=14;extern int EndH1=16;extern int BeginH2=20extern int EndH2=24判断:int hh1=Hour();int hh2=Hour();if(BeginH1EndH2)if((hh1>=EndH1 ...//////////////////////////////////////////////////////////////////////////////////////////if (TimeHour(TimeCurrent())<7 && TimeHour(TimeCurrent())>14 || TimeHour(TimeCur rent())<18 && TimeHour(TimeCurrent())>24)return; // 交易时间段为:7~14,18~24 具体决定于你的时区和服务器的时区每1个小时检查一次子函数int GoldOrDead=-1;bool CrossWithIn3Hour(){for(int i=0;i<Bars;i++){double Ma5Now=iMA(NULL,PERIOD_H1,5,0,MODE_SMA,PRICE_CLOSE,i); double Ma5Prev=iMA(NULL,PERIOD_H1,5,0,MODE_SMA,PRICE_CLOSE,i+1); double Ma10Now=iMA(NULL,PERIOD_H1,10,0,MODE_SMA,PRICE_CLOSE,i); double Ma10Perv=iMA(NULL,PERIOD_H1,10,0,MODE_SMA,PRICE_CLOSE,i+1); if(Ma5Prev<Ma10Prev && Ma5Now>Ma10Prev && i<3){GoldOrDead=1;return(true);}elseif(Ma5Prev>Ma10Prev && Ma5Now<Ma10Prev && i<3){GoldOrDead=2;return(true);}else return(false);}。
- 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);。