取引許可

取引の自動化

MQL5 言語は自動売買システムの開発に意図された取引関数 を提供します。人間の介入なしの自動売買のために開発されたプログラムは「エキスパートアドバイザー(EA)」または「取引ロボット」と呼ばれます。MetaEditor でエキスパートアドバイザーを作成するには MQL5 Wizard を起動し、次の 2 つの選択肢の 1 つを選択します。

  • Expert Advisor (template) – 既製のイベント処理の関数を持ち、プログラミングによって必要な関数を全て補足出来る、テンプレートを作成することが出来ます。
  • Expert Advisor (generate) – 単に売買シグナルモジュール、資金管理モジュールとトレイリングストップモジュールなどの必要なモジュールを選択して本格的な取引ロボット開発 が出来ます。

MQL5_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) でチェック出来ます。)
  • 取引口座が読み込み専用モードに切り替えられている(アーカイブに送信された)
  • 口座での売買がサーバ側で無効にされた
  • 取引口座への接続が投資家モードで実行されている

 

参照

クライアント端末プロパティ口座プロパティMQL5 プログラム実行のプロパティ