mql-developer について
mql-developerは、MetaTrader向けのMQL4・MQL5開発を支援するリファレンス兼開発ガイドです。Expert Advisor、インジケーター、取引処理、外部通信、テストに取り組む開発者向けに、分野別資料と実践上の注意点をまとめています。
主な機能
- 01MQL4・MQL5リファレンスの案内
- 02EAアーキテクチャと設計パターンの選択
- 03注文、ポジション、リスク管理の解説
- 04インジケーターとチャートUIの説明
- 05API通信とバックテストの解説
活用シーン
- 01Expert Advisorプロジェクトの設計
- 02取引処理とリスク制御の実装
- 03カスタムインジケーターやチャートパネルの開発
- 04Strategy Testerの設定と検証
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ thomaspraun/ mql-developer --skill mql-developerインストール後、Claude Code で/mql-developerを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEREADME.mdreferences/trading-operations.mdexternal-communication.mdmql5-reference.mdarchitecture-patterns.mdmql4-reference.mdbacktesting.mdindicators-and-ui.mdsecurity-licensing.md詳細
MQL 開発者
MetaTrader プラットフォームでプロフェッショナルな MQL4/MQL5 開発を行うためのガイドです。
クイックリファレンスのナビゲーション
タスクに応じて適切なリファレンスファイルを読み込んでください。
| タスク | リファレンスファイル |
|---|---|
| MQL4 の構文、型、関数、定義済み変数 | references/mql4-reference.md |
| MQL5 の構文、OOP、CTrade、標準ライブラリ | references/mql5-reference.md |
| プロジェクト構成、EA アーキテクチャ、設計パターン | references/architecture-patterns.md |
| 注文、ポジション、リスク管理、トレーリングストップ | references/trading-operations.md |
| カスタムインジケーター、UI パネル、スクリプト、チャートオブジェクト | references/indicators-and-ui.md |
| WebRequest、JSON、REST API、Node.js 連携 | references/external-communication.md |
| ストラテジーテスター、最適化、ウォークフォワード、モンテカルロ | references/backtesting.md |
| コード保護、ライセンス、逆コンパイル対策 | references/security-licensing.md |
大きなリファレンスでの検索パターン
大きなファイルから目的の情報を検索するには、次のセクション見出しを grep してください。
mql4-reference.md: Data Types、Variables、Operators、Arrays、Strings、Program Types、Predefined Variables、Technical Indicator Functions、Order Management、Market Information、Account Functions、Preprocessor、Error Handling、Common Gotchas、File Operations、WebRequest、Utility Functions、Global Terminal Variables
architecture-patterns.md: Project Structure、Simple Single-File、Modular EA、State Machine、Multi-Timeframe、Multi-Symbol、Singleton、Strategy Pattern、Observer、Include File Design、Complete Templates
mql5-reference.md: OOP Features、Trade Functions、CTrade、Native Trade、Event Handlers、Standard Library、Key Enumerations、SQLite、Sockets、Resources、OpenCL
MQL4 と MQL5 の主な違い
| 項目 | MQL4 | MQL5 |
|---|---|---|
| パラダイム | 手続き型(C に類似) | 完全な OOP(C++ に類似) |
| 取引モデル | 注文のみ(OrderSend) | 注文+約定+ポジション(CTrade) |
| 口座モデル | ヘッジのみ | ネッティング+ヘッジ |
| インジケーターバッファー | 最大 8 | 最大 512 |
| 描画スタイル | 基本 6 種類 | 18 種類(基本+カラー) |
| 標準ライブラリ | 最小限 | 包括的 |
| データベース | なし | SQLite を組み込み |
| ソケット | なし | TCP+TLS |
| OpenCL | なし | あり |
基本的なワークフロー
エキスパートアドバイザーの作成
- ストラテジーのシグナルロジック(エントリー/エグジット条件)を定義します
- アーキテクチャを選択します。シンプル(単一ファイル)またはモジュール型(Signal + Trade + Risk + Filter)です
- 適切なエラー処理と再試行を含めて、注文/ポジション管理を実装します
- リスク管理(ポジションサイズ、ドローダウン制御)を追加します
- フィルター(時間、スプレッド、ボラティリティ)を追加します
- ストラテジーテスターでバックテストを行います(まず Open Prices、その後 Every Tick)
- ウォークフォワード検証とモンテカルロテストを行います
カスタムインジケーターの作成
- ウィンドウを選択します。
indicator_chart_windowまたはindicator_separate_windowです - バッファーとプロットを定義します(MQL5 では
indicator_buffers、indicator_plots) prev_calculatedを使った効率的な再計算を行うOnCalculate()を実装します- 描画スタイル、色、ラベルを設定します
- 必要に応じてマルチタイムフレームデータを処理します
外部 API との通信
- Tools > Options > Expert Advisors で URL をホワイトリストに登録します
- REST 呼び出し(POST/GET)には
WebRequest()を使います - JSON を手動で構築します(MQL にネイティブ JSON 機能はありません)
- 文字列関数でレスポンスを解析します
- ポーリングパターンには
EventSetTimer()を使います - ネットワークエラーには再試行で対処します
重大な注意点
- 浮動小数点数の比較:浮動小数点数に
==を使用しないでください。NormalizeDouble()または許容誤差を使用してください - 4桁ブローカーと5桁ブローカー:1ピップは、4桁では1ポイント、5桁では10ポイントです。必ず検出してください
- 注文を決済する際の逆順ループ:注文を決済する場合は、
OrdersTotal()-1から0まで反復してください(MQL4) - ECNブローカー:2段階の処理が必要な場合があります。
OrderSend()を SL/TP なしで呼び出してから、OrderModify()を呼び出してください - 注文のフィリング方式(MQL5):必ず
SYMBOL_FILLING_MODEで検出し、FOK をハードコードしないでください - WebRequest の制限:同期処理でブロックされます。インジケーターやストラテジーテスターでは利用できません
- 取引コンテキストがビジー状態(MQL4):端末ごとに、同時に取引できる EA は1つだけです
- 配列のインデックス:シリーズ配列では、インデックス 0 が最新のバーです。
ArraySetAsSeries()を使用して制御してください
プロジェクト構成(推奨)
MQL5/ (or MQL4/)
├── Experts/
│ └── MyEA/
│ └── MyEA.mq5 // EA entry point
├── Indicators/
│ └── MyIndicator.mq5
├── Scripts/
│ └── MyScript.mq5
├── Include/
│ ├── Core/
│ │ ├── CTradeManager.mqh // Order execution + retries
│ │ ├── CRiskManager.mqh // Position sizing + drawdown
│ │ └── CSignalBase.mqh // Signal interface
│ ├── Communication/
│ │ ├── CHttpClient.mqh // WebRequest wrapper
│ │ └── CJsonHelper.mqh // JSON build/parse
│ ├── UI/
│ │ └── CPanel.mqh // Trading panel
│ └── Utils/
│ ├── CTimeFilter.mqh // Session/time filters
│ └── CSymbolHelper.mqh // Multi-market helpers
└── Libraries/
よりシンプルなプロジェクトであれば、関数をインラインで記述した単一ファイルの EA でも問題ありません。
コードスタイルの規約
- メンバー変数には
m_を付けます(例:m_magicNumber) - グローバル変数には
g_を付けます(例:g_isInitialized) - ユーザーパラメーターには
externではなくinputを使用します - MQL4 では必ず
#property strictを使用します - サーバーへ送信する前に、すべての価格を正規化します:
NormalizeDouble(price, Digits) OrderSelect()、OrderSend()、取引操作の戻り値を必ず確認します- マジックナンバーにはコメントを付け、分かりにくい取引ロジックを説明します
公式ドキュメント
- MQL4:https://docs.mql4.com/
- MQL5:https://www.mql5.com/en/docs
- MQL5 の記事:https://www.mql5.com/en/articles
- MQL5 のコードベース:https://www.mql5.com/en/code