English Русский Deutsch
preview
初心者からエキスパートへ:MQL5を使用したアニメーションニュースヘッドライン(VI) - ニュース取引のための指値注文戦略

初心者からエキスパートへ:MQL5を使用したアニメーションニュースヘッドライン(VI) - ニュース取引のための指値注文戦略

MetaTrader 5トレーディング |
82 0
Clemence Benjamin
Clemence Benjamin

内容



はじめに

前回のバージョンでは、エキスパートアドバイザー(EA)にアラート機能を組み込むことで、手動でニュース取引をおこなうトレーダーにとって有用なツールへと進化させました。しかし、依然として大きな課題が残っています。自動売買の実行がまだおこなわれていないという点です。本記事では、この課題を解決するため、CTradeクラスを統合し、ニュースイベントに基づいて自動的に取引をおこなう機能を実装します。

本プロジェクトのこれまでのバージョンはすでにいくつかの利点を備えており、それぞれの新機能は特定の課題を解決し、EAの実用価値を高めるよう設計されていました。以下に、それらの利点のいくつかを簡単にまとめます。

  • ニュースカレンダーへの便利なアクセス:トレーダーは、チャート上で今後の経済イベントを直接確認でき、取引や分析の作業を中断する必要がありません。
  • リアルタイム経済ニュース見出し:ニュースソースとしてAlpha Vantageを統合し、最新のヘッドラインを提供することで、トレーダーが常に最新情報を得られるようにしました。
  • 内蔵インジケーターインサイト:MQL5 APIを用いてテクニカル指標データを取得し、専用レーンに可視化することで、チャート上で直感的に分析結果を確認できるようにしました。
  • AIインサイト:ローカルAIモデルと接続し、市場分析インサイトを生成する機能を追加しました。これにより高度な分析が可能となりましたが、一部でスクロール速度に影響が出る課題も確認されています。

これらの強固な基盤が整った今、次の課題に取り組む準備ができました。すなわち、ニュースシグナルをEA内で自動的に実際の取引実行へとつなげることです。



指値注文統合の戦略概要

すべてのEAは、最終的にはいつ、どのように取引をおこなうかを決定するロジックにかかっています。これまでの「News Headline EA」プロジェクトでは、経済イベント向けの強力なビジュアル体験とアラートシステムに焦点を当ててきました。イベントレーンやニュースティッカー、さらにはチャート上をスクロールするAI駆動のインサイトまで構築してきました。しかし、これらのツールは有用である一方で、トレーダーが手動で取引をおこなう必要がありました。次の論理的な進化は、EAを単に情報を提供するだけでなく、機会が訪れた際に自律的に行動できる取引エンジンへと変えることです。

私たちは、影響力の大きい経済ニュースによって引き起こされるボラティリティを捉える指値注文ロジックの統合を準備しています。この計画段階は非常に重要です。しっかりとした設計図がなければ、実装は容易に混乱したり、エラーが発生しやすくなります。

EAにおける取引ロジックの必要性

視覚的に優れた純粋情報型EAであっても、基本的には受動的です。取引を自動化するには、EAに明確なルールが必要です。

  1. タイミング:取引を開始するタイミング
  2. 方向性:ロングにするかショートにするか、あるいは中立に留まるか
  3. 注文タイプ:成行、指値、ストップのいずれを出すか
  4. リスク管理:ストップロスやテイクプロフィットの設定方法
  5. クリーンアップロジック:状況が変化した場合の注文の削除や修正方法

私たちの場合、取引の実行条件として時間ベースの条件を意図的に選択しています。これはニュース取引に特に適しています。なぜなら、ニュースの公開タイミングは事前に分かっているからです。純粋にチャートパターンやインジケーターシグナルに依存する手法とは異なり、このアプローチではスケジュールされたニュースカレンダーを主なトリガーとして取引活動を開始します。

戦略に基づく市場観察

数か月にわたる観察とテストの結果、一貫した市場行動が確認されました。主要経済指標の発表前数分は、ボラティリティが縮小する傾向があります。トレーダーや機関投資家が情報を待つため、流動性はやや薄くなることがあります。そして、ニュースが発表されると、価格は急激に上昇または下落することが多く、人間のトレーダーだけでなくアルゴリズムもこの新しい情報に反応します。

