MQL4とMQL5のプログラム記事

icon

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

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

新しい記事を追加
最新 | ベスト
preview
知っておくべきMQL5ウィザードのテクニック(第62回):強化学習TRPOでADXとCCIのパターンを活用する

知っておくべきMQL5ウィザードのテクニック(第62回):強化学習TRPOでADXとCCIのパターンを活用する

ADXオシレーターとCCIオシレーターはそれぞれトレンドフォローインジケーターおよびモメンタムインジケーターであり、エキスパートアドバイザー(EA)を開発する際に組み合わせることができます。前回の記事に続き、今回は開発済みモデルの運用中の学習や更新を、強化学習を用いてどのように実現できるかを検討します。この記事で使用するアルゴリズムは、本連載ではまだ扱っていない「TRPO(Trust Region Policy Optimization、信頼領域方策最適化)」として知られる手法です。また、MQL5ウィザードによるEAの組み立ては、モデルのテストをより迅速におこなえるだけでなく、異なるシグナルタイプで配布し検証できる形でセットアップできる点も利点です。
preview
リプレイシステムの開発(第29回):エキスパートアドバイザープロジェクト - C_Mouseクラス(III)

リプレイシステムの開発(第29回):エキスパートアドバイザープロジェクト - C_Mouseクラス(III)

C_Mouseクラスを改良した後は、分析のためのまったく新しいフレームワークを作るためのクラスを作ることに集中しましょう。この新しいクラスを作るのに、継承やポリモーフィズムは使用しません。その代わりに、価格線に新しいオブジェクトを追加します。それがこの記事でやろうとしていることです。次回は、分析結果を変更する方法について見るつもりです。これらはすべて、C_Mouseクラスのコードを変更することなくおこなわれます。実際には、継承やポリモーフィズムを使用すれば、もっと簡単に実現できるでしょう。しかし、同じ結果を得る方法は他にもあります。
preview
ニューラルネットワークの実践:割線

ニューラルネットワークの実践:割線

理論的な部分ですでに説明したように、ニューラルネットワークを扱う場合、線形回帰と導関数を使用する必要があります。なぜでしょうか。その理由は、線形回帰は現存する最も単純な公式の1つだからです。本質的に、線形回帰は単なるアフィン関数です。しかし、ニューラルネットワークについて語るとき、私たちは直接線形回帰の効果には興味がありません。この直線を生み出す方程式に興味があるのです。作られた線にはそれほど興味がありません。私たちが理解すべき主要な方程式をご存じですか。ご存じでなければ、この記事を読んで理解することをお勧めします。
preview
彗尾アルゴリズム(CTA)

彗尾アルゴリズム(CTA)

この記事では、ユニークな宇宙物体である彗星と、太陽に接近する際に形成されるその印象的な尾にインスパイアされた「彗尾最適化アルゴリズム(CTA: Comet Tail Algorithm)」について考察します。このアルゴリズムは、彗星とその尾の運動の概念に基づき、最適化問題の最適解を見つけることを目的としています。
preview
MQL5で古典的な戦略を再構築する(後編):FTSE100と英国債

MQL5で古典的な戦略を再構築する(後編):FTSE100と英国債

この連載では、人気のある取引戦略を探り、AIを使ってその改善を試みます。今日の記事では、株式市場と債券市場の関係に基づく古典的な取引戦略を再考します。
preview
MQL5で取引管理者パネルを作成する(第9回):コード編成(I)

MQL5で取引管理者パネルを作成する(第9回):コード編成(I)

このディスカッションでは、大規模なコードベースを扱う際に直面する課題について掘り下げます。MQL5におけるコード構成のベストプラクティスを紹介し、取引管理パネルのソースコードの可読性と拡張性を向上させるための実践的なアプローチを実装します。また、他の開発者がアルゴリズム開発で活用できる再利用可能なコードコンポーネントの開発も目指しています。ぜひ最後までお読みいただき、ご意見をお寄せください。
preview
リプレイシステムの開発 - 市場シミュレーション(第22回):FOREX (III)

リプレイシステムの開発 - 市場シミュレーション(第22回):FOREX (III)

このトピックに関する記事は今回で3回目になりますが、株式市場とFOREX市場の違いをまだ理解していない方のために説明しなければなりません。大きな違いは、FOREXでは、取引の過程で実際に発生したいくつかのポイントに関する情報がないというか、与えられないということです。
preview
MQL5でのカスタム市場レジーム検出システムの構築(第2回):エキスパートアドバイザー

