MQL5プログラミング記事

icon

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

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

新しい記事を追加
最新 | ベスト
preview
リプレイシステムの開発—市場シミュレーション(第3回):設定の調整(I)

リプレイシステムの開発—市場シミュレーション(第3回):設定の調整(I)

まずは現状を明らかにすることから始めましょう。今やらなければ、すぐに問題になります。
preview
ニューラルネットワークが簡単に(第72回):ノイズ環境における軌道予測

ニューラルネットワークが簡単に(第72回):ノイズ環境における軌道予測

前回説明した目標条件付き予測符号化(GCPC)法では、将来の状態予測の質が重要な役割を果たします。この記事では、金融市場のような確率的環境における予測品質を大幅に向上させるアルゴリズムを紹介したいとおもいます。
preview
手動取引のリスクマネージャー

手動取引のリスクマネージャー

この記事では、手動取引用のリスクマネージャークラスをゼロから書く方法について詳しく説明します。このクラスは、自動化プログラムを使用するアルゴリズムトレーダーが継承するための基本クラスとしても使用できます。
preview
MQL5とPythonで自己最適化エキスパートアドバイザーを構築する(第5回):深層マルコフモデル

MQL5とPythonで自己最適化エキスパートアドバイザーを構築する(第5回):深層マルコフモデル

この記事では、RSIインジケーターに単純なマルコフ連鎖を適用し、インジケーターが主要なレベルを通過した後の価格の挙動を観察します。NZDJPYペアで最も強い買いシグナルと売りシグナルは、RSIがそれぞれ11~20の範囲と71~80の範囲にあるときに生成されるという結論に達しました。データを操作して、保有するデータから直接学習した最適な取引戦略を作成する方法を説明します。さらに、遷移行列を最適に使用することを学習するためにディープニューラルネットワークを訓練する方法を説明します。
preview
知っておくべきMQL5ウィザードのテクニック(第19回):ベイズ推定

知っておくべきMQL5ウィザードのテクニック(第19回):ベイズ推定

ベイズ推定とは、新しい情報が入手可能になったときに確率仮説を更新するためにベイズの定理を採用することです。これは直感的に時系列分析への適応につながるので、シグナルだけでなく、資金管理やトレーリングストップのためのカスタムクラスを構築する際に、これをどのように利用できるか見てみましょう。
preview
初心者からプロまでMQL5をマスターする(第6回):エキスパートアドバイザー開発の基礎

初心者からプロまでMQL5をマスターする(第6回):エキスパートアドバイザー開発の基礎

この記事は初心者向け連載の続きです。今回はエキスパートアドバイザー(EA)開発の基本原理について解説します。2つのEAを作成します。1つ目はインジケーターを使わず、予約注文で取引をおこなうEA。2つ目は標準の移動平均線(MA)インジケーターを利用し、成行価格で取引をおこなうEAです。ここでは、前回までの記事の内容をある程度理解していることを前提としています。
preview
プライスアクション分析ツールキットの開発(第6回):Mean Reversion Signal Reaper

プライスアクション分析ツールキットの開発(第6回):Mean Reversion Signal Reaper

いくつかの概念は一見するとシンプルに思えるかもしれませんが、実際にそれを形にするのは想像以上に難しいことがあります。この記事では、平均回帰(Mean Reversion)戦略を用いて市場を巧みに分析するエキスパートアドバイザー(EA)の自動化に取り組んだ、革新的なアプローチをご紹介します。この魅力的な自動化プロセスの奥深さを、一緒に紐解いていきましょう。
preview
MQL5での取引戦略の自動化(第34回):R²適合度を用いたトレンドラインブレイクアウトシステム

MQL5での取引戦略の自動化(第34回):R²適合度を用いたトレンドラインブレイクアウトシステム

本記事では、スイングポイントを用いてサポートおよびレジスタンスのトレンドラインを特定し、R²(決定係数)による適合度と角度制約で検証することで、ブレイクアウト取引を自動化するMQL5によるトレンドラインブレイクアウトシステムを構築します。本システムでは、指定したルックバック期間内のスイングハイとスイングローを検出し、一定数以上のタッチポイントを持つトレンドラインを生成します。その後、R²指標および角度制約を用いてトレンドラインの信頼性を評価し、取引に使用可能かを判定します。
preview
リプレイシステムの開発 - 市場シミュレーション(第16回):新しいクラスシステム

