エキスパートアドバイザーの堅牢性テスト
戦略開発には、多くの複雑な要素が含まれていますが、これらの多くは初心者トレーダーには十分に伝えられていません。その結果、私自身を含め多くのトレーダーが、こうした教訓を痛みを伴う経験を通じて学ぶことになりました。この記事では、MQL5で戦略を開発する際に初心者トレーダーが直面しがちな一般的な落とし穴について、私の観察に基づいて解説します。EAの信頼性を見極め、簡単に実践できる方法で自作EAの堅牢性を検証するための、さまざまなヒントやコツ、具体例を紹介します。本記事の目的は、読者がEA購入時の詐欺を回避し、自身の戦略開発での失敗を未然に防げるよう支援することです。
コードロックアルゴリズム(CLA)
この記事では、コードロックを単なるセキュリティメカニズムとしてではなく、複雑な最適化問題を解くためのツールとして再考し、新たな視点から捉えます。セキュリティ装置にとどまらず、最適化への革新的アプローチのインスピレーション源となるコードロックの世界をご紹介します。各ロックが特定の問題の解を表す「ロック」の母集団を作り、機械学習や取引システム開発など様々な分野でこれらのロックを「ピッキング」し、最適解を見つけるアルゴリズムを構築します。
MQL5とPythonで自己最適化エキスパートアドバイザーを構築する(第4回):スタッキングモデル
本日は、自らの失敗から学習するAI搭載の取引アプリケーションの構築方法について解説します。特に、「スタッキング」と呼ばれる手法を紹介します。この手法では、2つのモデルを組み合わせて1つの予測をおこないます。1つ目のモデルは通常、性能が比較的低い学習者であり、2つ目のモデルはその学習者の残差を学習する、より高性能なモデルです。目標は、これらのモデルをアンサンブルとして統合することで、より高精度な予測を実現することです。
Connexusのリクエスト(第6回):HTTPリクエストとレスポンスの作成
Connexusライブラリ連載第6回目では、HTTPリクエストの構成要素全体に焦点を当て、リクエストを構成する各コンポーネントを取り上げます。そして、リクエスト全体を表現するクラスを作成し、これまでに作成したクラスを統合します。
DoEasy-コントロール(第10部):WinFormsオブジェクト - インターフェイスのアニメーション化
ユーザーやオブジェクトとのオブジェクト対話機能を実装して、グラフィカルインターフェイスをアニメーション化するときが来ました。より複雑なオブジェクトを正しく動作させるためにも、新しい機能が必要になります。
どんな市場でも優位性を得る方法(第3回):VISA消費指数
ビッグデータの世界では、取引戦略を向上させる可能性を秘めた数百万もの代替データセットが存在します。この連載では、最も有益な公共データセットを特定するお手伝いをします。
DoEasy - コントロール(第23部):TabControlおよびSplitContainer WinFormsオブジェクトの改善
今回は、WinFormsオブジェクトの作業領域の境界線に関連する新しいマウスイベントを追加し、TabControlとSplitContainerコントロールの機能に関するいくつかの欠点を修正することにします。
人工協調探索(ACS)アルゴリズム
人工協調探索(ACS)は、バイナリ行列と、相互主義的関係と協調に基づく複数の動的な個体群を用いて、最適解を迅速かつ正確に探索する革新的な手法です。捕食者と被食者に対するACS独自のアプローチにより、数値最適化問題で優れた結果を出すことができます。
初級から中級まで:配列(I)
この記事は、これまでに議論してきた内容と、新たな研究段階との橋渡しとなるものです。この記事を理解するためには、前回までの記事を読んでおく必要があります。ここで提示されるコンテンツは、教育目的のみに使用されることを意図しています。いかなる状況においても、提示された概念を学習し習得する以外の目的でアプリケーションを利用することは避けてください。
リプレイシステムの開発(第62回):サービスの再生(III)
この記事では、実際のデータを使用する際にアプリケーションのパフォーマンスに影響を及ぼす可能性のある「ティック過剰」の問題について取り上げます。このティック過剰は、1分足を適切なタイミングで構築するうえで支障となることがよくあります。
高度なICT取引システムの開発:インジケーターへのオーダーブロックの実装
この記事では、オーダーブロックのミティゲーションを検出し、描画し、アラートを発するインジケーターの作り方を学びます。また、チャート上でこれらのブロックを正確に特定する方法や、正確なアラートの設定方法、価格の動きをより理解しやすくするために矩形で位置を可視化する方法についても詳しく解説します。このインジケーターは、スマートマネーコンセプトやインナーサークルトレーダーの手法を用いるトレーダーにとって重要なツールとなるでしょう。
外国為替平均回帰戦略のためのカルマンフィルター
カルマンフィルターは、価格変動のノイズを除去して金融時系列の真の状態を推定するために、アルゴリズム取引で用いられる再帰的なアルゴリズムです。新しい市場データに基づいて予測を動的に更新するため、平均回帰のような適応型戦略において非常に有用です。本記事ではまず、カルマンフィルターの計算方法と実装について紹介します。次に、このフィルターをクラシックな平均回帰型の外国為替(FX)戦略に適用する例を示します。最後に、異なる通貨ペアにおいてカルマンフィルターと移動平均を比較し、さまざまな統計分析をおこないます。
リプレイシステムの開発(第63回):サービスの再生(IV)
この記事では、1分足のティックシミュレーションに関する問題を最終的に解決し、実際のティックと共存できるようにします。これにより、将来的なトラブルを回避することが可能になります。ここで提示される資料は教育目的のみに使用されます。いかなる状況においても、提示された概念を学習し習得する以外の目的でアプリケーションを閲覧することは避けてください。
MQL5 Algo Forgeのご紹介
アルゴリズム取引開発者のための専用ポータル「MQL5 Algo Forge」をご紹介します。MQL5 Algo Forgeは、Git のパワーと、MQL5エコシステム内でプロジェクトを管理・整理するための直感的なインターフェースを兼ね備えています。ここでは、気になる著者をフォローしたり、チームを結成したり、アルゴリズム取引プロジェクトで共同作業を行うことが可能です。
ウィリアム・ギャンの手法(第2回):ギャンスクエアインジケーターの作成
ギャンのSquare of 9に基づいて、時間と価格を2乗したインジケーターを作成します。コードを準備し、プラットフォームで異なる時間間隔でインジケーターをテストします。
MQL5で取引管理者パネルを作成する(第6回):取引管理パネル(II)
この記事では、多機能管理パネルの取引管理パネル(Trade Management Panel)を強化します。コードを簡素化し、読みやすさ、保守性、効率性を向上させる強力なヘルパー関数を導入します。また、追加のボタンをシームレスに統合し、インターフェイスを強化して、より幅広い取引タスクを処理する方法も紹介します。ポジションの管理、注文の調整、ユーザーとのやり取りの簡素化など、このガイドは、堅牢でユーザーフレンドリーな取引管理パネルの開発に役立ちます。
リプレイシステムの開発(第70回):正しい時間を知る(III)
この記事では、CustomBookAdd関数を適切かつ効果的に使う方法について見ていきます。一見シンプルに見えるこの関数ですが、実際には多くの細かな注意点があります。たとえば、マウスインジケーターに対してカスタム銘柄がオークション中なのか、取引中なのか、市場が閉まっているのかを伝えることができます。ここで提示されるコンテンツは、教育目的のみに使用されることを意図しています。いかなる状況においても、提示された概念を学習し習得する以外の目的でアプリケーションを利用することは避けてください。
行列分解:より実用的なモデリング
行と列ではなく列のみが指定されているため、行列モデリングが少し奇妙であることに気付かなかったかもしれません。行列分解を実行するコードを読むと、これは非常に奇妙に見えます。行と列がリストされていることを期待していた場合、因数分解しようとしたときに混乱する可能性があります。さらに、この行列モデリング方法は最適ではありません。これは、この方法で行列をモデル化すると、いくつかの制限に遭遇し、より適切な方法でモデル化がおこなわれていれば必要のない他の方法や関数を使用せざるを得なくなるためです。
初心者からプロまでMQL5をマスターする(第6回):エキスパートアドバイザー開発の基礎
この記事は初心者向け連載の続きです。今回はエキスパートアドバイザー(EA)開発の基本原理について解説します。2つのEAを作成します。1つ目はインジケーターを使わず、予約注文で取引をおこなうEA。2つ目は標準の移動平均線(MA)インジケーターを利用し、成行価格で取引をおこなうEAです。ここでは、前回までの記事の内容をある程度理解していることを前提としています。
MQL5で取引管理者パネルを作成する(第4回):ログインセキュリティ層
悪意のある人物が取引管理者室に侵入し、世界中の何百万ものトレーダーに貴重な洞察を伝えるために使用されるコンピューターと管理パネルにアクセスしたと想像してください。このような侵入は、誤解を招くメッセージの不正送信や、意図しないアクションをトリガーするボタンのランダムクリックなど、悲惨な結果につながる可能性があります。このディスカッションでは、MQL5のセキュリティ対策と、これらの脅威から保護するために管理パネルに実装した新しいセキュリティ機能について説明します。セキュリティプロトコルを強化することで、通信チャネルを保護し、グローバルな取引コミュニティの信頼を維持することを目指しています。この記事のディスカッションでさらに詳しい情報を見つけてください。
MQL5で自己最適化エキスパートアドバイザーを構築する(第4回):動的なポジションサイズ調整
アルゴリズム取引を成功させるには、継続的かつ学際的な学習が必要です。しかし、その可能性は無限であるがゆえに、明確な成果が得られないまま、何年もの努力を費やしてしまうこともあります。こうした課題に対応するため、私たちは徐々に複雑さを導入するフレームワークを提案します。これにより、トレーダーは不確実な結果に対して無限の時間を費やすのではなく、戦略を反復的に洗練させることが可能になります。
リプレイシステムの開発(第44回):Chart Tradeプロジェクト(III)
前回の記事では、OBJ_CHARTで使用するテンプレートデータの操作方法について解説しました。ただし、あの記事ではトピックの概要に焦点を当て、詳細な部分には触れていませんでした。これは、説明をよりシンプルにするために、非常に簡略化された手法を用いたからです。物事は一見シンプルに見えることが多いですが、実際にはそうではないケースもあり、全体を正確に理解するためには、まず最も基本的な部分をしっかり押さえる必要があります。
MQL5で古典的な戦略を再構築する(後編):FTSE100と英国債
この連載では、人気のある取引戦略を探り、AIを使ってその改善を試みます。今日の記事では、株式市場と債券市場の関係に基づく古典的な取引戦略を再考します。
ディープラーニングを用いたCNA(因果ネットワーク分析)、SMOC(確率モデル最適制御)、ナッシュゲーム理論の例
以前の記事で発表されたこれら3つの例にディープラーニング(DL)を加え、以前の結果と比較します。目的は、他のEAにディープラーニングを追加する方法を学ぶことです。
リプレイシステムの開発(第46回):Chart Tradeプロジェクト(V)
アプリケーションを動作させるために必要なファイルを探すのに時間を浪費していませんか。すべてを実行ファイルに含めてみてはどうでしょうか。そうすれば、ファイルを探す必要がなくなります。多くの人がこのような配布・保管方法を採用していることは知っていますが、少なくとも、実行ファイルの配布や保管に関してはもっと適切な方法があります。ここで紹介する方法は、MQL5だけでなく、MetaTrader 5そのものを優れたアシスタントとして使うことができるので、非常に便利です。しかも、理解するのはそれほど難しくありません。
MQL5 Algo Forgeへの移行(第1回):メインリポジトリの作成
MetaEditorでプロジェクトを進める際、開発者はしばしばコードのバージョンを管理する必要に直面します。MetaQuotesは最近、Gitへの移行と、コードのバージョン管理や共同作業を可能にするMQL5 Algo Forgeの立ち上げを発表しました。本記事では、新しく導入されたツールと既存のツールを、より効率的に活用する方法について解説します。
古典的な戦略を再構築する(第7回):USDJPYにおける外国為替市場とソブリン債務分析
本日の記事では、今後の為替レートと国債の関係を分析します。債券は、最も人気のある固定利付証券の1つであり、今回の議論の焦点となります。AIを使用して従来の戦略を改善できるかどうかを一緒に検討しましょう。
MQL5取引ツールキット(第3回):未決注文管理EX5ライブラリの開発
MQL5のコードやプロジェクトで、包括的な未決注文管理EX5ライブラリを開発して実装する方法を学びましょう。本記事では、広範な未決注文管理EX5ライブラリを作成する手順を紹介し、それをインポートおよび実装する方法を、取引パネルまたはグラフィカルユーザーインターフェース(GUI)の構築を通じて解説します。このEA注文パネルを使用すれば、チャートウィンドウ上のGUIから、指定されたマジックナンバーに関連する未決注文を直接オープン、監視、削除することが可能です。
MQL5でカレンダーベースのニュースイベントブレイクアウトエキスパートアドバイザーを開発する
ボラティリティは、影響力の大きいニュースイベントの周辺でピークに達する傾向があり、大きなブレイクアウトの機会を生み出します。本記事では、カレンダーを基にしたブレイクアウト戦略の実装プロセスについて説明します。カレンダーデータを解釈・保存するためのクラスの作成、これを活用した現実的なバックテストの開発、そして最終的にライブ取引用の実行コードの実装までを一貫して解説します。
PythonとMQL5による多銘柄分析(前編):NASDAQ集積回路メーカー
ポートフォリオのリターンを最大化するために、AIを活用してポジションサイジングと注文数量を最適化する方法について解説します。本稿では、アルゴリズムを用いて最適なポートフォリオを特定し、期待リターンやリスク許容度に応じてポートフォリオを調整する手法を紹介します。このプロセスでは、SciPyライブラリやMQL5言語を活用し、保有中のすべてのデータを基に、最適かつ分散化されたポートフォリオを構築します。
Metatrader 5のWebsockets — Windows APIを使用した非同期クライアント接続
この記事では、MetaTraderプログラム向けに非同期のWebSocketクライアント接続を可能にするカスタムDLL(ダイナミックリンクライブラリ)の開発について解説します。
リプレイシステムの開発(第40回):第2段階の開始(I)
今日は、リプレイ/シミュレーターシステムの新しい段階について話しましょう。この段階で、会話は本当に面白くなり、内容もかなり濃くなります。記事を熟読し、そこに掲載されているリンクを利用することを強くお勧めします。そうすることで、内容をより深く理解することができます。
母集団最適化アルゴリズム:ボイドアルゴリズム
この記事では、動物の群れ行動のユニークな例に基づいたボイドアルゴリズムについて考察しています。その結果、ボイドアルゴリズムは、「群知能(Swarm Intelligence)」の名の下に統合されたアルゴリズム群全体の基礎となった。
古典的な戦略を再構築する(第8回):USDCADをめぐる為替市場と貴金属市場
この連載では、よく知られた取引戦略を再検討し、AIを使って改善できるかどうかを検証します。本日のディスカッションでは、貴金属と通貨の間に信頼できる関係があるかどうかを検証します。
スイングエントリーモニタリングEAの開発
年末が近づくと、多くの長期トレーダーは市場の過去を振り返り、その動きや傾向を分析して、将来の動向を予測しようとします。この記事では、MQL5を用いて長期エントリーの監視をおこなうエキスパートアドバイザー(EA)の開発について解説します。手動取引や自動監視システムの不在によって、長期的な取引チャンスを逃してしまうという課題に取り組むことが本稿の目的です。今回は、特に取引量の多い通貨ペアの一つを例に挙げ、効果的な戦略を立案しながらソリューションを構築していきます。
MQL5で取引管理者パネルを作成する(第11回):最新機能通信インターフェース(I)
本日は、コミュニケーションパネルのメッセージングインターフェースを、現代の高性能なコミュニケーションアプリの標準に合わせて強化することに焦点を当てます。この改善は、CommunicationsDialogクラスの更新によって実現されます。この記事とディスカッションでは、主要な知見を紹介しつつ、MQL5を用いたインターフェースプログラミングの次のステップを整理していきます。
リプレイシステムの開発(第51回):物事は複雑になる(III)
この記事では、MQL5プログラミングの分野で最も難解な問題の1つである、チャートIDを正しく取得する方法と、オブジェクトがチャートにプロットされない場合がある理由について解説します。ここで提供される資料は教育目的のみに使用されるべきです。いかなる状況においても、提示された概念を学習し習得する以外の目的でアプリケーションを閲覧することは避けてください。
リプレイシステムの開発(第69回):正しい時間を知る(II)
今日は、iSpread機能がなぜ必要なのかについて考察します。同時に、ティックが1つも存在しない状況で、システムがどのようにバーの残り時間を通知するのかについても理解を深めていきます。ここで提示されるコンテンツは、教育目的のみに使用されることを意図しています。いかなる状況においても、提示された概念を学習し習得する以外の目的でアプリケーションを利用することは避けてください。
MQL5で取引管理者パネルを作成する(第6回):多機能インターフェイス(I)
取引管理者の役割はTelegram通信だけにとどまらず、注文管理、ポジション追跡、インターフェイスのカスタマイズなど、さまざまな制御アクティビティにも携わります。この記事では、MQL5の複数の機能をサポートするためにプログラムを拡張するための実用的な洞察を共有します。このアップデートは、主にコミュニケーションに重点を置くという現在のAdminパネルの制限を克服し、より幅広いタスクを処理できるようにすることを目的としています。