交易权限
交易自动化
MQL5语言提供了一个专为开发自动交易系统而设计的特别的交易函数组。无人为干涉,为自动交易而开发的程序称为EA交易或自动交易。若要在MetaEditor创建EA交易,请启动MQL5向导并在以下两个选项中选择其中一个:
- Expert Advisor (模板) 允许您用现有的事件处理函数创建一个模板,它应该通过编程,用所有必要的功能进行增补。
- Expert Advisor (生成) 允许您只需选择必要的模块即可开发一个成熟的自动交易 :交易信号模块,财务管理模块和追踪止损模块。
交易函数只能在EA交易和脚本中工作。交易不允许用于指标。
检查执行自动交易的权限
若要开发一种可靠的,可以无人为干涉进行工作的EA交易,则需要安排一套重要的检查。首先,如果交易全部允许,我们应该以编程方式进行检查。这是开发任何自动系统时的不可缺少的基本检查。
检查在程序端执行自动交易的权限
程序端设置为您提供了允许或禁止所有程序自动交易的能力。
您可以在程序端标准面板直接切换自动交易选项:
- 启用自动交易,允许使用应用程序中的交易函数。
- 禁用自动交易,运行的应用程序不能执行交易函数。
示例检查:
if (!TerminalInfoInteger(TERMINAL_TRADE_ALLOWED))
|
检查是否允许某个运行的EA/脚本进行交易
您可以在启动时允许或禁止某个程序的自动交易。为此,请在程序属性中选择特定的勾选框。
示例检查:
if(!TerminalInfoInteger(TERMINAL_TRADE_ALLOWED))
|
检查是否允许当前账户的任何EA/脚本进行交易
在交易服务器端可以禁止自动交易。示例检查:
if(!AccountInfoInteger(ACCOUNT_TRADE_EXPERT))
|
如果一个交易账户禁止自动交易,EA交易/脚本的交易操作则不会执行。
检查是否允许当前账户进行交易
在某些情况下,某个交易账户禁止任何交易操作 - 既不可以手动执行也不可以自动交易。投资者密码用于连接交易账户时的示例检查:
if(!AccountInfoInteger(ACCOUNT_TRADE_ALLOWED))
|
AccountInfoInteger(ACCOUNT_TRADE_ALLOWED) 在以下情况下可能返回false:
- 没有连接交易服务器。可以使用TerminalInfoInteger(TERMINAL_CONNECTED)检查;
- 交易账户切换到只读模式 (发送至存档);
- 在交易服务器端禁止账户交易;
- 交易账户连接已经在投资者模式下执行。
另见