リプレイシステムの開発 - 市場シミュレーション(第16回):新しいクラスシステム

もっと仕事を整理する必要があります。コードはどんどん大きくなっており、今やらなければ不可能になります。分割して征服しましょう。MQL5では、このタスクを実行するのに役立つクラスを使用することができますが、そのためにはクラスに関する知識が必要です。おそらく初心者を最も混乱させるのは継承でしょう。この記事では、これらのメカニズムを実用的かつシンプルな方法で使用する方法を見ていきます。
preview
MetaTrader 5用のMQTTクライアントの開発:TDDアプローチ(第2回)

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

この記事は、MQTTプロトコルのネイティブMQL5クライアントの開発ステップを説明する連載の一部です。今回は、コードの構成、最初のヘッダーファイルとクラス、そしてテストの書き方について説明します。この記事には、テスト駆動開発(Test-Driven-Development)の実践と、それをこのプロジェクトにどのように適用しているかについての簡単なメモも含まれています。
preview
MQL5における修正グリッドヘッジEA(第3部):シンプルヘッジ戦略の最適化(I)

MQL5における修正グリッドヘッジEA(第3部):シンプルヘッジ戦略の最適化(I)

この第3部では、以前に開発したシンプルヘッジとシンプルグリッドエキスパートアドバイザー(EA)を再考します。最適な戦略の使用を目指し、数学的分析と総当り攻撃アプローチを通じてシンプルヘッジEAを改良することに焦点を移します。戦略の数学的最適化について深く掘り下げ、後の回でコーディングに基づく最適化を探求するための舞台を整えます。
preview
取引戦略の開発を実践する

取引戦略の開発を実践する

この記事では、独自の取引戦略の開発を試みます。どんな取引戦略も、何らかの統計的優位性に基づいていなければなりません。しかも、この利点は長く続くべきです。
preview
Candlestick Trend Constraintモデルの構築(第4回):トレンドの波ごとに表示スタイルをカスタマイズ

Candlestick Trend Constraintモデルの構築(第4回):トレンドの波ごとに表示スタイルをカスタマイズ

この記事では、Meta Trader 5上で様々な指標のスタイルを描画するための強力なMQL5言語の機能を探ります。また、スクリプトと、スクリプトをモデルでどのように使えるかについても見ていきます。
preview
MetaTrader 5を使用してPythonでカスタム通貨ペアパターンを見つける

MetaTrader 5を使用してPythonでカスタム通貨ペアパターンを見つける

外国為替市場には繰り返しパターンや規則性が存在するのでしょうか。私は、PythonとMetaTrader 5を使って独自のパターン分析システムを構築することに決めました。これは、外国為替市場を攻略するための、数学とプログラミングの一種の融合です。
preview
未来のトレンドを見通す鍵としての取引量ニューラルネットワーク分析

未来のトレンドを見通す鍵としての取引量ニューラルネットワーク分析

この記事では、テクニカル分析の原理とLSTMニューラルネットワークの構造を統合することで、取引量分析に基づく価格予測の改善可能性を探ります。特に、異常な取引量の検出と解釈、クラスタリングの活用、および機械学習の文脈における取引量に基づく特徴量の作成と定義に注目しています。
preview
プライスアクション分析ツールキットの開発(第12回):External Flow (III)トレンドマップ

プライスアクション分析ツールキットの開発(第12回):External Flow (III)トレンドマップ

市場の流れは、ブル(買い手)とベア(売り手)の力関係によって決まります。市場が反応する特定の水準には、そうした力が作用しています。中でも、フィボナッチとVWAPの水準は、市場の動きに強い影響を与える傾向があります。この記事では、VWAPとフィボナッチ水準に基づいたシグナル生成の戦略を一緒に探っていきましょう。
preview
初級から中級まで:配列(III)

初級から中級まで:配列(III)

この記事では、MQL5における配列の扱い方について解説します。具体的には、関数や手続き(プロシージャ)間で配列を使って情報を受け渡す方法に焦点を当てます。本連載の今後の資料で説明・実演される内容の準備段階として、今回の記事は非常に重要です。そのため、ここで紹介される内容を注意深く学ぶことを強くお勧めします。
preview
PythonとMQL5における局所的特徴量選択の適用

