微信扫一扫 分享朋友圈

已有 71 人浏览分享

开启左侧

MQL4交易处理函数(一)

[复制链接]
71 0
MQL4交易处理函数(一)
从自定义外汇MT4指标中不能调用OrderSend()、OrderClose()、OrderCloseBy()、OrderDelete()和OrderModify()交易函数。
本组交易函数应用于智能交易和脚本中。只有智能交易设置中的“允许实时交易”属性被选中,才能调用交易函数。
为了在智能交易和脚本中进行交易,在程序交易环境(智能交易和脚本的自动交易的环境)中,只能为它提供一个线程。这就是为什么,如果这个交易环境被一个智能交易操作占用,因此会出现146错误(ERR_TRADE_CONTEXT_BUSY),其他智能交易或脚本在此时就不能调用成功。为了能确定是否有交易在进行,可使用 IsTradeAllowed() 函数检测。为了清除交易环境下访问共享,我们能够使用个基于全局变量的交
[color=]易信
号,其值可以使用 GlobalVariableSetOnCondition() 函数改变。
MQL4交易函数常见错误代码及处理意见
  • OrderSelect() – 选择订单
  • OrderClose() – 平仓
  • OrderCloseBy() – 相反头寸平仓
  • OrderClosePrice() – 获取订单平仓价格
  • OrderCloseTime() – 获取订单平仓时间
  • OrderComment() – 获取订单注释
  • OrderCommission() – 获取订单佣金数额
  • OrderDelete() – 删除挂单
  • OrderExpiration() – 获取挂单有效时间
  • OrderLots() – 获取订单交易手数
  • OrderMagicNumber() – 获取订单魔术编号
  • OrderModify() – 修改订单
  • OrderOpenPrice() – 获取订单开仓价格
  • OrderOpenTime() – 获取订单开仓时间
  • OrderPrint() – 打印订单信息
  • OrderProfit() – 获取订单盈利金额
  • OrderSend() – 发出订单
  • OrdersHistoryTotal() – 获取历史订单总数
  • OrderStopLoss() – 获取订单止损值
  • OrdersTotal() – 获取订单总数
  • OrderSwap() – 获取订单掉期值
  • OrderSymbol() – 获取订单交易品种
  • OrderTakeProfit() – 获取订单止盈值
  • OrderTicket() – 获取订单的订单编号
  • OrderType() – 获取订单交易类型

    OrderSelect() – 选择订单bool OrderSelect(int index, int select, void pool)本函数选择一个订单,等待做进一步地处理。如果函数成功,返回TRUE,如果函数失败,返回FALSE。想要获得详细错误信息,请调用GetLastError()函数。
    如果通过订单编号选定定单,pool参数应忽略。此订单编号是其唯一识别符。找出所选订单的列表,对订单时间进行分析。如果订单时间为零,此订单就是开单或挂单,或从终端开仓部位列表中选出。我们可以从订单类型区别开单和挂单。如果订单的平仓时间不等于0,此订单就是一个已经平仓的订单,或是一个已删除的挂单,也可能是从终端历史中被选出来的,他们同样可以根据定单类型相互区别。
    参数:
    index  - 定单索引或订单号,这取决于第2个参数 select - 选定模式。可以为以下的任意值:         SELECT_BY_POS - 按订单表中索引           SELECT_BY_TICKET - 按订单号 pool   - 可选择定单索引。当选择SELECT_BY_POS参数时使用。可以为以下的任意值:         MODE_TRADES (默认)- 来自交易的定单(开单和挂单),          MODE_HISTORY - 来自历史的定单(已平仓或取消的订单)。 示例:
      if(OrderSelect(12470, SELECT_BY_TICKET)==true)    {     Print("定单 #12470 开价格", OrderOpenPrice());     Print("定单 #12470 收盘价格 ", OrderClosePrice());    }  else    Print("OrderSelect 返回的错误 ",GetLastError());OrderClose() – 平仓bool OrderClose(int ticket, double lots,                 double price, int slippage, void Color)定单平仓。如果函数执行成功,返回TRUE。如果函数执行失败,返回FALSE。想要获得详细错误信息,请调用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);    }OrderCloseBy() – 相反头寸平仓bool OrderCloseBy(int ticket, int opposite, void Color)用相反定单对打开仓位进行平仓操作。如果函数成功,返回TRUE。如果函数失败,返回FALSE。获得详细错误信息,请查看GetLastError()函数。
    参数:
    ticket   - 订单号。 opposite - 相反订单的订单号。 Color    - 图表中平仓箭头颜色。如果参数丢失或用CLR_NONE值,将不会在图表中画出。 示例:
      if(iRSI(NULL,0,14,PRICE_CLOSE,0)>75)    {     OrderCloseBy(order_id,opposite_id);     return(0);    }OrderClosePrice() – 获取订单平仓价格double OrderClosePrice()获取订单平仓价格。对于已经平仓的订单返回平仓时价格,对于未平仓订单返回该订单货币对的实时价格。
    注:定单必须用 OrderSelect() 函数提前选定。
    示例:
      if(OrderSelect(ticket,SELECT_BY_POS)==true)    Print("对于订单的收盘价格",OrderClosePrice());  else    Print("OrderSelect 失败错误代码是",GetLastError());OrderCloseTime() – 获取订单平仓时间datetime OrderCloseTime()返回当前订单的平仓时间。如果定单的平仓时间不是0,所选订单会从账户历史重新尝试。未平仓的订单和挂单交易的平仓时间等于0。
    注:定单必须用 OrderSelect() 函数提前选定。
    示例:
      if(OrderSelect(10,SELECT_BY_POS,MODE_HISTORY)==true)    {     datetime ctm=OrderOpenTime();     if(ctm>0) Print("定单10 开仓时间", ctm);     ctm=OrderCloseTime();     if(ctm>0) Print("定单 10 平仓时间", ctm);    }  else    Print("OrderSelect失败错误代码是",GetLastError());OrderComment() – 获取订单注释string OrderComment()返回当前订单的注释。
    注:定单必须用 OrderSelect() 函数提前选定。
    示例:
      string comment;  if(OrderSelect(10,SELECT_BY_TICKET)==false)    { Print("OrderSelect 失败错误代码是",GetLastError());     return(0);    }  comment = OrderComment();  // ...OrderCommission() – 获取订单佣金数额double OrderCommission()返回当前订单的佣金数额。
    注:定单必须用 OrderSelect() 函数提前选定。
    示例:
      if(OrderSelect(10,SELECT_BY_POS)==true)    Print("定单10 "佣金,OrderCommission());  else   Print("OrderSelect 失败错误代码是",GetLastError());OrderDelete() – 删除挂单bool OrderDelete(int ticket, void Color)删除指定订单的挂单。如果函数成功,返回TRUE。如果函数失败,返回FALSE。获得详细错误信息,请查看GetLastError()函数。
    参数:
    ticket   - 要删除的订单(挂单)号。  Color    - 图表中平仓箭头颜色。如果参数丢失或用CLR_NONE值,将不会在图表中画出。 示例:
      if(Ask>var1)    {     OrderDelete(order_ticket);     return(0);    }OrderExpiration() – 获取挂单有效时间datetime OrderExpiration()返回当前挂单的有效时间。
    注:定单必须用 OrderSelect() 函数提前选定。
    示例:
      if(OrderSelect(10, SELECT_BY_TICKET)==true)    Print("定单 #10 有效日期为",OrderExpiration());  else    Print("OrderSelect 返回的",GetLastError()错误);OrderLots() – 获取订单交易手数double OrderLots()返回当前订单的交易手数。
    注:定单必须用 OrderSelect() 函数提前选定。
    示例:
      if(OrderSelect(10,SELECT_BY_POS)==true)    Print("定单 10 交易手数",OrderLots());  else    Print("OrderSelect 返回的 ",GetLastError()错误);OrderMagicNumber() – 获取订单魔术编号int OrderMagicNumber()返回当前订单的魔术编号。
    注:定单必须用 OrderSelect() 函数提前选定。
    示例:
      if(OrderSelect(10,SELECT_BY_POS)==true)    Print("定单 10 的魔术编号", OrderMagicNumber());  else    Print("OrderSelect 返回的 ",GetLastError()错误);OrderModify() – 修改订单bool OrderModify(int ticket, double price, double stoploss,                  double takeprofit, datetime expiration,                  void arrow_color)修改以前的开仓或挂单的订单参数。如果函数成功,返回TRUE。如果函数失败,返回FALSE。如果想获取详细的错误信息,请调用GetLastError()函数。
    注:只有挂单才能修改开仓价和过期时间。
    如果用原值作为参数传递给该函数,将会产生错误代码为1的信息 (ERR_NO_RESULT)。
    在某些交易服务器上,挂单的过期时间被禁用。这种情况下,当在过期参数中指定一个非零值时,将生成147错误(ERR_TRADE_EXPIRATION_DENIED)。
    参数:
    ticket     - 要修改的订单(挂单)号。price      -  新的开仓价格。(对于挂单有效) stoploss   -   新止损价位。 takeprofit -   新止盈价位。 expiration -   挂单有效时间。(对于挂单有效)  Color      - 图表中平仓箭头颜色。如果参数丢失或用CLR_NONE值,将不会在图表中画出。 示例:
      if(TrailingStop>0)    {     OrderSelect(12345,SELECT_BY_TICKET);     if(Bid-OrderOpenPrice()>Point*TrailingStop)       {        if(OrderS
    大家在看了小编以上对"MQL4交易处理函数(一)"的介绍后应该都清楚了吧,希望对大家做单有所帮助。如果大家还想要下载更多有关"MQL4交易处理函数(一)"的相关EA源码,敬请关注汇探网下载。我们会持续更新交易系统,EA源码。
  • 举报 使用道具

    回复
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    精彩推荐
    热门资讯
    网友晒图
    图文推荐
    • 联系我们
    • 邮箱:1912582076#qq.com(请把#改成@)
    • 电话:400-178-8526
    • QQ客服 1912582076
    • 工作时间:周一至周五(早上9点至下午5:30点)
    • 微信公众平台

    • 客服微信号

    QQ|外汇EA|炒外汇论坛|外汇ea|汇探网 |网站地图

    GMT+8, 2026-3-20 05:29 , Processed in 0.263089 second(s), 29 queries .

    Powered by 汇探网 免责申明:本平台仅提供 外汇ea, 外汇指标模板所有产品及展示信息均由第三方发布提供.|投资有风险,交易需谨慎.

    Copyright © 2014-2023, 汇探网-提供 外汇MT4指标,外汇EA下载,外汇交易系统,外汇开户赠金视频教程,外汇软件工具等.版权所有,复制必究.