この発表後の急激な値動きは以下の通りです。

  1. ニュースがポジティブなサプライズを与えた場合:急騰
  2. ニュースが市場にネガティブな衝撃を与えた場合:急落

このボラティリティの急増は、どちらの方向にブレイクするかを捉える指値注文戦略に適した環境を作り出します。

指値注文の設計方針

私たちのニューストレード手法では、2つの指値ストップ注文を使用します。

  1. 買いストップ:直近の市場価格より上に配置し、上昇ブレイクを捉える
  2. 売りストップ:市場価格より下に配置し、下降ブレイクを捉える

これらの注文は、予定されたニュース発表の指定分前(入力パラメータ「InpOrderMinutesBefore」で定義)に配置します。これにより、EAは注文を準備する時間を確保しつつ、不要な市場ノイズへの露出を最小限に抑えることができます。

ロジックはシンプルです。

ニュースが十分に影響力を持ち、決定的な価格変動を引き起こす場合、どちらかの指値注文が発動し、その方向の勢いに乗ることができます。一方の注文が約定された場合、逆方向の逆方向の注文を削除し、反転による損失を避けます。

削除のステップを省くと、両方の注文が短時間で発動することがあります(「whipsaw」(激しい上下変動)や「ヒットアンドラン」プライスアクション)。これは両取引が損失で終わる可能性があり、戦略の意図に反します。

ニュース取引におけるリスク管理

ニュース取引には独特のリスクがあります。従来の手法が徐々に進行するのに対し、経済ニュースは通貨ペアをミリ秒単位で数十ピップス動かすことがあります。スプレッドの拡大、スリッページ、価格のギャップも発生します。

私たちが計画しているEAでは、リスク管理は後付けではなく、戦略設計の中心的原則です。

保護層として以下を構築しています。

1. 固定ストップロスとテイクプロフィットの距離

InpStopLossPipsとInpTakeProfitPipsを入力として公開します。これにより、ストップロスやテイクプロフィットの距離を正確に制御できます。例として、10ピップのストップと20ピップのテイクプロフィットで、制御された2:1のリワード・リスク比を作ることができます。

2. スプレッドとティックサイズの補償

注文前に現在のスプレッドを計算し、指値注文のオフセットに組み込みます。これにより、単なる買値・売値の変動で誤って注文が発動するのを防ぎ、意図したエントリーレベルの正確性を維持します。

3. 動的ピップ計算

USD/JPYのピップは0.01、EUR/USDは0.0001 など、通貨ペアごとにピップの単位が異なります。EAは通貨ペアのティックサイズと小数桁数を読み取り、ストップロス(SL)、テイクプロフィット(TP)、指値レベルを正確に計算します。

4. 未発動注文のクリーンアップ

一方の注文が約定した際、EAは即座に逆方向の注文を削除します。これにより、急激なスパイク時の二重ポジションによる損失リスクを防ぎます。

これらすべての措置により、EAは熟練トレーダーと同等の規律を持って取引をおこない、パニックや衝動によるミスを避けることができます。特にNFP(金曜日の雇用統計発表)のような高ボラティリティ時には、これらの保護機能が極めて重要です。

CTradeの役割を理解する

計画の中心にはCTradeクラスがあります。これはMQL5の低レベル取引関数をラップする高レベルクラスです。CTradeがなければ、すべてのMqlTradeRequestとMqlTradeResult構造体を手動で作成し、戻り値を管理し、数十のエラーシナリオを処理する必要があります。CTradeは以下を処理します。

  • 正しい構造での注文作成
  • 通貨ペア権限と証拠金要件の確認
  • スリッページの処理(偏差設定による)
  • 後での修正や削除のためのチケット番号管理
  • ログ記録とエラー処理

実際に、膨大なリクエストロジックを書く代わりに、単に次のように呼び出します。

trade.BuyStop(volume, price, symbol, stoploss, takeprofit);
trade.SellStop(volume, price, symbol, stoploss, takeprofit);
trade.OrderDelete(ticket);

これは迅速かつクリーンで、バグのリスクも大幅に減少します。

統合の設計図

指値注文統合は、以下の概念フローで進めます。

1. 経済指標カレンダーをスキャンして次の高インパクトイベントを特定します。

2. 現在時刻とイベント時刻の差を計算します。

3. ニュース発表の指定分前に指値注文を配置します。

  • 参照価格を直近のM1始値から算出
  • スプレッドを考慮してピップオフセットを加減
  • ストップロスとテイクプロフィット価格を計算