MQL5でのカスタム市場レジーム検出システムの構築(第2回):エキスパートアドバイザー

この記事では、第1回で紹介したレジーム検出器を用いて、適応型のエキスパートアドバイザー(EA)、MarketRegimeEAを構築する方法を詳しく解説しています。このEAは、トレンド相場、レンジ相場、またはボラティリティの高い相場に応じて、取引戦略やリスクパラメータを自動的に切り替えます。実用的な最適化、移行時の処理、多時間枠インジケーターも含まれています。
preview
ニューラルネットワークが簡単に(第51回):Behavior-Guided Actor-Critic (BAC)

ニューラルネットワークが簡単に(第51回):Behavior-Guided Actor-Critic (BAC)

最後の2つの記事では、エントロピー正則化を報酬関数に組み込んだSoft Actor-Criticアルゴリズムについて検討しました。このアプローチは環境探索とモデル活用のバランスをとりますが、適用できるのは確率モデルのみです。今回の記事では、確率モデルと確定モデルの両方に適用できる代替アプローチを提案します。
preview
亀甲進化アルゴリズム(TSEA)

亀甲進化アルゴリズム(TSEA)

これは、亀の甲羅の進化にインスパイアされたユニークな最適化アルゴリズムです。TSEAアルゴリズムは、問題に対する最適解を表す構造化された皮膚領域が徐々に形成される様子をエミュレートします。最良の解は「硬く」なり、外側に近い位置に配置され、成功しなかった解は「柔らかい」ままで内側に留まります。このアルゴリズムは、質と距離に基づく解のクラスタリングを利用し、成功率の低い選択肢を保持しながら、柔軟性と適応性を提供します。
preview
ニューラルネットワークが簡単に(第93回):周波数領域と時間領域における適応予測(最終回)

ニューラルネットワークが簡単に(第93回):周波数領域と時間領域における適応予測(最終回)

本稿では、時系列予測において2つのブロック(周波数と時間)の結果を適応的に組み合わせるATFNetモデルのアプローチの実装を継続します。
preview
MQL5取引ツール(第1回):インタラクティブで視覚的なペンディングオーダー取引アシスタントツールの構築

MQL5取引ツール(第1回):インタラクティブで視覚的なペンディングオーダー取引アシスタントツールの構築

この記事では、FX取引におけるペンディングオーダーの設置を簡素化するために開発した、MQL5によるインタラクティブ取引アシスタントツール(Trade Assistant Tool)について紹介します。まず概念設計を説明し、チャート上でエントリー、ストップロス、テイクプロフィット水準を視覚的に設定できるユーザーフレンドリーなGUIに焦点を当てます。さらに、MQL5での実装およびバックテストのプロセスを詳述し、このツールの信頼性を確認します。そして、後続のパートで発展的な機能を追加するための基盤を整えます。
preview
古典的な戦略を再構築する(第14回):高確率セットアップ

古典的な戦略を再構築する(第14回):高確率セットアップ

高確率セットアップ(high probability setups)は、私たちの取引コミュニティではよく知られていますが、残念ながら明確には定義されていません。この記事では、「高確率セットアップ」とは具体的に何かを、経験的かつアルゴリズム的な方法で定義し、それを特定して活用することを目指します。勾配ブースティング木を用いることで、任意の取引戦略のパフォーマンスを向上させる方法、そしてコンピュータに対して「何をすべきか」をより明確かつ意味のある形で伝える手段を、読者に示します。
preview
MQL5における相関分析の要素:ピアソンのカイ二乗検定による独立性と相関比

MQL5における相関分析の要素:ピアソンのカイ二乗検定による独立性と相関比

この記事では相関分析の古典的なツールについて考察します。簡潔な理論的背景と、ピアソンのカイ二乗独立性検定および相関比の実践的な実装に重点が置かれています。
preview
多通貨エキスパートアドバイザーの開発(第15回):実際の取引のためのEAの準備

多通貨エキスパートアドバイザーの開発(第15回):実際の取引のためのEAの準備

既製のエキスパートアドバイザー(EA)の完成に徐々に近づくにつれ、取引戦略のテスト段階では二次的に思える問題にも注意を払う必要があります。これらの問題は、実際の取引に移行する際に重要となります。
preview
データサイエンスとML(第45回):FacebookのPROPHETモデルを用いた外国為替時系列予測

