【MQL5】SignalInfoSetDouble関数の使い方と自動売買実装コード

1. SignalInfoSetDouble関数の概要と実務での活用法

SignalInfoSetDoubleは、MetaTrader 5(MT5)が提供する「シグナルサービス(コピートレード)」の設定値を、MQL5プログラムから動的に変更するための関数です。

実務においては、単にシグナルを購読するだけでなく、「証拠金の何%をコピーに割り当てるか」「どの程度のドローダウンでコピーを停止するか」といったリスク管理のパラメータを自動で調整したい場合に使用します。

初心者が特につまずきやすいのは、この関数が「自分のEAの注文」を制御するものではなく、あくまでMT5標準機能の「シグナル購読設定」を操作するものであるという点です。自身のロジックで売買を行うEA開発ではあまり登場しませんが、シグナル配信を利用したポートフォリオ運用を自動化するクオンツエンジニアにとっては、リスクコントロールの要となる重要な関数です。


2. 構文と戻り値

SignalInfoSetDouble関数の基本的な構文は以下の通りです。

bool SignalInfoSetDouble(
   ENUM_SIGNAL_INFO_DOUBLE  property_id,     // プロパティ識別子
   double                   value            // 設定する値
);

パラメーター

  • property_id: 設定したい項目の識別子を指定します。主な識別子は以下の通りです。
  • SIGNAL_INFO_DEPOSIT_PERCENT: 使用する証拠金の割合(%)。
  • SIGNAL_INFO_EQUITY_LIMIT: コピーを停止する有効証拠金の最低額。
  • SIGNAL_INFO_SL_PERCENT: ストップロス(%)。
  • value: 設定する具体的な数値(double型)。

戻り値

  • 設定に成功した場合は true、失敗した場合は false を返します。失敗の理由を確認するには GetLastError() 関数を使用します。

3. 具体的な使い方・実践サンプルコード

以下は、現在購読しているシグナルの「証拠金使用率」を、プログラムから安全に変更するスクリプトの例です。

//+------------------------------------------------------------------+
//| シグナル設定を動的に変更するサンプル                                     |
//+------------------------------------------------------------------+
void OnStart()
{
   // 使用する証拠金の割合を40%に設定する例
   double targetPercent = 40.0;

   // 有効証拠金が100,000円を下回ったらコピーを停止する設定
   double equityLimit = 100000.0;

   // 1. 証拠金使用率を設定
   if(SignalInfoSetDouble(SIGNAL_INFO_DEPOSIT_PERCENT, targetPercent))
   {
      Print("証拠金使用率を ", targetPercent, "% に設定しました。");
   }
   else
   {
      Print("証拠金使用率の設定に失敗。エラーコード: ", GetLastError());
   }

   // 2. 有効証拠金の制限(ストップアウト)を設定
   if(SignalInfoSetDouble(SIGNAL_INFO_EQUITY_LIMIT, equityLimit))
   {
      Print("有効証拠金制限を ", equityLimit, " に設定しました。");
   }
   else
   {
      Print("有効証拠金制限の設定に失敗。エラーコード: ", GetLastError());
   }
}

このコードを実行することで、MT5の「オプション」画面にある「シグナル」タブの設定を手動で開くことなく、プログラムから即座に反映させることが可能です。


4. 使用上の注意点とよくあるエラー

  1. シグナル購読中であること:
    そもそもシグナルを購読していない状態(有効なシグナルが選択されていない状態)でこの関数を呼び出しても、変更は反映されずエラーを返します。
  2. 値の範囲に注意:
    例えば SIGNAL_INFO_DEPOSIT_PERCENT に 100 を超える数値やマイナスの数値を入れないよう、コード側でバリデーション(検算)を行うのが実務上のマナーです。
  3. 権限の確認:
    MT5の「アルゴリズム注文を許可する」設定がオフになっている場合や、シグナルサービス自体の規約により制限がかかっている場合には動作しません。
  4. 即時反映のラグ:
    関数自体は成功を返しても、実際の注文コピー処理に反映されるまでには、プラットフォーム内部で極短時間の処理ラグが発生する可能性があることを考慮してください。

5. 【重要】自動売買における約定スピードと環境の罠

アルゴリズムトレードにおいて、プログラムのロジック以上に収益を左右するのが「注文執行速度(レイテンシ)」です。特にシグナルコピーや超短気売買を行う場合、自宅のPC環境から一般的なインターネット回線を通じて注文を送ることは、プロの視点から見れば極めてリスクの高い行為と言わざるを得ません。家庭用回線ではパケットの揺らぎや予期せぬ瞬断が日常的に発生しており、その数ミリ秒から数秒の遅延が、本来得られるはずだった利益をスリッページという形で奪い、致命的な損失を招きます。

厳しい相場で生き残るエンジニアにとって、取引サーバーに物理的に近いデータセンター内に設置された「専用VPS(仮想専用サーバー)」の導入は、もはやオプションではなく必須のインフラです。24時間365日、安定した電源と超高速なネットワーク環境下でEAを稼働させることで初めて、あなたの設計したアルゴリズムは本来のポテンシャルを発揮します。約定スピードの極限までの追求こそが、勝率の差を生む決定的な要因となるのです。

💡 この記事の内容を実運用で活かすには?

この記事の内容を実運用で活かすには、正しい環境が必要です。
特にVPSを使わないと、このロジックは再現できません。

コメント

タイトルとURLをコピーしました