4. CTradeメソッドを使用して、買いストップ注文と売りストップ注文を送信します。

5. ポジションを監視します。

  • 一方が約定したら、逆方向の注文を削除する

6. リスク管理を適用します。

  • 固定SL/TP距離を適用する
  • 不要になった指値注文をキャンセルする

この設計により、急激な値動きに備えつつ、露出とリスクを制御できます。

まとめると、ニュース主導の取引ロジックをEAに統合する全プロセスを詳細に説明しました。補足として、開発段階とおこなっていく主要な意思決定を視覚化したフローダイアグラムも添付しています。これにより、MQL5における実装の技術的・実務的側面を包括的に理解できます。

開発フロー図

開発プロセスフロー図

これらの概念が、次の段階である実際のMQL5実装の基盤となります。次のフェーズでは、この計画をコードに翻訳し、CTradeロジックをタイマーループに統合し、ライブニュースイベント周辺でのEAの挙動を徹底的にテストします。

ここで「News Headline EA」は、単なる情報提供ツールから、ミリ秒単位で反応し、手動トレーダーでは捉えられない機会を迅速に捉える強力な自律型取引システムへと進化します。


実装

この段階では、実際の統合プロセスに焦点を当て、詳細なコードの内訳と解説を提供することで、明確な理解を得られるようにしています。ここではCTradeクラスを導入します。このクラスは、EAコードの先頭でヘッダーファイルをインクルードすることで組み込みます。下記の強調表示されたスニペットを参照してください。各コードスニペットとその解説をじっくり確認することで、統合の仕組みや、EA内で各コンポーネントがどのように接続されているかを詳細に理解できます。

1. 取引セットアップと構成

標準のチャート描画キャンバスおよびAIインサイト変数の直後に、単一のCTradeインスタンス「trade」と、いくつかのグローバル変数を宣言します。それにはordersPlaced、nextEventTime、および2つのチケット識別子(ticketBuyStop、ticketSellStop)が含まれます。このブロックは、ボリューム、ピップオフセット、ストップロス/テイクプロフィット(ピップ単位)、および「何分前に注文するか」の入力設定と並んで配置されます。これらを「ORDER EXECUTION INPUTS」の下にまとめ、単一のCTradeインスタンスを作成することで、MQL5 Tradeライブラリの高レベルメソッドを活用しつつ、すべてのパラメータをEAのInputsダイアログからカスタマイズ可能にしています。

#include <Trade/Trade.mqh>
//…
CTrade trade;
bool   ordersPlaced    = false;
datetime nextEventTime = 0;
ulong  ticketBuyStop   = 0;
ulong  ticketSellStop  = 0;
//--- ORDER EXECUTION INPUTS ---
input int    InpOrderMinutesBefore  = 3;    
input double InpOrderVolume         = 0.10; 
input double InpStopOffsetPips      = 5.0;  
input double InpStopLossPips        = 20.0; 
input double InpTakeProfitPips      = 40.0; 

2. 次のニュースイベントの特定

ReloadEvents()内では、本日の高/中/低インパクトイベントを取得してソートした後、ユーザーが取引対象として有効化した重要度のみを対象に、最も早いタイムスタンプを見つけることでnextEventTimeを計算します。イベントリストが更新されるたびに「ordersPlaced = false」と両方のチケット変数をゼロに設定することで、各ニュース発表サイクルがクリーンな状態から始まり、残存フラグや孤立した指値注文が残らないように保証します。

void ReloadEvents()
{
  // … calendar fetching and sorting …

  // pick next event only from enabled levels
  datetime th = INT_MAX;
  if(InpTradeHigh && ArraySize(highArr)>0) th = MathMin(th, highArr[0].time);
  if(InpTradeMed  && ArraySize(medArr)>0)  th = MathMin(th, medArr[0].time);
  if(InpTradeLow  && ArraySize(lowArr)>0)  th = MathMin(th, lowArr[0].time);
  nextEventTime = (th==INT_MAX ? 0 : th);

  // reset order flags
  ordersPlaced   = false;
  ticketBuyStop  = ticketSellStop = 0;
}

3. 指値注文ウィンドウのタイミング