データサイエンスとML(第45回):FacebookのPROPHETモデルを用いた外国為替時系列予測

Prophetモデルは、Meta(旧Facebook)によって開発された強力な時系列予測ツールであり、トレンドや季節性、イベント効果(holiday effects)を最小限の手作業で捉えることができます。このモデルは、需要予測やビジネスプランニングにおいて広く活用されてきました。本記事では、ProphetモデルをFXのボラティリティ予測に応用する効果について探り、従来のビジネス用途を超えた利用例を紹介します。
preview
DoEasy - コントロール(第22部):SplitContainer - 作成したオブジェクトのプロパティを変更する

DoEasy - コントロール(第22部):SplitContainer - 作成したオブジェクトのプロパティを変更する

今回は、新しく作成したSplitContainerコントロールのプロパティと外観を変更する機能を実装します。
preview
リプレイシステムの開発(第45回):Chart Tradeプロジェクト(IV)

リプレイシステムの開発(第45回):Chart Tradeプロジェクト(IV)

この記事の主な目的は、C_ChartFloatingRADクラスの紹介と説明です。Chart Trade指標は、非常に興味深い方法で機能しています。チャート上のオブジェクトの数はまだ少ないものの、期待通りの機能を実現しています。指標の値は編集可能ですが、その実現方法については疑問が残るかもしれません。この記事を読めば、これらの疑問が解消されるでしょう。
preview
MQL5でSHA-256暗号化アルゴリズムをゼロから実装する

MQL5でSHA-256暗号化アルゴリズムをゼロから実装する

これまで、DLLを使用せずに暗号通貨取引所との統合を構築することは長らく課題とされてきました。しかし、本ソリューションは、市場へ直接接続するための包括的なフレームワークを提供します。
preview
JSONをマスターする:MQL5で独自のJSONリーダーをゼロから作成する

JSONをマスターする:MQL5で独自のJSONリーダーをゼロから作成する

オブジェクトと配列の処理、エラーチェック、シリアル化を備えたMQL5でカスタムJSONパーサーを作成する手順をステップバイステップで説明します。MetaTrader5でJSONを処理するためのこの柔軟なソリューションを使用して、取引ロジックと構造化データを橋渡しするための実用的な洞察を得ることができます。
preview
MQL5での取引戦略の自動化(第25回):最小二乗法と動的シグナル生成を備えたTrendline Trader

MQL5での取引戦略の自動化(第25回):最小二乗法と動的シグナル生成を備えたTrendline Trader

本記事では、最小二乗法を用いてサポートおよびレジスタンスのトレンドラインを検出し、価格がこれらのラインに触れた際に動的な売買シグナルを生成するTrendline Traderプログラムを開発します。また、生成されたシグナルに基づきポジションをオープンする仕組みも構築します。
preview
MQL5での取引戦略の自動化(第26回):複数ポジション取引のためのピンバーナンピンシステムの構築

MQL5での取引戦略の自動化(第26回):複数ポジション取引のためのピンバーナンピンシステムの構築

本記事では、ピンバーを検出して取引を開始し、複数ポジションを管理するためのナンピン(難平、Averaging)戦略を用いたピンバーシステムをMQL5で開発します。さらに、トレーリングストップやブレークイーブン調整で強化し、リアルタイムでポジションと利益を監視できるダッシュボードも組み込みます。
preview
MetaTrader 5用のMQTTクライアントの開発:TDDアプローチ(第6回)

MetaTrader 5用のMQTTクライアントの開発:TDDアプローチ(第6回)

この記事は、MQTT 5.0プロトコル用のネイティブMQL5クライアントの開発ステップを説明する連載の第6部です。今回は、私たちの最初のリファクタリングにおける主な変更点、私たちがどのようにしてパケット構築クラスのための実行可能な設計図にたどり着いたか、どのようにPUBLISHとPUBACKパケットを構築しているか、そしてPUBACK Reason Codeの背後にあるセマンティクスについてコメントします。
preview
注文板に基づいた取引システムの開発(第1回):インジケーター

注文板に基づいた取引システムの開発(第1回):インジケーター

