MQL5プログラミング記事

icon

取引戦略をプログラミングするためのMQL5言語を、ほとんどがコミュニティメンバーによって書かれた数多くの公開記事で学びます。記事は統合、テスター、取引戦略等のカテゴリに分けられていて、プログラミングに関連する疑問への解答を素早く見つけることができます。

新着記事をフォローして、フォーラムでディスカッションしてください。

新しい記事を追加
最新 | ベスト
preview
MQL5取引ツール(第19回):チャート描画用のインタラクティブなツールパレットの構築

MQL5取引ツール(第19回):チャート描画用のインタラクティブなツールパレットの構築

ドラッグによる移動やリサイズが可能なパネル、テーマ切り替え機能を備えた、チャート描画用のインタラクティブなツールパレットをMQL5で構築します。また、十字カーソル、トレンドライン、ライン、矩形、フィボナッチ、テキスト、矢印などのツール用ボタンを追加し、マウスイベントを処理してツールの有効化や操作ガイドを実現します。このシステムは、カスタマイズ可能なUIを通じてリアルタイムなチャート操作をサポートし、トレード分析をより効率的におこなえるようにします。
preview
共和分株式による統計的裁定取引(最終回):特化型データベースを用いたデータ分析

共和分株式による統計的裁定取引(最終回):特化型データベースを用いたデータ分析

統計的裁定取引のデータ処理において、SQLite (OLTP)とDuckDB (OLAP)を組み合わせて活用する方法を紹介します。DuckDBのカラム指向エンジン、ASOF JOIN、配列関数を利用することで、気配値と約定の時点対応付けやRWEC (Rolling Windows Eigenvector Comparison)などの中核処理を高速化できます。実際の測定では、入力データが大きくなるにつれて、SQLiteと比較して2倍から23倍の高速化が確認されました。これにより、クエリはよりシンプルになり、分析処理も高速化される一方で、実際の取引執行は引き続きSQLiteに任せることができます。
preview
グラフ理論:取引における深さ優先探索(DFS)の応用

グラフ理論:取引における深さ優先探索(DFS)の応用

深さ優先探索(DFS)を市場構造に適用し、スイングハイとスイングローをグラフのノードとしてモデル化します。そして、条件が有効である限り、1つの構造的な経路を深く追跡します。重要なスイングがブレイクされた場合、アルゴリズムはバックトラックし、別の分岐を探索します。読者は、構造的バイアスを形式化し、現在の経路が流動性プールや需給ゾーンなどのターゲットと整合しているかを検証するための実践的なフレームワークを学ぶことができます。
preview
MetaTrader 5機械学習の設計図(第8回):パージ済み交差検証と試行枝刈りを用いたベイズ最適化によるハイパーパラメータ最適化

MetaTrader 5機械学習の設計図(第8回):パージ済み交差検証と試行枝刈りを用いたベイズ最適化によるハイパーパラメータ最適化

GridSearchCVとRandomizedSearchCVは、金融機械学習(金融ML)における本質的な制約を共有しています。それは、各試行が独立しているため、計算資源を増やしても探索そのものが賢くならないという点です。本記事では、TPE (Tree-structured Parzen Estimator)を用いるOptunaを、PurgedKFold交差検証、HyperbandPrunerによる早期終了、および学習用重みと評価用重みを分離する二重重み規約と統合する方法を紹介します。その結果として、フォールド単位で枝刈りをおこなう目的関数、モデルのハイパーパラメータと重み付けスキームを同時に最適化する提案層、金融タスク向けに調整されたプルーナー、SQLiteをバックエンドとする、再開可能なオーケストレーター、Optunaの結果をscikit-learnのcv_results_形式へ変換するコンバータの5つの要素から構成されるシステムが得られます。さらに本記事では、Timothy Mastersが示した境界についても説明します。すなわち、「統計的な目的関数では誘導的な探索が有益である一方、金融目的関数では逆に有害となる」という考え方です。
preview
MQL5カスタムシンボル:3Dバー用シンボルの作成

MQL5カスタムシンボル:3Dバー用シンボルの作成

