【MT5】コピペで注文!標準ライブラリCTradeを使ったEA注文処理の書き方

MQL5 開発講座

こんにちは、潤奈です( ゚Д゚)!
MQL5の開発環境が整い、基本となる3大関数の役割を覚えたら、次はいよいよEA開発の醍醐味である「自動で注文(エントリー)を出す処理」を実装していきましょう!

実は、MQL4からMQL5に移行した人が最も驚き、そして挫折しやすいのが「注文処理の難しさ」です。
MQL4では1行でシンプルに書けた注文が、MQL5でまともに書こうとすると「構造体」や「結果の受け取り」など、非常に複雑なコードを何十行も書く必要があります。

しかし、安心してください!
MT5には、この面倒な注文処理を劇的にシンプルにしてくれる公式ツール「標準ライブラリ(CTradeクラス)」が最初から用意されています。

今回は、この CTrade を使って、コピペで今すぐ動かせる超シンプルな注文処理の書き方を分かりやすく解説します!


1. MQL5の注文はなぜ難しい?(MQL4との比較)

まず、なぜ標準ライブラリが必要なのか、背景をサラッと理解しておきましょう。

MQL4では、以下のように OrderSend 関数に引数を並べるだけで買い注文が出せました。

一方、MQL5でライブラリを使わずにネイティブなコードで同じ注文を出そうとすると、以下のように MqlTradeRequest という専用の「構造体」に必要なデータを1つずつ代入して送信しなければなりません。

「注文を出すだけでこんなに書くの…?」と頭が痛くなりますよね。
これを解決してくれる救世主が、今回紹介する CTrade です!


2. 救世主「CTrade」の使い方(3つのステップ)

標準ライブラリの CTrade を使うと、面倒な構造体の設定を裏側で自動的に処理してくれます。
使い方は、以下のたった3ステップです。

ステップ①:ライブラリを読み込む(インクルード)

コードの最上部(プロパティ設定や変数の宣言よりも上)に、以下の1行を記述してライブラリをインクルード(読み込み)します。

ステップ②:注文用オブジェクト(インスタンス)を作る

グローバル領域(どの関数にも属さない場所)で、CTrade クラスを使えるように宣言します。

ステップ③:注文関数を呼び出す

これで準備完了です!あとは OnTick() 内などで、以下のように呼び出すだけで注文が実行されます。

  • 成行買い (0.1ロット):
    mql5
    trade.Buy(0.1);
  • 成行売り (0.1ロット):
    mql5
    trade.Sell(0.1);

MQL4よりもさらにシンプルになりましたね!


3. コピペで動く!サンプルEAコード

それでは、実際に動かして試せるサンプルコードを紹介します。
このコードは、「EAをチャートにセットした瞬間に、0.1ロットの成行買い注文を1回だけ出す」というシンプルなEAテンプレートです。

メタエディタを開き、新規作成したEAテンプレートに以下のコードをそのまま貼り付けてコンパイル(F7)してみてください。


4. プロっぽく制御するための超重要設定(マジックナンバーとスリッページ)

サンプルコードの OnInit() 内で登場した以下の記述は、実際のEA運用において非常に重要な初期設定です。

  • マジックナンバー (SetExpertMagicNumber)
    他のEAや手動トレードの注文と混ざらないようにするための「EAの識別ID」です。これを設定しておかないと、EAが他の注文を誤って決済してしまうなどのトラブルにつながります。
  • スリッページ (SetDeviationInPoints)
    急激な値動きの際に、発注した価格と実際の約定価格がどれくらいズレても許容するかを設定します。MQL5ではポイント単位(1pips=10ポイント)で指定するため、100 と指定すると10pipsまでのズレを許容することになります。

これらは、trade.Buy などを実行する前に、必ず OnInit() の中で1度設定しておくのがMQL5のベストプラクティスです。


5. まとめ&次のステップ

今回は、MQL5での注文を劇的に簡単にしてくれる CTrade ライブラリの使い方について解説しました。

  • MQL5の生コードでの発注は非常に複雑だが、標準ライブラリ CTrade を使えば1行で書ける。
  • #include <Trade\Trade.mqh> を忘れずにインクルードする。
  • OnInit() 内で マジックナンバースリッページ を必ず設定しておく。

無事に注文を出せるようになったら、次は「注文したポジションを自動で決済(クローズ)する方法」を学んでいきましょう!MQL5では、決済処理もMQL4とは全く異なるアプローチが必要になります。

今回のコードで注文が通らない場合や、エラーコードの意味が分からない場合は、YouTubeのコメント欄やXでお気軽にご連絡くださいね!

🎥 YouTubeチャンネル: 潤奈【FXチャンネル】
🐦 X (Twitter): @zyuna32246

コメント

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