PythonとMQL5における局所的特徴量選択の適用

この記事では、Narges Armanfardらの論文「Local Feature Selection for Data Classification」で提案された特徴量選択アルゴリズムを紹介します。このアルゴリズムはPythonで実装されており、MetaTrader 5アプリケーションに統合可能なバイナリ分類モデルの構築に使用されます。
preview
ニュース取引が簡単に(第5回):取引の実施(II)

ニュース取引が簡単に(第5回):取引の実施(II)

この記事では、取引管理クラスを拡張し、ニュースイベントを取引するための買い逆指値注文(買いストップ注文)と売り逆指値注文(売りストップ注文)を追加します。また、オーバーナイト取引を防ぐために、これらの注文に有効期限の制約を実装します。さらに、逆指値注文(ストップ注文)を使用する際に発生しうるスリッページ、特にニュースイベント中に発生する可能性のあるスリッページを防止または最小限に抑えるために、スリッページ関数をエキスパートアドバイザー(EA)に組み込みます。
preview
MQL5での取引戦略の自動化(第10回):トレンドフラットモメンタム戦略の開発

MQL5での取引戦略の自動化(第10回):トレンドフラットモメンタム戦略の開発

この記事では、「トレンドフラットモメンタム(Trend Flat Momentum)戦略」のためのエキスパートアドバイザー(EA)をMQL5で開発します。移動平均線のクロスオーバーに、RSI(相対力指数)とCCI(商品チャネル指数)といったモメンタム系のフィルターを組み合わせて、トレードシグナルを生成します。また、バックテストの方法や、実運用でのパフォーマンス向上のための改善案についても取り上げます。
preview
MQL5で取引管理者パネルを作成する(第12回):FX取引計算ツールの統合

MQL5で取引管理者パネルを作成する(第12回):FX取引計算ツールの統合

取引において重要な数値を正確に計算することは、すべてのトレーダーにとって欠かせません。本記事では、強力なユーティリティであるFX取引計算ツールを取引管理パネルに組み込み、マルチパネル型の取引管理者システムの機能をさらに拡張する方法について解説します。リスク、ポジションサイズ、潜在的な利益を効率的に算出することは、取引の精度を高めるうえで非常に重要です。この新機能は、パネル内でこれらの計算をよりスムーズかつ直感的におこなえるよう設計されています。本記事では、MQL5を用いた高度な取引パネル構築の実践的な応用例を紹介します。
preview
MQL5の圏論(第21回):LDAによる自然変換

MQL5の圏論(第21回):LDAによる自然変換

連載21回目となるこの記事では、自然変換と、線形判別分析を使ったその実装方法について引き続き見ていきます。前回同様、シグナルクラス形式でその応用例を紹介します。
preview
多通貨エキスパートアドバイザーの開発(第6回):インスタンスグループ選択の自動化

多通貨エキスパートアドバイザーの開発(第6回):インスタンスグループ選択の自動化

取引戦略を最適化した後、パラメータのセットを受け取ります。これらを使用して、1つのEAに複数の取引戦略のインスタンスを作成することができます。以前は手動でおこないましたが、ここでは、このプロセスの自動化を試みます。
preview
初級から中級まで:再帰

初級から中級まで:再帰

この記事では、とても興味深く、難易度のやや高いプログラミングの概念について見ていきます。ただし、この概念は細心の注意をもって扱うべきです。なぜなら、誤用や誤解によって、本来は比較的単純なプログラムが、不要に複雑化してしまう危険があるからです。しかし、正しく使用し、かつ適切な状況にうまく適用できれば、再帰は、そうでなければ非常に面倒で時間のかかる問題を解決するための優れた味方となります。ここに掲載されている資料は、教育目的のみのものです。いかなる状況においても、提示された概念を学習し習得する以外の目的でアプリケーションを利用することは避けてください。
preview
リプレイシステムの開発 - 市場シミュレーション(第9回):カスタムイベント

リプレイシステムの開発 - 市場シミュレーション(第9回):カスタムイベント

