交易权限

交易自动化

MQL5语言提供了一个专为开发自动交易系统而设计的特别的交易函数组。无人为干涉,为自动交易而开发的程序称为EA交易或自动交易。若要在MetaEditor创建EA交易,请启动MQL5向导并在以下两个选项中选择其中一个:

  • Expert Advisor (模板) – 允许您用现有的事件处理函数创建一个模板,它应该通过编程,用所有必要的功能进行增补。
  • Expert Advisor (生成) – 允许您只需选择必要的模块即可开发一个成熟的自动交易 :交易信号模块,财务管理模块和追踪止损模块。

MQL5_Wizard

交易函数只能在EA交易和脚本中工作。交易不允许用于指标。

检查执行自动交易的权限

若要开发一种可靠的,可以无人为干涉进行工作的EA交易,则需要安排一套重要的检查。首先,如果交易全部允许,我们应该以编程方式进行检查。这是开发任何自动系统时的不可缺少的基本检查。

检查在程序端执行自动交易的权限

程序端设置为您提供了允许或禁止所有程序自动交易的能力。

TERMINAL_TRADE_ALLOWED

您可以在程序端标准面板直接切换自动交易选项:

  • AutoTrading_enabled– 启用自动交易,允许使用应用程序中的交易函数。
  • AutoTrading_disabled – 禁用自动交易,运行的应用程序不能执行交易函数。

示例检查:

if (!TerminalInfoInteger(TERMINAL_TRADE_ALLOWED)) 
   Alert("Check if automated trading is allowed in the terminal settings!");

 

检查是否允许某个运行的EA/脚本进行交易

您可以在启动时允许或禁止某个程序的自动交易。为此,请在程序属性中选择特定的勾选框。

MQL_TRADE_ALLOWED

示例检查:

   if(!TerminalInfoInteger(TERMINAL_TRADE_ALLOWED))
      Alert("Check if automated trading is allowed in the terminal settings!");
   else
     {
      if(!MQLInfoInteger(MQL_TRADE_ALLOWED))
         Alert("Automated trading is forbidden in the program settings for ",__FILE__);
     }

 

检查是否允许当前账户的任何EA/脚本进行交易

在交易服务器端可以禁止自动交易。示例检查:

   if(!AccountInfoInteger(ACCOUNT_TRADE_EXPERT))
      Alert("Automated trading is forbidden for the account ",AccountInfoInteger(ACCOUNT_LOGIN),
      " at the trade server side");

如果一个交易账户禁止自动交易,EA交易/脚本的交易操作则不会执行。

检查是否允许当前账户进行交易

在某些情况下,某个交易账户禁止任何交易操作 - 既不可以手动执行也不可以自动交易。投资者密码用于连接交易账户时的示例检查:

   if(!AccountInfoInteger(ACCOUNT_TRADE_ALLOWED))
      Comment("Trading is forbidden for the account ",AccountInfoInteger(ACCOUNT_LOGIN),
            ".\n Perhaps an investor password has been used to connect to the trading account.",
            "\n Check the terminal journal for the following entry:",
            "\n\'",AccountInfoInteger(ACCOUNT_LOGIN),"\': trading has been disabled - investor mode.");

AccountInfoInteger(ACCOUNT_TRADE_ALLOWED) 在以下情况下可能返回false

  • 没有连接交易服务器。可以使用TerminalInfoInteger(TERMINAL_CONNECTED)检查;
  • 交易账户切换到只读模式 (发送至存档);
  • 在交易服务器端禁止账户交易;
  • 交易账户连接已经在投资者模式下执行。

 

另见

客户端属性账户属性运行MQL5程序的属性