革新的なインジケータ「3DBarCustomSymbol.mq5」の作成について詳しく解説しています。このインジケータは、MetaTrader 5上でカスタムシンボルを生成し、価格・時間・出来高・ボラティリティを単一の三次元表現に統合します。さらに、その数学的基礎、システムアーキテクチャ、実装における実践的な側面、および取引戦略への応用について考察します。
preview
MQL5入門(第41回)MQL5におけるファイル処理入門(III)

MQL5入門(第41回)MQL5におけるファイル処理入門(III)

MQL5でCSVファイルを読み込み、取引データを動的配列に整理する方法を学びます。ファイル内の要素数を数える方法、すべてのデータを1つの配列に格納する方法、さらに各列を専用の配列へ分割する方法をステップごとに解説します。これにより、高度な分析やトレードパフォーマンスの可視化へ進むための基礎を構築できます。
preview
MQL5とデータ処理パッケージの統合(第8回):グラフニューラルネットワークによる流動性ゾーンの検出

MQL5とデータ処理パッケージの統合(第8回):グラフニューラルネットワークによる流動性ゾーンの検出

市場構造をMQL5上でグラフとして表現し、スイングハイとスイングローを特徴量を持つノードとして扱い、それらをエッジで接続する方法を紹介します。また、潜在的な流動性ゾーンをスコアリングするためのGNN(Graph Neural Network:グラフニューラルネットワーク)の学習、モデルのONNX形式へのエクスポート、さらにエキスパートアドバイザー(EA)内でリアルタイム推論を実行する方法についても解説します。読者は、データパイプラインの構築、モデルの統合、チャート上への流動性ゾーンの可視化、そしてそのシグナルをルールベースの売買執行へ活用する方法を学びます。
preview
取引規律をコードに組み込む(第3回):MQL5でホワイトリストを用いて銘柄単位の取引境界を強制適用する

取引規律をコードに組み込む(第3回):MQL5でホワイトリストを用いて銘柄単位の取引境界を強制適用する

取引対象を承認済み銘柄のみに制限するMQL5フレームワークについて解説します。このソリューションは、共有ライブラリ、設定用ダッシュボード、そして取引制限を強制適用するエキスパートアドバイザー(EA)で構成されています。EAは各取引の対象銘柄がホワイトリストに含まれているかを検証し、許可されていない銘柄で発生した取引試行をブロックするとともに、その履歴をログへ記録します。本記事では、完全に動作するコード例、構造設計上の判断理由、さらに銘柄フィルタリングの信頼性、マーケットエクスポージャーの制御、ルール強制適用状況の透明性を確認するための検証テストについて説明します。
preview
MQL5における切断ニュートン共役勾配(TNC)アルゴリズムの実装

MQL5における切断ニュートン共役勾配(TNC)アルゴリズムの実装

MQL5でボックス制約付き切断ニュートン共役勾配法(TNC, Truncated Newton Conjugate-Gradient)最適化アルゴリズムを実装し、その中核となる構成要素であるスケーリング、境界への射影、ラインサーチ、および有限差分によるヘッセ行列と任意のベクトルとの積の計算について詳しく説明します。また、解析的微分と数値微分の両方に対応した目的関数ラッパーを提供し、ローゼンブロックベンチマークを用いてソルバーを検証します。さらに、ロジスティック回帰の実装例を通じて、TNCをL-BFGSの代替ソルバーとして利用する方法を紹介します。
preview
バックテスト過剰適合を防ぐ統合検証パイプライン ― V-in-V・CPCV・CSCVによる堅牢な戦略検証

バックテスト過剰適合を防ぐ統合検証パイプライン ― V-in-V・CPCV・CSCVによる堅牢な戦略検証

金融時系列データに対して標準的なウォークフォワード法やk分割交差検証が、なぜ実際以上に良好な結果を示してしまうのかを解説します。そのうえで、この問題を解決するための実践的な手法を紹介します。V-in-V (Validation-within-Validation)は、データを厳密に分割し、アンカー型ウォークフォワードによる検証を実施します。CPCV (Combinatorially Purged Cross-Validation)は、情報漏洩を防ぐために-パージとエンバーゴを適用し、複数の検証パスの結果を統合して評価します。さらにCSCV (Combinatorially Symmetric Cross-Validation)は、バックテスト過剰適合確率(PBO, Probability of Backtest Overfitting)を定量的に測定します。これらを組み合わせることで、異なる市場レジームに対する戦略の頑健性と、戦略選択の信頼性を整合的な評価フレームワークで評価できるようになります。
preview
MQL5取引ツール(第24回):3Dカーブ、パンモード、ViewCubeナビゲーションによる奥行き感の向上

