跳至内容

Trade Permission

交易权限

交易自动化

MQL4语言提供了一组专为开发自动化交易系统而设计的交易函数。用于无需人工干预的自动化交易的程序被称为专家顾问或交易机器人。要在MetaEditor中创建专家顾问,请启动MQL4向导并选择“专家顾问(模板)”选项。这允许您创建一个包含现成的事件处理函数的模板,这些函数需要通过编程添加所有必要的功能。

MQL4_Wizard

交易函数只能在专家顾问和脚本中运行。指标不允许进行交易。

检查执行自动化交易的权限

为了开发能够无需人工干预即可运行的可靠专家顾问,需要安排一系列重要的检查。首先,我们应该通过编程检查是否允许进行交易。这是开发任何自动化系统时不可或缺的基本检查。

在终端检查执行自动化交易的权限

终端设置允许您为所有程序允许或禁止自动化交易。

TERMINAL_TRADE_ALLOWED

您可以在终端的标准面板中直接切换自动化交易选项:

  • AutoTrading_enabled

– 启用自动化交易,启动的应用程序中的交易函数可以使用。

  • AutoTrading_disabled

– 禁用自动化交易,正在运行的应用程序无法执行交易函数。

示例检查:

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

检查特定运行的专家顾问/脚本是否允许进行交易

可以在启动特定程序时允许或禁止其进行自动化交易。为此,请使用程序属性中的特殊复选框。

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__);
     }

检查当前账户的所有专家顾问/脚本是否允许进行交易

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

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

如果某个交易账户的自动化交易被禁用,则不会执行专家顾问/脚本的交易操作。

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

在某些情况下,某个特定交易账户的任何交易操作都被禁用——既不允许手动也不允许自动化交易。当投资者密码用于连接交易账户时的示例检查:

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)进行检查;
  • 交易账户切换到只读模式(已归档);
  • 交易账户在交易服务器端被禁用;
  • 以投资者模式连接了交易账户。

另请参阅

客户端终端属性账户属性正在运行的MQL4程序的属性

最后更新于