OnTimer()内では、現在のサーバー時刻(now)と「nextEventTime – InpOrderMinutesBefore*60」を比較します。時計がそのウィンドウに入ると、そしてordersPlacedガードのおかげで各イベントにつき一度だけ、2つの指値ストップ(買いと売り)を作成する処理に進みます。「いつ取引するか」と「どのように取引するか」を分離することで、タイミングロジックを整理し、重複エントリーを防止しています。

void OnTimer()
{
  datetime now       = TimeTradeServer();
  datetime placeTime = nextEventTime - InpOrderMinutesBefore*60;

  if(!ordersPlaced && nextEventTime>now && now>=placeTime)
  {
    // … compute prices and place orders …
    ordersPlaced = true;
  }

  // … rest of drawing, alerts, AI, etc. …
}

4. ピップ単位で正確な価格の計算と注文の配置

各通貨ペアのティックサイズを考慮した価格レベルを計算するために、SYMBOL_POINTを取得し、1ピップを10ポイントとして導出します。JPYクロスであっても同様です。次に、ターゲットタイムスタンプに対応する正確なM1ローソク足の始値をiBarShiftとiOpenで取得します。エントリー、ストップロス、テイクプロフィットのオフセットはすべてピップ単位で乗算され、ローソク足の始値に加算または減算されます。注文を送信する前に、各価格を「NormalizeDouble(..., SYMBOL_DIGITS)」を通して、ブローカーの精度要件を満たすようにします。最後にtrade.SetExpertMagicNumber()とtrade.BuyStop(...) / trade.SellStop(...)を呼び出します。内部的には、CTradeクラスがOrderSend()の呼び出し、結果の確認、およびエラー報告を処理するため、EAコードは簡潔に保たれます。

// inside the placement block in OnTimer()
double point = SymbolInfoDouble(_Symbol, SYMBOL_POINT);
double pip   = point * 10.0;

// find the bar open at target time
int idx = iBarShift(_Symbol, PERIOD_M1, placeTime, false);
if(idx >= 0)
{
  double baseOpen = iOpen(_Symbol, PERIOD_M1, idx);
  double ask      = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
  double bid      = SymbolInfoDouble(_Symbol, SYMBOL_BID);
  double spreadPips = (ask - bid) / pip;

  double offsetP = (spreadPips + InpStopOffsetPips) * pip;
  double slP     = InpStopLossPips   * pip;
  double tpP     = InpTakeProfitPips * pip;

  double rawBuy  = baseOpen + offsetP;
  double rawSell = baseOpen - offsetP;
  double rawBsl  = rawBuy  - slP;
  double rawBtp  = rawBuy  + tpP;
  double rawSsl  = rawSell + slP;
  double rawStp  = rawSell - tpP;

  int d = (int)SymbolInfoInteger(_Symbol, SYMBOL_DIGITS);
  double buyPrice  = NormalizeDouble(rawBuy,  d);
  double sellPrice = NormalizeDouble(rawSell, d);
  double buySL     = NormalizeDouble(rawBsl,  d);
  double buyTP     = NormalizeDouble(rawBtp,  d);
  double sellSL    = NormalizeDouble(rawSsl,  d);
  double sellTP    = NormalizeDouble(rawStp,  d);

  trade.SetExpertMagicNumber(123456);
  trade.SetDeviationInPoints(10);

  ticketBuyStop  = trade.BuyStop (InpOrderVolume, buyPrice,  _Symbol, buySL,  buyTP) ? trade.ResultOrder() : 0;
  ticketSellStop = trade.SellStop(InpOrderVolume, sellPrice, _Symbol, sellSL, sellTP) ? trade.ResultOrder() : 0;
}

5. 未発動注文のクリーンアップ

指値注文が配置された直後、EAは引き続きPositionSelect(_Symbol)をポーリングします。ストップ注文のいずれかが実際のポジションに変換された際、PositionGetInteger(POSITION_TYPE)を用いて実行された側を検出し、逆方向のチケットに対してtrade.OrderDelete()を呼び出します。この処理を2つの別々の文(1つは注文を削除するため、もう1つはチケットIDをゼロにリセットするため)に分けることで、ロジックがより明確になります。

