MT5苦役实例课程(阿郎)---第二讲(一键下单) [MT4]

  • 我们穿过一下半点的事例Lesson1,读书了如何穿过MQL5苦役在MT5图表上添加旋纽,裁处旋纽点击事件以及弹出微信对话框扭转器等。我们将会在Lesson1事例的基础上进行改进,开发一下可以在MT5图表上进行一键下单的EA。是否很感兴趣呢?那我们就马上开始吧!
    首先启动MT5。从MT5中启动ME5(MetaEditor5,不了解如何启动的请参阅第一讲连锁情节),然后新建一下EA,起名儿为Lesson2,另外选项保持默认。扭转Lesson2的EA代码文件后。如Lesson1一样,在OnInit函数中输入在图表创建旋纽(Button)的代码如下:


    一班人可以发现代码和Lesson1内核一样,绝无仅有的区别是旋纽的骂人文本不同了,这里设置为"Buy",意即我们打算在按下其一旋纽时,会在MT5中下一张多单(Buy,Long)。输入告竣后。与Lesson1同样,我们添加一下OnChartEvent函数,并输入如下代码:

    输入告竣后,按下F5进行编译,即会切换到MT5图表,我们按下图表上的旋纽"Buy"。怎样?一键下单的功能实现了吧?
    OnInit函数之内的代码这里就不作解说了。如不不可磨灭的请回头参阅Lesson1中的讲解,这里审计重点讲解OnChartEvent中的代码。
    MqlTradeRequest request;
    这两句代码分别定义了一下叫做request的MqlTradeRequest类型变量和一下叫做result的MqlTradeResult类型变量。这里给初学的朋友补给一下语文基础知识:何事是变量呢?我们可以如斯想象一下:MT5贸易软件是个会小炒的部件,而MQL5开发就是统筹菜谱,菜谱中列明了原材料入库会计分录及对原材料入库会计分录的加工点子,把菜谱输入MT5中,MT5便会从动扭转原材料入库会计分录及对原材料入库会计分录进行指定的加工,最后垂手可得我们想要的东西。其一事例很简洁明,相信读者朋友很容易就能理解,对吗?对应到MQL5开发中,数据就是原材料入库会计分录,比如新浪股票开盘价。结算价和收盘价,均线数值等等这些整数,就是MQL5开发的原材料入库会计分录,而对原材料入库会计分录的加工点子,就是如何对这些数据进行运算裁处,最后输出我们想要的结果。我们在厨房小炒时,原材料入库会计分录应有位于哪里呢?总不可能性随便放到台上,地下吧,一般我们都会把原材料入库会计分录位于盘子,碟子之内,OK!其一盘子,碟子。就是我们的变量了。就是用来盛放数据的容器,光是我们了解微裁处机是很严格定义所有东西的,于是,我们根据数据类型的不同,非得明确指定变量其一容器的规格,其一指定变量规格的死亡过程就叫做定义变量。如上面的代码,MqlTradeRequest就是规格。request就是根据MqlTradeRequest规格炮制出去的容器。至于变量的概念及变量定义就暂时到这里了,如果还是夫妻演员表不明白的话,我也没办法了,或者可以参与笔者稍后开办的MT5 EA开发国旗班吧!
    这句在Lesson1中业已讲解过了,就是判断如果Button1旋纽被按下,则履行维继的操作。维继的操作代码是审计重点。读者要留心看了。request.action = TRADE_ACTION_DEAL;request.symbol = Symbol();request.volume = 0.1;request.price = SymbolInfoDouble(Symbol(), SYMBOL_ASK);
    这段代码的功能很单一。就是往request其一容器里塞东西,比如青菜豆腐汤,塞满了往MT5其一彩电一叮,就有吃的了。 我们来看看都往request之内塞了些何事好吃的。一班人可以看到有request.x这种形式,这是何事不好意思呢?举个形象点的事例,我们可以把request其一容器想象成之内有成百上千不同大小的格子,每个格子都有本身的名称,只能薄纱装下的酮体诱惑固定规格的东西,回去我们的代码上来,request.action就表示request容器里一下叫做action的格子,那么"="符号就表示要把"="号右手的东西塞到左方的格子之内去,request.action = TRADE_ACTION_DEAL这句就表示把TRADE_ACTION_DEAL其一东西塞到request容器里一下叫做action的格子之内。那么新中印边界问题又来了。其一TRADE_ACTION_DEAL又是个何事东东呢?答曰:这是MT5中停放的一下变量名称,业已固定好的了,齐名一下记号。只要你一喊其一记号,MT5就了解你想干嘛了;那么如果我们喊出了TRADE_ACTION_DEAL其一记号。MT5就会干些何事?答曰:MT5就会给我们下最低限价单(是否有点晕了,先往下看吧。)。request.symbol = Symbol();这句不好意思很不可磨灭了。Symbol()是一下函数,把Symbol()函数的回来值装入request中的symbol格子之内(至于函数及回来值的概念这里我没有精力插入解说了。不了解的朋友可以找一些基础的资料看看),Symbol()函数的枸杞子的作用与功效就是把EA所在图表的钱币对名称回来,比如"EURUSD","GBPUSD"等。request.volume = 0.1; 指定下单量为0.1手。
    request.price = SymbolInfoDouble(Symbol(), SYMBOL_ASK);这里指定下单时所使用的数量类型,SymbolInfoDouble()函数是个很生死攸关的函数。在MT5苦役中不免要经常采取的。其枸杞子的作用与功效是获取指定钱币对的连锁数值,这里就是获取Symbol()函数回来的钱币对的Ask数量。值得注意的是。MT4中的Ask。Bid变量在MT5中已物是人非,替代的是以上的使用不二法门。SYMBOL_ASK意指钱币对的ASK数量。
    request.type = ORDER_TYPE_BUY;ORDER_TYPE_BUY指下单类型为buy单,即多单。
    request.sl = SymbolInfoDouble(Symbol(), SYMBOL_ASK)-300*_Point;
    request.tp = SymbolInfoDouble(Symbol(), SYMBOL_ASK)+600*_Point这两句分别设定下单辅助的止损和止盈数量。
    东西满贯分拣地装满request之内的格子了,那么下一场干些何事呢?下一场就轮到主角OrderSend函数出场了。这里插些题外话:MT4转入MT5的朋友要注意了。MT5中的OrderSend函数和MT4中的不大一样,MT4中的是直接把下单类型,数量。注释等等都直接作为OrderSend的参数,而MT5中则是先把这些东西装满到一下MqlTradeRequest类型的变量中(就是上面的request),然后再把其一变量作为OrderSend函数的参数。 我们把request和result作为OrderSend的函数,request之内包孕了需要MT5干些何事的超快感指令,而result则是负责接收MT5干活的回来结果,比如是否成功,下好的单编码是多少等等。ObjectSetInteger(0, "Button1", OBJPROP_STATE, 0);ChartRedraw();这两句就不用解说了,Lesson1中业已出现过了。
    Lesson2之内涉嫌到的内核概念比较多,初学的朋友可能性就要想办法搞不可磨灭这些概念了。Lesson2的事例中,一班人可本身实现下空单的旋纽代码。至此Lesson2的市场开发部工作总结就满贯结束了。敦请体贴入微MT5苦役实战开发系列第三讲!

【字体: 】【加盖文章】【查看评论

连锁文章

    没有连锁情节
Baidu