MQL5言語での戦略テストに関する記事

icon

どのように取引戦略を開発し、記述し、テストするか、どのように最適なシステムパラメータを見つけるか、どのようにその結果を分析するか?MetaTraderプラットフォームは自動売買ロボットの開発者に、トレーディングアイデアを速く正確にテストするための豊富な機能を提供します。この記事を読んで、どのように複数通貨ロボットをテストするか、どのように最適化を目的としてMQL5Cloud Networkを使用するかを学んでください。

自動取引システムの開発者はテスティングの基本とストラテジーテスターの中のティック生成アルゴリズムについて読むことから始めることをお勧めします。

新しい記事を追加
最新 | ベスト
preview
MQL5における切断ニュートン共役勾配(TNC)アルゴリズムの実装

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

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

市場シミュレーション(第24回):SQL入門(VII)

前回の記事では、SQLに必要な導入を完了しました。SQLについて何を説明したいのかは、十分に明確にできたと思います。これは、市場のリプレイ/シミュレーションシステムの構築を見に来る人であれば誰でも、そこで何が起きているのかを少なくともある程度イメージできるようにするためのものでした。重要な点は、SQLが完全に処理できることをわざわざプログラミングする意味はないということです。
preview
市場シミュレーション:MQL5におけるSQL入門(IV)

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

多くの人はSQLを過小評価しがちで、あるいはSQLが実際にどのように動作するのかを十分に理解していないため、まったく使わないことさえあります。SQLデータベースに対してクエリを実行する場合、常に汎用的な答えを求めているわけではありません。場合によっては、非常に具体的で実用的な答えが必要になります。もしデータベースが適切な構造とデータモデルによって設計されていれば、ほぼあらゆる種類の情報を統合することが可能です。
preview
市場シミュレーション:ポジション表示(V)

市場シミュレーション:ポジション表示(V)

前回の記事で示した内容だけを見ると、これらはすべて一見すると簡単なことのように思えるかもしれません。しかし実際には、まだいくつもの問題が残っており、完了しなければならない作業も数多くあります。読者の皆さんは、すべてが簡単で分かりやすいものだと思ってしまうかもしれません。経験がないために、目の前に提示されたものをそのまま受け入れてしまうこともあるでしょう。しかし、それは避けるべき間違いです。さらに悪いのは、自分が実際に何を使っているのかを十分に理解しないまま、何かを利用しようとすることです。初心者は、しばしばコピー&ペーストの段階を経験します。もし、いつまでもその段階にとどまりたくないのであれば、いくつかのツールの使い方を学ぶべきです。プログラマーが最も頻繁に使用するツールの一つがドキュメントです。二つ目は、ログファイルを活用したテストです。ここでは、その方法を見ていきます。
preview
MQL5をマスターする — 初心者からプロまで(第7回):MQLアプリケーションのデバッグの原則

MQL5をマスターする — 初心者からプロまで(第7回):MQLアプリケーションのデバッグの原則

デバッグは、プログラミングサイクルにおいて不可欠な要素です。 この記事では、MetaTrader 5環境で動作するあらゆるアプリケーションのデバッグに用いられる一般的な手法について解説します。
preview
市場シミュレーション(第21回):SQL入門(IV)

市場シミュレーション(第21回):SQL入門(IV)

私よりもデータベースを扱った経験がはるかに豊富で、そのため異なる見解をお持ちの方も多いかもしれません。 データベースがなぜ現在のような設計になっているのか、そしてなぜSQLが現在のような形式になっているのか、特に、なぜ主キーや外部キーという仕組みが生まれたのかを説明する必要があったため、一部の説明は、どうしてもやや抽象的なままにせざるを得ませんでした。
preview
市場シミュレーション(第22回):SQL入門(V)

市場シミュレーション(第22回):SQL入門(V)

SQLの学習をあきらめ、やめてしまおうと決める前に、ここで扱っているのは、まだ最も基本的な要素だけであることを改めてお伝えしておきます。 SQLには、まだ紹介していない機能もあります。 それらを理解すれば、SQLが想像以上に実用的なものであることがわかるでしょう。 もっとも、開発は進めながら変化していくものなので、最終的には、現在の取り組みの方向性を変えることになるかもしれません。 SQLを使ってさまざまなものを作る方法についても、もう少し紹介していく予定です。これらは、皆さんにとって本当に重要で、役に立つ知識だからです。 プログラマーや開発者のコミュニティ全体よりも自分のほうが優れていると考えるだけでは、時間と機会を無駄にするだけです。 ご安心ください。この先は、さらに興味深い内容になっていきます。
preview
市場シミュレーション:ポジション表示(VI)

市場シミュレーション:ポジション表示(VI)

ポジション表示インジケータが、取引サーバー上の実際のポジション状況(保有ポジションの有無や現在の状態)を正確に反映できるよう、いくつかの改善をおこないます。 あらかじめお断りしておきますが、ここで紹介するアプリケーションは、MetaTrader 5に標準搭載されている機能を置き換えることを目的としたものではありません。 また、十分な注意と慎重な判断なしに使用することも避けてください。これらは、あくまでもシステムの仕組みを学ぶための学習用コードです。 私があえて「学習用コード」と呼んでいるのには理由があります。機能によっては、メッセージを使って実装することが必ずしも最適な方法とは限らないからです。
preview
市場シミュレーション:MQL5でのSQL入門(V)

市場シミュレーション:MQL5でのSQL入門(V)

前回の記事では、クエリ機能を追加する方法について説明しました。 これにより、MQL5のコード内でSQLを自由に活用し、SQLのSELECTクエリを実行してデータを取得できるようになります。 しかし、実装すべき関数がもう一つ残っています。 それがDatabaseReadBind関数です。 この関数を正しく理解するには、もう少し詳しい説明が必要となるため、前回の記事では取り上げず、今回の記事で解説することにしました。 今回は比較的広範囲な内容となるため、さっそく本題に入りましょう。
preview
市場シミュレーション:ポジション表示(VII)

市場シミュレーション:ポジション表示(VII)

この記事では、ポジション表示インジケータを操作して、価格ラインを変更したり、ポジションを直接決済したりできるように、改良を加えていきます。 実装に進む前に、特にこの仕組みに詳しくない方のために、いくつか明確にしておきたい点があります。 このインジケータを使って、取引サーバー上の情報を直接変更することはできません。 MetaTrader 5には、注文やポジションの変更をエキスパートアドバイザー(EA)のみに許可するセキュリティシステムが設けられているためです。 EA以外のアプリケーションでは、注文やポジションを操作することはできません。
preview
市場シミュレーション:MQL5でのSQL入門(I)

市場シミュレーション:MQL5でのSQL入門(I)

今回は、MQL5のコードでSQLを使用する方法について学び始めます。 また、データベースの作成方法についても解説します。 より正確には、MQL5に組み込まれた機能を利用して、SQLiteのデータベースファイルを作成する方法を取り上げます。 さらに、テーブルの作成方法や、主キーと外部キーを使用してテーブル間のリレーションシップを設定する方法についても説明します。 今回も、これらはすべてMQL5を使って実装します。 また、実装の詳細を隠蔽するクラスを利用することで、将来的にほかのSQL実装へ移行できるコードを、いかに簡単に作成できるかを見ていきます。 そして何より重要なのは、SQLを使用する際には、さまざまな場面で問題が発生する可能性があるということです。 これは、MQL5のコードでは、SQL文を常に文字列として記述しなければならないためです。