// later in OnTimer()
if(ordersPlaced && PositionSelect(_Symbol))
{
  long ptype = PositionGetInteger(POSITION_TYPE);
  if(ptype==POSITION_TYPE_BUY && ticketSellStop>0)
  {
    trade.OrderDelete(ticketSellStop);
    ticketSellStop = 0;
  }
  if(ptype==POSITION_TYPE_SELL && ticketBuyStop>0)
  {
    trade.OrderDelete(ticketBuyStop);
    ticketBuyStop = 0;
  }
}

全体の統合

これらのセクション、つまり、入力とグローバル変数、イベント選択、タイミング、ピップ単位で正確な価格計算、CTradeによる指値注文の配置、自動クリーンアップを重ね合わせることで、主に表示に特化していたEAを、ニュース駆動型のフルオートパイロットへと変換しました。Trade.mqhヘッダーは、注文のフォーマット、送信/修正/削除、チケットや結果の管理など、すべての基盤処理を提供します。これにより、EAは「どの取引を、いつおこなうか」(設定とイベントタイミング)に集中でき、「どのように」取引リクエストを組み立てるか(生のMqlTradeRequest構造体の構築)を意識する必要がなくなります。読者の便宜のため、記事の最後に、すべて統合済みのEAソースコードを掲載しています。各要素が一つにまとめられており、そのままコンパイルしてMetaTrader 5に読み込み可能です。


テスト

初期テスト結果

2025.07.15 13:45:02.348  News Headline_EA (USDJPY.0,M1) CTrade::OrderSend: sell stop 0.10 USDJPY.0 at 147.922 sl: 148.128 tp: 147.522 [invalid price]
2025.07.15 13:49:02.373  News Headline_EA (USDJPY.0,M1) CTrade::OrderSend: buy stop 0.10 USDJPY.0 at 147.951 sl: 147.740 tp: 148.351 [invalid price]
2025.07.15 13:49:02.374  News Headline_EA (USDJPY.0,M1) CTrade::OrderSend: sell stop 0.10 USDJPY.0 at 147.929 sl: 148.140 tp: 147.529 [invalid price]

初期テスト段階において、EAは買いストップおよび売りストップ注文を配置しようとした際に、いくつかの「invalid price」エラーに遭遇しました。ログには以下のように記録されています:CTrade::OrderSend: sell stop 0.10 USDJPY.0 at 147.922 sl:148.128 tp:147.522 [invalid price]。これらのエラーは、初期実装における2つの主な見落としに起因しています。1つ目は、EAが通貨ペア固有のピップおよびティックサイズを十分に処理していなかったことです。2つ目は、リアルタイムのbid/askに基づいて価格を計算しようとしたことです。これらは急速に変動し、ブローカーの最小ストップレベル距離などの制約を破る可能性がありました。この問題に対処するため、ロジックを修正し、ニュース発表の数分前に完了した直近のM1ローソク足の始値を参照するようにしました。これにより、指値エントリー価格計算のための安定したブローカー準拠の基準点が得られました。

さらに、SymbolInfoDouble(SYMBOL_POINT)を使用して通貨ペアのピップサイズを動的に取得し、ティックサイズスケーリングを用いてピップ値を計算しました。これにより、通常小数点以下3桁の小数(0.001)を使用するUSDJPYや、5桁の小数(0.00010)を使用するEURUSDなど、異なる通貨ペア間で一貫性が確保されます。計算されたすべての価格は、NormalizeDouble(price, digits)を通して通貨ペアの精度に合わせて正規化しました。この二重の改良(安定した基準価格と正しい価格フォーマット)により、すべての指値注文が有効範囲内に収まり、無効価格エラーは完全に解消され、EAはどの通貨ペアでも安全かつ適応可能になりました。

最終テスト

テストでは、次に予定されていた高インパクトイベント、GBP BoE総裁ベイリー氏の講演に注目しました。このイベントはEAのカレンダー表示で「赤ニュースパッケージ」として表示されていました。テスト用スクリーンショットを取得した時点で、EAはこのイベントに対して正しく「残り5分」のカウントダウンを表示していました。私たちのロジックでは、予定された発表の3分前に指値注文を配置するよう設定されているため、EAが期待通りに注文セットアップを開始するか確認するため、さらに2分待ちました。

5分以内に発生するイベントを通知するアラートウィンドウ