ここでは、カスタムイベントがどのようにトリガーされ、指標でどのようにリプレイ/シミュレーションサービスの状態がレポートされるかを見ていきます。
preview
DoEasy-コントロール(第21部):SplitContainerコントロール。パネルセパレータ

DoEasy-コントロール(第21部):SplitContainerコントロール。パネルセパレータ

この記事では、SplitContainerコントロールの補助パネルセパレータオブジェクトのクラスを作成します。
preview
MetaTrader 5で隠れマルコフモデルを統合する

MetaTrader 5で隠れマルコフモデルを統合する

この記事では、Pythonを使用して学習した隠れマルコフモデルをMetaTrader 5アプリケーションに統合する方法を示します。隠れマルコフモデルは、時系列データをモデル化するために使用される強力な統計的ツールであり、モデル化されるシステムは観測不可能な(隠れた)状態によって特徴付けられます。HMMの基本的な前提は、ある時刻にある状態にある確率は、その前のタイムスロットにおけるプロセスの状態に依存するということです。
preview
MQL5取引ツールキット(第8回):コードベースにHistory Manager EX5ライブラリを実装して使用する方法

MQL5取引ツールキット(第8回):コードベースにHistory Manager EX5ライブラリを実装して使用する方法

MetaTrader 5口座の取引履歴を処理するために、MQL5ソースコード内で「History Manager EX5」ライブラリを簡単にインポートして活用する方法を、本連載の最終回となるこの記事で解説します。MQL5ではシンプルな1行の関数呼び出しで、取引データの管理や分析を効率的におこなうことが可能です。さらに、取引履歴の分析スクリプトを複数作成する方法や、実用的なユースケースとして、価格ベースのエキスパートアドバイザー(EA)の開発方法についても学んでいきます。このEAは、価格データとHistory Manager EX5ライブラリを活用し、過去のクローズ済み取引に基づいて取引判断をおこない、取引量の調整やリカバリーストラテジーの実装をおこないます。
preview
ダーバスボックスブレイクアウト戦略における高度な機械学習技術の探究

ダーバスボックスブレイクアウト戦略における高度な機械学習技術の探究

ニコラス・ダーバスによって考案された「ダーバスボックスブレイクアウト戦略」は、株価が一定の「ボックス」レンジを上抜けたときに強い上昇モメンタムが示唆されることから、買いシグナルを見極めるためのテクニカル取引手法です。本記事では、この戦略コンセプトを例として用い、機械学習の3つの高度な技術を探っていきます。それは、取引をフィルタリングするのではなくシグナルを生成するために機械学習モデルを使用すること、離散的ではなく連続的なシグナルを用いること、異なる時間枠で学習されたモデルを使って取引を確認すること、の3点です。
preview
DoEasy - コントロール(第28部):ProgressBarコントロールのバースタイル

DoEasy - コントロール(第28部):ProgressBarコントロールのバースタイル

今回は、ProgressBarコントロールでのプログレスバーの表示スタイルと説明テキストを開発します。
preview
多通貨エキスパートアドバイザーの開発(第11回):最適化の自動化(最初のステップ)

多通貨エキスパートアドバイザーの開発(第11回):最適化の自動化(最初のステップ)

良いEAを得るためには、取引戦略の複数のインスタンスから優れたパラメータセットを選択する必要があります。これを実現するためには、さまざまな銘柄で最適化を行い、最良の結果を選ぶという手動のプロセスがあります。しかし、この作業をプログラムに任せ、より生産的な活動に専念したほうが効率的です。
preview
Candlestick Trend Constraintモデルの構築(第9回):マルチ戦略エキスパートアドバイザー(I)

Candlestick Trend Constraintモデルの構築(第9回):マルチ戦略エキスパートアドバイザー(I)

今日は、MQL5を使って複数の戦略をエキスパートアドバイザー(EA)に組み込む可能性を探ります。EAは、指標やスクリプトよりも幅広い機能を提供し、変化する市場環境に適応できる、より洗練された取引アプローチを可能にします。詳しくは、この記事のディスカッションをご覧ください。
preview
機械学習の限界を克服する(第1回):相互運用可能な指標の欠如

機械学習の限界を克服する(第1回):相互運用可能な指標の欠如

