mt5交易软件作用类似外汇EA的魔术号码限价单即是好比往还者报限价单4000做众螺纹钢,则往还所只会正在4000或4000以下说合该众单,于是倘使能成交,成交价值只会正在4000或4000以下。

  好比往还者报限价单8000做空苹果,则往还所只会正在8000或8000以上说合该空单,于是倘使能成交,成交价值只会正在8000或8000以上。

  也即是说限价单会正在往还者指定的价值上成交,凌驾了该价值则不行交。更众请看MT5Future:MT5 EA往还期货2-期货与外汇往还机造。

  EA获取眼前图外的合约。对待非主纠合约如rb2209可能通过Symbol()属性得回眼前图外的合约,但对待主纠合约如rb9999,则须要通过SYMBOL_ISIN属性得回主纠合约当今对应的合约(rb2301),当主纠合约rb9999跟着期间爆发换月后,通过SYMBOL_ISIN属性获得的合约就会自愿变为rb2305。应用后者的写法可能让EA正在主纠合约和非主纠合约的图外上都能得回眼前图外的合约。

  通过SYMBOL_EXCHANGE属性得回该合约对应的往还所, 如得回rb2301所属的往还所SHFE(上期所)。

  通过SYMBOL_DIGITS属性得回该合约的小数后位数,如螺纹钢是0,股指是1。

  界说报单期间全部变量entryTime,用来判别是否仍旧报单。界说仓位全部变量,倘使pos等于0即是空仓,倘使大于0即是持仓。eaOrderRef是EA报单编号,用意好似外汇EA的魔术号码。

  getLastMQLTick函数起首得回当今的格林威治期间,将格林威治期间转成北京期间,得回3个小时之前的期间(好比眼前是12点即是9点),将之前3个小时从此的完全跳复造到ticks[]数组(MqlTick机闭体)拜望ticks[]数组的结尾一个元素,即得回并返回最新价值的MqlTick机闭体

  通过最新的MqlTick机闭体得到最新成交价,创立报单手数1手,挪用mt5ctp.dll getOrderRefCTP函数天生EA报单编号并保生计eaOrderRef变量,CTP对报单编号体式有体式哀求,不行像外汇EA的魔术号码可任意自行指定, 不然报单会打击,于是EA需先挪用getOrderRefCTP函数天生EA报单编号再报单。

  EA挪用mt5ctp.dll sendOrderLimit函数发送限价报单,个中第一个参数是合约,第二个参数是mt5ctp.mqh头文献中界说的列举ENUM_CTP_BUY_ORDER(代外众单),第三个参数是mt5ctp.mqh头文献中界说的列举ENUM_CTP_OPEN_POSITION(代外开仓),第四个参数是报单的价值,第五个参数是报单的手数,第六个参数是EA报单编号,第七个参数是mt5ctp.mqh头文献中界说的列举ENUM_CTP_ACCOUNT_SPECULATION(代外开户的期货账号是图利)。

  请留心sendOrderLimit函数挪用后会同步返回当地电脑发送报单仰求的结果,0是当地电脑向往还所获胜发送报单,-1是搜集毗连打击,-2是未收拾仰求突出许可数,-3是每秒发送仰求数突出许可数。但纵然sendOrderLimit函数返回0(即竣事下图中的1和2),也不代外仍旧获胜正在往还所挂单,还须要等候往还所异步返回对EA报单的说合结果即报单回调停成交回调(即下图中的3),更众请看MT5 EA往还期货8-往还所异步回调。

  MT5通过mt5ctp.dll获得报单回调停成交回调,然后把这些回调举动MQL图外事变发送给完全图外,EA 通过MQL图外事变反响函数OnChartEvent获得这些回调(即上图中的4)。

  EA通过OnChartEvent函数的sparam参数得回图外事变中的往还所报单回调。

  EA通过OnChartEvent函数的sparam参数得回MQL图外事变中的往还所报单回调。把sparam对应的字符串按逗号拆分后生存到字符数组chartEvents[]。

  由于正在OnChartEvent函数中ID是3000的事变席卷了百般的往还所回调(如报单回调,成交回调,撤单回调,差错回调,仓位回调,资金回调), 于是EA须要先依照chartEvents[0]=OnRtnOrder筛选出个中的报单回调。

  chartEvents数组的第4个元素是EA报单编号。倘使有众个EA同时正在区别的图外上运转并报单,本图外的OnChartEvent也会接管到其他图外上的EA形成的报单回调,正在上面EA仍旧天生并记实了EA本次报单编号正在eaOrderRef变量中,于是只要报单回调中的EA报单编号等于eaOrderRef变量才是本EA本次报单的回调(用意好似于外汇EA中的魔术号码)。

  EA得回报单回调中的往还所、合约、EA报单编号、CTP报单编号、报单是做众或做空、报单是开仓或平仓,得回报单价值,报单手数,报单成交手数,报单期间,撤单期间和往还所对这回报单的说合结果。

  由于正在OnChartEvent函数中ID是3000的事变席卷了往还所的百般回调(如报单回调,成交回调,撤单回调,差错回调,仓位回调,资金回调),更众请看MT5 EA往还期货8-往还所异步回调。 于是EA须要先依照chartEvents[0]=OnRtnTrade寻找个中的成交回调。

  EA得到成交回调中的EA报单编号。倘使有众个EA同时正在区别的图外上运转并报单,本图外的OnChartEvent也会接管到其他图外上的EA形成的成交回调,正在第40行eaOrderRef变量仍旧记实了这回报单的编号,于是成交回调中的EA报单编号等于该变量才是本EA本次报单的成交回调(用意好似于外汇EA中的魔术号码)。

  EA就可能得回成交回调中的往还所、合约、CTP报单编号、CTP成交编号、报单是做众仍然做空、报单是开仓仍然平仓)、报单的成交价值、报单的成交手数、报单成交期间。

  倘使往还所拒绝了EA的报单, EA通过报单差错回调得回该报单被拒绝的理由。