DEDEYUAN.COM演示站

时间:2024-01-10 10:04  编辑:admin

  还需要等待交易所异步返回对撤单的处理结果即撤单回调(即下图3)?国海证券手机版下载该例子的源代码正在EA贸易 - Examples下, 请从下载。本例子演示正在买一价往上10个跳的代价上挂空单, 挂单后10秒后撤单。

  与外汇贸易分别,为了防范盘口愰骗,各贸易所都将频仍撤单列入分外贸易经管外率请预防。

  合于非主纠合约如rb2209可能通过Symbol()属性得回暂时图外的合约,但合于主纠合约如rb9999,则须要通过SYMBOL_ISIN属性得回主纠合约而今对应的合约(rb2301),当主纠合约rb9999跟着年光产生换月后,通过SYMBOL_ISIN属性取得的合约就会主动变为rb2305。操纵后者的写法可能让EA正在主纠合约和非主纠合约的图外上都能得回暂时图外的合约。

  通过SYMBOL_EXCHANGE属性得回该合约对应的贸易所, 如得回rb2301所属的贸易所SHFE即上期所。

  通过SYMBOL_TRADE_TICK_SIZE属性得回该合约每一跳的巨细,如螺纹钢是1,股指期货是0.2。

  orderSysId是用来保管CTP挂单回调中的CTP订单编号,这个变量正在之后的撤单中须要操纵。

  placeOrderDateTime是纪录挂单凯旋的年光,该年光过了10秒后会撤单。

  移用mt5ctp.dll getOrderRefCTP函数天生EA报单编号并保保存eaOrderRef变量,期货贸易所对报单编号体式有原则,不行像外汇EA的魔术号码可疏忽自行指定, 不然报单会波折,是以EA需先移用mt5ctp.dll的getOrderRefCTP接口函数天生EA报单编号再报单。

  移用mt5ctp.dll sendOrderLimit函数发送限价报单,个中第一个参数是合约,第二个参数是mt5ctp.mqh头文献中界说的罗列ENUM_CTP_SELL_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参数得回图外变乱中的贸易所报单回调。把sparam对应的字符串按逗号拆分后保管到字符数组chartEvents[]。由于正在OnChartEvent函数中ID是3000的变乱搜罗了种种的贸易所回调(如报单回调,成交回调,撤单回调,舛误回调,仓位回调,资金回调), 是以EA须要先按照chartEvents[0]=OnRtnOrder筛选出个中的报单回调。

  chartEvents数组的第4个元素是EA报单编号。倘若有众个EA同时正在分别的图外上运转并报单,本图外的OnChartEvent也会采纳到其他图外上的EA爆发的报单回调,之前EA一经天生并纪录了本次报单编号正在eaOrderRef变量中,是以惟有报单回调中的EA报单编号等于eaOrderRef变量才是本EA的报单回调(效力好像于外汇EA中的魔术号码)。

  EA得回报单回调中的CTP报单编号,报单做众或做空,报单开仓或平仓,和贸易所对此次报单的联络结果。

  当贸易所联络结果是3(未成交还正在部队中)或 4(未成交不正在部队中),即是挂单凯旋了,纪录暂时挂单的数目为1,并纪录凯旋挂单的年光。

  挂单凯旋10秒后会取消这个挂单,移用mt5ctp.dll的cancelOrderCTP函数举行撤单,个中第一个参数是该合约属于的贸易所,第二个参数是合约,第三个参数是CTP报单编号。

  cancelOrderCTP函数移用后会同步返回当地电脑经管撤单要求的结果,0是当地向贸易所凯旋发送撤单,-1是汇集连绵波折,-2是未经管要求凌驾许可数,-3是显示每秒发送要求数凌驾许可数。但纵使cancelOrderCTP函数返回0(只是已毕了1和2),也不代外一经凯旋正在贸易所撤单,还须要守候贸易所异步返回对撤单的经管结果即撤单回调(即下图3),MT5通过mt5ctp.dll取得贸易所的撤单回调,并把撤单回调动作MQL图外变乱发送给整体图外,EA 通过MQL图外变乱反响函数OnChartEvent取得这些回调(即下图4)。奈何获得和经管撤单回调与上面经管报单回调同理。