私たちのコミュニティがAIをあらゆる形態で活用した信頼性の高い取引戦略を構築しようとする努力を、静かに蝕んでいる強力で広範な力があります。本稿では、私たちが直面している問題の一部は、「ベストプラクティス」に盲目的に従うことに根ざしていることを明らかにします。読者に対して、実際の市場に基づくシンプルな証拠を提供することで、なぜそのような行動を避け、むしろドメイン固有のベストプラクティスを採用すべきかを論理的に示します。これによって、私たちのコミュニティがAIの潜在的な可能性を回復するチャンスを少しでも持てるようになるのです。
preview
機械学習の限界を克服する(第9回):自己教師あり学習を用いた金融における相関ベース特徴学習

機械学習の限界を克服する(第9回):自己教師あり学習を用いた金融における相関ベース特徴学習

自己教師あり学習は、観測値そのものから生成された教師信号を探索する統計学習の強力なパラダイムです。このアプローチは、教師なし学習における困難な問題を、より馴染みのある教師あり学習問題へと再定式化します。この技術は、アルゴリズムトレーダーコミュニティの目的に対して、見過ごされてきた応用可能性を持っています。したがって本記事の議論は、読者に対して自己教師あり学習という未開拓の研究領域への橋渡しを提供し、さらに小規模データセットへの過学習を回避しながら、金融市場の頑健で信頼性の高い統計モデルを提供する実践的応用を提示することを目的としています。
preview
MQL5の圏論(第4回):スパン、実験、合成

MQL5の圏論(第4回):スパン、実験、合成

圏論は数学の一分野であり、多様な広がりを見せていますが、MQL5コミュニティでは今のところ比較的知られていません。この連載では、その概念のいくつかを紹介して考察することで、トレーダーの戦略開発におけるこの注目すべき分野の利用を促進することを目的としたオープンなライブラリを確立することを目指しています。
preview
MetaTrader 5用のMQTTクライアントの開発:TDDアプローチ(第5回)

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

この記事は、MQTT 5.0プロトコルのネイティブMQL5クライアントの開発ステップを説明する連載の第5回です。今回は、PUBLISHパケットの構造、Publishフラグの設定方法、Topic Name文字列のエンコード方法、必要な場合のPacket Identifierの設定方法について説明します。
preview
プライスアクション分析ツールキットの開発(第8回):Metrics Board

プライスアクション分析ツールキットの開発(第8回):Metrics Board

最も強力なプライスアクション分析ツールの一つである「Metrics Board」は、ワンクリックで重要な市場指標を即座に表示し、市場分析を効率化するように設計されています。各ボタンには高値・安値のトレンド分析、出来高、その他の主要な指標の解析といった特定の機能が割り当てられています。このツールは、最も必要なタイミングで正確なリアルタイムデータを提供します。この記事では、その機能についてさらに詳しく掘り下げていきましょう。
preview
知っておくべきMQL5ウィザードのテクニック(第83回): ストキャスティクスとFrAMAのパターンの使用 - 行動アーキタイプ

知っておくべきMQL5ウィザードのテクニック(第83回): ストキャスティクスとFrAMAのパターンの使用 - 行動アーキタイプ

ストキャスティクスとフラクタル適応型移動平均(FrAMA: Fractal Adaptive Moving Average)は、互いに補完し合う特性を持っており、MQL5のエキスパートアドバイザー(EA)で使える指標ペアの1つです。ストキャスティクスはモメンタムの変化を捉えるために使用し、FrAMAは現在のトレンドを確認するために利用します。本記事では、これら2つのインジケーターの組み合わせについて、MQL5ウィザードを活用して構築およびテストをおこない、その有効性を検証します。
preview
リプレイシステムの開発(第53回):物事は複雑になる(V)

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

今回は、あまり理解されていない重要なトピックを取り上げます。「カスタムイベント」です。これは危険です。これらの要素の長所と短所を解説します。このトピックは、MQL5やその他の言語でプロのプログラマーになりたい人にとって重要な鍵となります。ここではMQL5とMetaTrader 5に焦点を当てます。
preview
GIT:それは何か?

GIT:それは何か?

今回は、開発者にとって非常に重要なツールを紹介しましょう。GITに馴染みのない方は、この記事を読んでGITとは何か、MQL5でどのように使用するかをご覧ください。