デフォルト設定では、イベント時刻のちょうど3分前に注文が配置されます。しかし、このようなニュース取引EAの実運用テストには独自の課題があります。特にMetaTrader 5のストラテジーテスターは、ライブの経済カレンダーイベントをシミュレートするのに完全には適していません。ストラテジーテスターは市場ティックの再生によって動作しますが、リアルタイムのカレンダーデータを認識できず、ライブ運用時と同じ非同期HTTPリクエストもサポートしていません。つまり、テスターでニュース発表まで「早送り」したり、ニュース見出し取得から注文配置までのEAのフルパイプラインを本物の時間条件下で検証することはできません。

指値注文の配置のためのEAのテスト

この制約を回避する実用的な手法として、指値注文を配置するニュース前のリードタイム(分)を入力パラメータで調整する方法があります。たとえば、実際のニュースイベントが50分後に予定されている場合、ほぼ1時間待つのを避けたいとします。この場合、一時的にデフォルトの3分を45分に変更します。これにより、長時間待たずに、EAが注文配置ロジックを正しくトリガーするかどうかを確認できます。この変更時に注文が正しく配置されれば、本番環境でもイベント直前にEAの自動化ロジックが正しく動作するという確信が得られます。

テストでは、ストップロスとテイクプロフィットを20ピップに設定しましたが、私の好みや口座サイズにはやや大きいと感じました。多くの個人トレーダーにとっては、10ピップのストップがより保守的で実用的な選択となる場合があります(口座残高やリスク許容度に応じて)。最終的に、EAはストップロスとテイクプロフィットのレベルを個々のリスク管理戦略に合わせて柔軟に調整できるよう設計されています。



結論

もともとは単純なニュースおよびイベント表示システムとして始まったこのプロジェクトは、現在では堅牢な指値注文戦略を中心に構築された、高度なニュース取引兼表示ソリューションへと進化しました。この過程で、MQL5の驚くべき柔軟性を実感しました。MQL5は人工知能エンジンやニュースAPIから、プラットフォームの強力な組み込み分析ツールまで、外部システムとのシームレスな統合を可能にします。このプロセスはまさに驚異的であり、アルゴリズム取引におけるMQL5のほぼ無限の可能性を明らかにしました。

私たちのEAは、リアルタイムのチャート上表示、自動取引ロジック、規律あるリスク管理を組み合わせた、ほぼ完成形に近いニュース取引の傑作へと進化しています。カスタマイズ可能なプリセットにより、トレーダーは最適な設定を微調整でき、さらにEAを仮想プライベートサーバー(VPS)上で稼働させることで、24時間信頼できるニュース取引の相棒として運用可能です。

今回のバージョンでは、News APIキーを設定せず、AIサーバーにも接続せずにテストを実施しました。この意図的な選択により、テスト中は取引ロジックの完成度に集中でき、安定性を確保し、パフォーマンス過負荷を回避することができました。これらの統合が有効でない状態でも、ニュースイベントの処理や注文配置がスムーズかつ信頼性高くおこなわれることを確認しました。

EAをさらに拡張したい方のために、ローカルAIモデルを設定するための必要ファイルを添付しています。詳細な設定手順については、当該記事を再度ご参照ください。

EAはすでに多機能ですが、追加の機能強化の余地は十分にあります。時間と機会があれば、さらに高度な機能を備えた将来バージョンの公開も計画しています。

皆様からのフィードバック、コメント、テスト結果を心よりお待ちしております。共にこのツールをさらに洗練させ、ニュースベースのアルゴリズム取引の最前線を探求していきましょう。


重要な学び