市場の厚みは、特に高頻度取引(HFT)アルゴリズムにおいて、高速な取引を実行するために不可欠な要素です。本連載では、多くの取引可能な銘柄に対してブローカー経由で取得できるこの種の取引イベントについて取り上げます。まずは、チャート上に直接表示されるヒストグラムのカラーパレット、位置、サイズをカスタマイズ可能なインジケーターから始めます。次に、特定の条件下でこのインジケーターをテストするためのBookEventイベントの生成方法について解説します。今後の記事では、価格分布データの保存方法や、そのデータをストラテジーテスターで活用する方法などのトピックも取り上げる予定です。
preview
PythonとMQL5を使用した特徴量エンジニアリング(第2回):価格の角度

PythonとMQL5を使用した特徴量エンジニアリング(第2回):価格の角度

MQL5フォーラムには、価格変動の傾斜を計算する方法についての支援を求める投稿が多数あります。この記事では、取引したい市場における価格の変化によって形成される角度を計算する1つの方法を説明します。さらに、この新しい特徴量の設計に追加の労力と時間を投資する価値があるかどうかについてもお答えします。M1でUSDZARペアを予測する際に、価格の傾斜によってAIモデルの精度が向上するかどうかを調査します。
preview
プライスアクション分析ツールキットの開発(第53回):サポート・レジスタンスゾーン発見のためのPattern Density Heatmap

プライスアクション分析ツールキットの開発(第53回):サポート・レジスタンスゾーン発見のためのPattern Density Heatmap

本記事では、パターン密度ヒートマップ(Pattern Density Heatmap)を紹介します。これは、繰り返し出現するローソク足パターンの検出結果を、統計的に有意なサポート・レジスタンスゾーンに変換するプライスアクションマッピングツールです。単一のシグナルを個別に扱うのではなく、EAは検出結果を固定価格レンジに集約し、密度をスコア化(必要に応じて直近の重み付けも可能)し、高い時間軸のデータと照合してレベルを確認します。その結果として得られるヒートマップは、市場が過去にどの価格レベルで反応したかを可視化し、売買のタイミング、リスク管理、戦略への信頼性向上に活用できます。あらゆる取引スタイルに対応可能です。
preview
MQL5での取引戦略の自動化(第17回):ダイナミックダッシュボードで実践するグリッドマーチンゲールスキャルピング戦略

MQL5での取引戦略の自動化(第17回):ダイナミックダッシュボードで実践するグリッドマーチンゲールスキャルピング戦略

本記事では、グリッドマーチンゲールスキャルピング戦略(Grid-Mart Scalping Strategy)を探究し、MQL5による自動化と、リアルタイム取引インサイトを提供するダイナミックダッシュボードの構築をおこないます。本戦略のグリッド型マーチンゲールロジックとリスク管理機能を詳述し、さらに堅牢なパフォーマンスのためのバックテストおよび実運用展開についても案内します。
preview
取引におけるナッシュ均衡ゲーム理論のHMMフィルタリングの応用

取引におけるナッシュ均衡ゲーム理論のHMMフィルタリングの応用

この記事では、ジョン・ナッシュのゲーム理論、特にナッシュ均衡の取引への応用について詳しく掘り下げます。トレーダーがPythonスクリプトとMetaTrader 5を活用し、ナッシュの原理を利用して市場の非効率性を特定し、活用する方法について解説します。また、この記事では、隠れマルコフモデル(HMM)や統計分析の利用を含むこれらの戦略を実行するためのステップバイステップのガイドを提供し、取引パフォーマンスの向上を目指します。
preview
取引におけるニューラルネットワーク:Superpoint Transformer (SPFormer)

取引におけるニューラルネットワーク:Superpoint Transformer (SPFormer)

本記事では、中間データの集約を不要とするSuperpoint Transformer (SPFormer)に基づく3Dオブジェクトのセグメンテーション手法を紹介します。これによりセグメンテーション処理の高速化とモデル性能の向上が実現されます。
preview
アーチェリーアルゴリズム(AA)

アーチェリーアルゴリズム(AA)

この記事では、アーチェリーに着想を得た最適化アルゴリズムについて詳しく検討し、有望な「矢」の着地点を選定するメカニズムとしてルーレット法の活用に焦点を当てます。この手法により、解の質を評価し、さらなる探索に最も有望な位置を選び出すことが可能になります。
preview
MQL5での取引戦略の自動化(第6回):スマートマネートレーディングのためのオーダーブロック検出の習得