MQL5取引ツール(第24回):3Dカーブ、パンモード、ViewCubeナビゲーションによる奥行き感の向上

MQL5の3D二項分布グラフ表示ツールを拡張し、確率質量関数(PMF)の奥行き感を向上させるセグメント化された3Dカーブを追加するとともに、注視点を移動できるパンモードと、素早く視点を切り替えられるインタラクティブなViewCubeを実装します。さらに、ViewCube内の面・辺・頂点に対応するクリック可能なサブゾーンを追加し、標準ビューへのカメラ遷移をアニメーションでおこなえるようにします。これらの機能を、2D/3D表示の切り替え、リアルタイム更新、各種カスタマイズ設定と組み合わせることで、トレードにおける確率分布分析を、より直感的で没入感のある分析環境を実現します。
preview
MetaTrader 5における低頻度定量戦略(第1回):OLAP対応データストアの構築

MetaTrader 5における低頻度定量戦略(第1回):OLAP対応データストアの構築

Parquetストレージ、Hive形式のパーティション、そしてDuckDBを基盤とした、定量分析のための実用的なデータパイプラインについて説明します。選択したSQLiteテーブルをParquetへ移行する方法、市場データをデータソース、銘柄、時間足、日付によって構造化する方法、そしてSQLウィンドウ関数を使用してそれをクエリする方法について詳しく説明します。ゴールデンクロスの例では、銘柄横断的なフォワードリターン評価を示します。付属するPythonスクリプトでは、データのダウンロード、変換、実行を処理します。
preview
MQL5取引ツール(第21回):回帰グラフにサイバーパンクテーマを追加する

MQL5取引ツール(第21回):回帰グラフにサイバーパンクテーマを追加する

MQL5の回帰グラフ描画ツールを拡張し、ネオングロー、アニメーション、ホログラフィックエフェクトを備えたサイバーパンクテーマを追加することで、より没入感のある可視化を実現します。テーマの切り替え機能、星が瞬く動的な背景、発光する枠線、ネオンカラーのポイントやラインを実装するとともに、従来の標準テーマとの互換性も維持します。このデュアルテーマシステムにより、リアルタイム更新やインタラクティブな操作に対応しながら、未来的なデザインでペア分析をより魅力的に行えるようになります。
preview
取引規律をコードに組み込む(第2回):MQL5で口座全体の全取引に対応する日次取引制限エンフォーサーを構築する

取引規律をコードに組み込む(第2回):MQL5で口座全体の全取引に対応する日次取引制限エンフォーサーを構築する

取引ルールを遵守できるようにするため、1日の取引制限を強制するシステムを開発しました。このシステムは、口座全体で実行されたすべての取引を監視し、設定された制限に到達すると自動的に介入して、それ以降の取引活動を防止します。制御機能をプラットフォームに直接組み込むことで、市場からのプレッシャーが高まった状況でも、規律を維持できるようにします。
preview
取引におけるニューラルネットワーク:適応型モード分解を用いた時系列予測(最終回)

取引におけるニューラルネットワーク:適応型モード分解を用いた時系列予測(最終回)

アルゴリズム取引におけるACEFormerフレームワークの適応およびMQL5を用いた実用的な実装について説明します。特に、主要なアーキテクチャ設計の判断、学習プロセスの特徴、そして実データを用いたモデル検証結果について紹介します。
preview
MQL5経済指標カレンダーを用いたニュースフィルタリング(第2回):ニュースリリース中に管理ポジションを停止する

MQL5経済指標カレンダーを用いたニュースフィルタリング(第2回):ニュースリリース中に管理ポジションを停止する