学び説明
OnTimerによるイベント処理OnTimer()関数を使用することで、EAはニュース時刻のチェック、グラフィックの更新、取引管理などを、新しいティックに依存せずに固定スケジュールで実行することができます。
CTradeを使った注文管理CTradeクラスにより、低レベルの取引リクエストコードを記述せずに注文の配置、変更、決済が可能になり、安定かつ保守しやすい取引ロジックを実現できます。
動的配列の管理MQL5で配列を扱う際(サイズ変更やソートなど)は、イベントリスト、価格データ、その他動的データセットの管理に不可欠です。
文字列の処理と解析JSONやテキストレスポンスの解析、文字列のトリミング、部分文字列の操作は、Web APIの統合やEA内カスタムメッセージ作成に必須です。
リスク管理の原則ロットサイズ、ストップロス、テイクプロフィットの距離を適切に計算することは、口座の健全性を維持し、ニュースイベント時の予測不能な価格変動へのエクスポージャーを低減する上で基本です。
WebRequestとの統合MQL5では外部サーバーへのHTTP/HTTPSリクエスト送信が可能です。これにより、ニュース見出しやAI予測を取得するなど、外部データを取引戦略に組み込むことができます。
グラフィカルキャンバス描画CCanvasなどのクラスを使用することで、スクロールテキストやグラフィックなどをチャート上に描画できます。これにより、MetaTrader 5のチャート上に高度なUIオーバーレイを構築できます。
通貨ペア固有の精度各通貨ペアではポイント、ピップサイズや小数桁数が異なる場合があります。注文オフセットやSL/TPなどの計算を通貨ペアの精度に合わせることは、注文エラー回避のために必須です。
マジックナンバーマジックナンバーは特定のEAによる注文を一意に識別します。これにより、ポジション管理が安全になり、他のEAや手動取引との競合を防止できます。
デバッグとログPrint()、Alert()、ログ機構を使用することで、バグの追跡や開発、ライブ取引中のEA挙動の観察が可能になります。


添付ファイル

ファイル名バージョン説明
News Headline EA.mq51.10経済カレンダーイベント、Alpha Vantageニュース見出し、テクニカル指標インサイト、AI駆動の市場インサイト、アラート、プッシュ通知、さらに自動ニュース取引実行(動的ピップ処理対応)を統合したMetaTrader 5用EA
download_model.py
AI市場インサイト生成に必要な機械学習モデルをダウンロードして保存するPythonスクリプト。EAのAIコンポーネントが、予測に必要なモデルファイルをローカルで確実に利用できるようにします。
serve_insights.pyEAからのHTTP POSTリクエストを受け取り、AI生成の市場インサイトを返すローカルPython Webサービス。EAのリアルタイムインサイトレーンデータ用のAIバックエンドとして機能します。

目次に戻る

MetaQuotes Ltdにより英語から翻訳されました。
元の記事: https://www.mql5.com/en/articles/18754

添付されたファイル |
download_model.py (0.28 KB)
serve_insights.py (1.77 KB)
取引におけるニューラルネットワーク:マルチエージェント自己適応モデル(MASA) 取引におけるニューラルネットワーク:マルチエージェント自己適応モデル(MASA)
マルチエージェント自己適応(MASA: Multi-Agent Self-Adaptive)フレームワークについて紹介します。本フレームワークは、強化学習と適応戦略を組み合わせ、変動の激しい市場環境においても収益性とリスク管理のバランスを実現します。
MQL5取引ツール(第5回):リアルタイム銘柄監視のためのローリングティッカーテープの作成 MQL5取引ツール(第5回):リアルタイム銘柄監視のためのローリングティッカーテープの作成
本記事では、MQL5を用いて複数の通貨ペアをリアルタイムで監視できるローリングティッカーテープを開発します。Bid価格(買値)、スプレッド、日次変化率をスクロール表示し、価格変動やトレンドを効果的に強調するために、フォント、色、スクロール速度をカスタマイズ可能にします。
初級から中級まで:定義(II) 初級から中級まで:定義(II)
本記事では、前回に引き続き#defineディレクティブについて理解を深めていきますが、今回はその第2の使用形態、すなわちマクロの作成に焦点を当てます。このテーマはやや複雑であるため、これまで学習を進めてきたアプリケーションを題材として取り上げながら説明していきます。この記事も楽しんでいただけたら幸いです。
MQL5で自己最適化エキスパートアドバイザーを構築する(第9回):二重移動平均クロスオーバー MQL5で自己最適化エキスパートアドバイザーを構築する(第9回):二重移動平均クロスオーバー
本記事では、二重移動平均クロスオーバー戦略の設計について説明します。この戦略では、上位時間足(例:日足、D1)のシグナルを参照して下位時間足(例:15分足、M15)でエントリーをおこない、ストップロスレベルは中間的リスク時間足(例:4時間足、H4)から算出します。システム定数やカスタム列挙型、トレンドフォローと平均回帰(ミーンリバージョン)モードに対応したロジックを導入し、モジュール化と将来的な遺伝的アルゴリズムによる最適化を重視しています。このアプローチにより、柔軟なエントリーとエグジットの条件を設定でき、下位時間足でのエントリーを高い時間足のトレンドに合わせることで、シグナルのラグを軽減し、取引タイミングを改善することを目指しています。