MQL5での取引戦略の自動化(第6回):スマートマネートレーディングのためのオーダーブロック検出の習得

この記事では、純粋なプライスアクション分析を用いてMQL5でオーダーブロック検出を自動化します。オーダーブロックの定義、検出の実装、自動売買への統合をおこない、最後に戦略のバックテストを通じてパフォーマンスを評価します。
preview
リプレイシステムの開発(第34回):発注システム (III)

リプレイシステムの開発(第34回):発注システム (III)

今回は、構築の第一段階を完成させます。この部分はかなり短時間で終わりますが、前回までに説明しなかった詳細をカバーします。多くの方が理解していない点をいくつか説明します。なぜShiftキーやCtrlキーを押さなければならないかご存じでしょうか。
preview
ニューラルネットワークが簡単に(第76回):Multi-future Transformerで多様な相互作用パターンを探る

ニューラルネットワークが簡単に(第76回):Multi-future Transformerで多様な相互作用パターンを探る

この記事では、今後の値動きを予測するというトピックを続けます。Multi-future Transformerのアーキテクチャーをお見せします。その主なアイデアは、未来のマルチモーダル分布をいくつかのユニモーダル分布に分解することで、シーンのエージェント間の相互作用のさまざまなモデルを効果的にシミュレートすることができるというものです。
preview
ニューラルネットワークが簡単に(第85回):多変量時系列予測

ニューラルネットワークが簡単に(第85回):多変量時系列予測

この記事では、線形モデルとTransformerの長所を調和的に組み合わせた、新しい複雑な時系列予測手法を紹介します。
preview
初級から中級まで:インジケーター(III)

初級から中級まで:インジケーター(III)

本記事では、DRAW_COLOR_LINEやDRAW_FILLINGなど、さまざまなグラフィック表示インジケーターの宣言方法について解説します。さらに、複数のインジケーターを用いてグラフを簡単かつ実践的に、そして高速に描画する方法も学びます。これにより、MetaTrader 5や市場全体の見方が大きく変わることでしょう。
preview
高度なICT取引システムの開発:オーダーブロックインジケーターでのシグナルの実装

高度なICT取引システムの開発:オーダーブロックインジケーターでのシグナルの実装

この記事では、板情報(オーダーブックの数量)に基づいてオーダーブロックインジケーターを開発し、バッファを使用して最適化し、精度を向上させる方法を学習します。これにより、プロジェクトの現段階が終了し、リスク管理クラスとインジケーターによって生成されたシグナルを使用する取引ボットの実装を含む次の段階の準備が整います。
preview
段階的特徴量選択の基準としての相互情報量

段階的特徴量選択の基準としての相互情報量

この記事では、最適な予測変数セットと目的変数との相互情報量に基づく段階的特徴量選択のMQL5実装を紹介します。
preview
リプレイシステムの開発(第51回):物事は複雑になる(III)

リプレイシステムの開発(第51回):物事は複雑になる(III)

この記事では、MQL5プログラミングの分野で最も難解な問題の1つである、チャートIDを正しく取得する方法と、オブジェクトがチャートにプロットされない場合がある理由について解説します。ここで提供される資料は教育目的のみに使用されるべきです。いかなる状況においても、提示された概念を学習し習得する以外の目的でアプリケーションを閲覧することは避けてください。
preview
リプレイシステムの開発(第64回):サービスの再生(V)

リプレイシステムの開発(第64回):サービスの再生(V)

この記事では、コード内の2つのエラーを修正する方法について説明します。ただし、初心者プログラマーの皆さんに、物事が必ずしも期待どおりに進むとは限らないことを理解してもらえるよう、できるだけわかりやすく解説したいと思います。いずれにせよ、これは学びの機会です。ここで提示されるコンテンツは、教育目的のみに使用されることを意図しています。ここで紹介する内容は教育目的のみに限定されており、提示された概念を探求すること以外の目的でこのアプリケーションを最終的な文書と見なすべきではありません。
preview
初級から中級へ:変数(II)

初級から中級へ:変数(II)

今日は、static変数の取り扱いについて学びます。このメカニズムを使用する際に守らなければならないいくつかの推奨事項があるため、この問題は初心者やある程度の経験を持つプログラマーにとってしばしば混乱を招きます。ここで提示される資料は教育目的のみに使用されます。いかなる状況においても、提示された概念を学習し習得する以外の目的でアプリケーションを閲覧することは避けてください。