第2回では、ニュースフィルタを拡張し、ニュースイベント中に既存のポジションを保護します。取引を決済する代わりに、ストップロス(SL)およびテイクプロフィット(TP)を一時的に解除し、それらの値をメモリ上へ安全に保存します。ニュースウィンドウが終了すると、ストップは決定論的に復元されます。この際、価格がすでに元の水準を超えている場合には、その値を調整するとともに、ブローカーの最小ストップ距離ルールを遵守します。その結果、エントリーロジックへ干渉せず取引構造の整合性を維持し、ボラティリティの高い状況でもEAが取引を制御できる仕組みを実現します。
preview
初級から中級まで:オブジェクトイベント(III)

初級から中級まで:オブジェクトイベント(III)

本記事では、次回の記事で扱う内容の土台を準備します。また、OBJ_LABELオブジェクトを、編集と移動の両方ができる完全にインタラクティブなものにする方法についても見ていきます。つまり、OBJ_LABELオブジェクトのテキストと位置の両方を、オブジェクトのプロパティダイアログを開くことなく変更できるようにします。
preview
取引におけるニューラルネットワーク:周波数領域での異常検知(最終回)

取引におけるニューラルネットワーク:周波数領域での異常検知(最終回)

フーリエ変換と周波数パッチングの仕組みを組み合わせ、市場の異常を高精度に検出するCATCHフレームワークの実装を続けます。提案されたアプローチに対する独自の実装を完成させるとともに、新しいモデルを実際の市場履歴データで検証します。
preview
取引におけるニューラルネットワーク:多変量時系列予測のためのLSTMの最適化(DA-CG-LSTM)

取引におけるニューラルネットワーク:多変量時系列予測のためのLSTMの最適化(DA-CG-LSTM)

時系列分析および予測に新たな手法を提供するDA-CG-LSTMアルゴリズムを紹介します。革新的なアテンション機構とモデルの柔軟性を活用することで、予測精度をどのように向上できるのかを解説します。
preview
因果推論とアルゴリズム取引における回帰モデルの活用

因果推論とアルゴリズム取引における回帰モデルの活用

アルゴリズム取引における回帰モデルの活用可能性について考察します。回帰モデルは、二値分類とは異なり、予測される価格変動を定量的に表現できるため、より柔軟な取引戦略を構築できます。
preview
MQL5におけるタイムギャップ分析(第2回):時間経過に伴う流動性分布のヒートマップ作成

MQL5におけるタイムギャップ分析(第2回):時間経過に伴う流動性分布のヒートマップ作成

MetaTrader 5で、時間に対する価格分布を視覚化するヒートマップインジケータを作成する方法についての詳細なガイドです。時間密度分析の数学的な基礎に基づき、価格帯ごとの滞在時間をヒートマップとして可視化するMetaTrader 5向けインジケータの作成方法を詳しく解説します。このインジケータでは、各価格レベルの滞在時間を赤(滞在時間が最小)から青(滞在時間が最大)までの色で表現します。
preview
市場シミュレーション:MQL5におけるSQL入門(IV)

市場シミュレーション:MQL5におけるSQL入門(IV)

多くの人はSQLを過小評価しがちで、あるいはSQLが実際にどのように動作するのかを十分に理解していないため、まったく使わないことさえあります。SQLデータベースに対してクエリを実行する場合、常に汎用的な答えを求めているわけではありません。場合によっては、非常に具体的で実用的な答えが必要になります。もしデータベースが適切な構造とデータモデルによって設計されていれば、ほぼあらゆる種類の情報を統合することが可能です。
preview
取引におけるニューラルネットワーク:適応型エージェント行動のための階層的スキル発見(最終章)

取引におけるニューラルネットワーク:適応型エージェント行動のための階層的スキル発見(最終章)

アルゴリズム取引への適用を目的としたHiSSDフレームワークの実装について解説します。スキル階層と適応的なアーキテクチャを活用して、安定的に機能する取引戦略を構築する方法を説明します。
preview
時間帯別・曜日別・月の日付別の季節性インジケータ

時間帯別・曜日別・月の日付別の季節性インジケータ

金融市場における繰り返し発生する価格パターンを分析するためのツールの開発方法について説明します。分析対象となるのは、月の日付(1日~31日)、曜日(月曜日~日曜日)、または1日の時間帯(0時~23時)です。このインジケータは過去のデータを分析し、それぞれの期間における平均リターンを計算します。そして、その結果をヒストグラムと予測表示によって可視化します。また、季節性タイプ、分析するバー数、パーセント表示または絶対値表示、チャートカラーなど、ユーザーが変更可能なパラメータも備えています。
preview
初級から中級まで:オブジェクトイベント(I)

初級から中級まで:オブジェクトイベント(I)

チャート上のオブジェクトに何らかの変更が発生した際に、MetaTrader 5が生成する可能性のある6種類のイベントのうち、3つについて説明します。これらのイベントは、ユーザー操作という観点から非常に有用です。なぜなら、これらのイベントを理解していなければ、特定の目的でオブジェクトを管理しようとする際に、チャートの特定の構成を維持するために、より多くの作業を自分でおこなわなければならなくなるからです。
preview
取引におけるニューラルネットワーク:Actor-Director-Critic

取引におけるニューラルネットワーク:Actor-Director-Critic

階層型学習とマルチコンポーネントアーキテクチャを組み合わせたActor-Director-Critic (ADC)フレームワークについて詳しく解説します。DirectorがActorの行動を分類する仕組みが、トレードにおける意思決定の最適化にどのように寄与し、金融市場という不確実性の高い環境においてモデルの頑健性をどのように向上させるのかを詳しく解説します。
preview
ニューラルネットワークの実践:習うより慣れよ

ニューラルネットワークの実践:習うより慣れよ

ニューロンをわずかに特化させる単純なコード変更によって、学習段階を大幅に高速化できる方法について見ていきます。結局のところ、後ほど詳しく説明するように、ニューロンやニューラルネットワークが一度学習を完了すると、その後に実行する処理ははるかに高速になります。また、実際には存在しているにもかかわらず、ほとんど語られることのない問題についても取り上げます。
preview
取引におけるニューラルネットワーク:適応型モード分解を用いた時系列予測(ACEFormer)

取引におけるニューラルネットワーク:適応型モード分解を用いた時系列予測(ACEFormer)

ACEFormerアーキテクチャについて紹介します。これは、Probabilistic Attention(確率的注意)機構の有効性と、適応型時系列分解を組み合わせた最新のソリューションです。本記事は、金融市場において計算性能と予測精度のバランスを求める方にとって有用な内容となっています。
preview
取引におけるニューラルネットワーク:特定データへの依存なしに時系列を汎化する(Mamba4Cast)

取引におけるニューラルネットワーク:特定データへの依存なしに時系列を汎化する(Mamba4Cast)

Mamba4Castフレームワークを紹介するとともに、その主要コンポーネントの1つであるタイムスタンプに基づく位置エンコーディングについて詳しく解説します。データのカレンダー構造を考慮して時間埋め込みがどのように生成されるのかを示します。
preview
市場取引アルゴリズム(EMA)

市場取引アルゴリズム(EMA)

本稿では、株式市場のトレーダーの行動に着想を得た市場取引アルゴリズム(EMA, Exchange Market Algorithm)について詳しく分析します。このアルゴリズムは株式取引をシミュレーションするもので、市場参加者はそれぞれ異なる成功度を持ち、利益を最大化するためにさまざまな戦略を使用します。
preview
初級から中級まで:オブジェクト(III)

初級から中級まで:オブジェクト(III)

本日の記事では、特にMQL5でプログラミングを学び始めたばかりの方に向けて、非常に魅力的で興味深いインタラクションシステムの実装方法を紹介します。ここで取り上げる内容自体に、根本的に新しいものがあるわけではありません。しかし、本記事では私なりのアプローチで解説を進めるため、内容をより理解しやすく感じていただけると思います。実践的で興味を持って取り組める題材を通して、構造化アプローチを用いたプログラム開発の流れを実際に確認していきます。
preview
初級から中級まで:マウスイベントの処理

初級から中級まで:マウスイベントの処理

本記事は、コードを眺めて学習するだけでは、そこでおこなわれている処理を十分に理解することが難しい内容に分類されます。実際には、実行可能なアプリケーションを作成し、それを任意のチャート上で動作させる必要があります。そうすることで、キーボードとマウスを組み合わせて特定の要素を作成する方法など、コードを読むだけでは非常に理解しにくい細かな点まで把握できるようになります。
preview
取引におけるニューラルネットワーク:Actor-Director-Critic(最終回)

取引におけるニューラルネットワーク:Actor-Director-Critic(最終回)

Actor-Director-Criticフレームワークは、古典的なエージェント学習アーキテクチャを発展させたものです。本記事では、その実装と金融市場環境への適応に関する実践的な経験を紹介します。
preview
取引におけるニューラルネットワーク:適応的なエージェント行動のための階層的スキル発見(HiSSD)

取引におけるニューラルネットワーク:適応的なエージェント行動のための階層的スキル発見(HiSSD)

HiSSDフレームワークについて解説します。HiSSDは、階層的学習とマルチエージェントアプローチを組み合わせることで、適応性の高いシステムを構築するためのフレームワークです。この革新的な手法が金融市場に潜む隠れたパターンをどのように発見し、分散環境における取引戦略の最適化にどのように貢献するのかを詳しく見ていきます。
preview
取引におけるニューラルネットワーク:多変量時系列予測のためのLSTMの最適化(最終回)

取引におけるニューラルネットワーク:多変量時系列予測のためのLSTMの最適化(最終回)

時系列解析および予測のための革新的な手法を提供するDA-CG-LSTMフレームワークの実装を引き続き進めます。CG-LSTMとデュアルアテンション(dual attention)機構を組み合わせることで、データに含まれる長期的および短期的な依存関係をより高い精度で検出できるため、金融市場の分析に特に有効です。
preview
初級から中級まで:オブジェクト(IV)

初級から中級まで:オブジェクト(IV)

これは、これまでの記事の中でも、おそらくいちばん楽しい内容でしょう。なぜなら、ここではMetaTrader 5にすでに存在しているオブジェクトを変更し、本来プラットフォーム上には存在しない別のオブジェクトを作成するからです。もちろん、これから見ていく内容は少し無謀に思えるかもしれません。しかし、実際に動作し、非常に興味深い用途に役立ちます。
preview
多通貨エキスパートアドバイザーの開発(第28回):決済マネージャの追加

多通貨エキスパートアドバイザーの開発(第28回):決済マネージャの追加

複数の戦略を並列で実行する場合、定期的にすべての未決済ポジションを決済し、戦略を最初から再開したい場合があります。しかし、現行のコードでは、この動作は手動でしか実現できません。そこで、この処理を自動化してみましょう。
preview
Extremal Optimization (EO)アルゴリズム

Extremal Optimization (EO)アルゴリズム

極値最適化(EO, Extremal Optimization)アルゴリズムについて説明します。EOは、Bak-Sneppenの自己組織化臨界モデルに着想を得た最適化手法であり、システム内の最も悪い要素を選んで置き換えることで進化を促すという考え方に基づいています。EOの改良版である集団型アルゴリズムでは、理論的な原則から離れ、実用的な効率性を重視することで、強力な計算ツールが開発されています。
preview
初級から中級まで:オブジェクトイベント(IV)

初級から中級まで:オブジェクトイベント(IV)

前回の記事で始めた内容を完成させます。つまり、チャート上でオブジェクトを直接操作してサイズを変更できる、完全にインタラクティブな方法を実現します。このようなものを作成するには、MQL5についてもっと深い知識が必要だと、多くの人は考えるかもしれません。しかし実際には、基本的な知識とシンプルな概念を使うことで、チャート上のオブジェクトを直接操作する方法を実装できます。そして、その結果は非常に興味深く、かなり魅力的なものになります。
preview
市場シミュレーション(第24回):ポジション表示(II)

市場シミュレーション(第24回):ポジション表示(II)

取引サーバー上の未決済ポジションを、インジケータを使って、できるだけシンプルかつ実用的な方法で追跡する方法を紹介します。これは、必ずしもすべてをエキスパートアドバイザー(EA)に移す必要はないことを示すため、段階を追って説明していきます。皆さんの多くは、何らかの理由で、このような処理をEAでおこなうことに慣れているかもしれません。しかし、実際には、そのやり方にはそれほど十分な根拠があるわけではありません。なぜなら、この実装を発展させていくにつれて、この目的のためにさまざまな種類のインジケータを作成したり、実装したりできることが明らかになるからです。