ENUM_MQL_INFO_INTEGERは、MQL5環境に関するさまざまな情報を取得するための識別子を定義した列挙型です。
この列挙型を使用することで、MQL5プログラムの状態や設定に関する詳細な情報を取得できます。たとえば、プログラムが使用しているメモリ量や現在のテストモード、ライセンスの種類など、多岐にわたる情報を簡単に取得できます。これにより、プログラムのデバッグや最適化、監視を効率的に行うことができます。
MQL_HANDLES_USED
MQL_HANDLES_USEDは、現在アクティブなオブジェクトハンドルの数を示します。オブジェクトハンドルとは、プログラムが管理するリソースやオブジェクトを指す識別子のことです。たとえば、ファイルやネットワーク接続、チャート上のグラフィカルオブジェクトなどが含まれます。
動的オブジェクトとは、プログラムの実行中に動的(必要に応じて生成される)に生成されるオブジェクトのことです。これはnew演算子を使って作成され、必要がなくなったらdelete演算子で削除されます。たとえば、動的に配列を作成して使用する場合がこれに該当します。
非動的オブジェクトとは、プログラムの開始時に生成され、プログラムの終了時まで存在するオブジェクトのことです。通常、ローカル変数やグローバル変数、クラスメンバー(クラス内で定義された変数)として定義され、プログラムの実行中はずっとメモリ上に存在します。
MQL_HANDLES_USEDは、これらの動的および非動的なオブジェクトを含む、グローバル変数やローカル変数、またはクラスメンバーを含む、プログラムが現在使用しているすべてのオブジェクトハンドルの数を示します。ハンドルの数が多いほど、プログラムが消費するリソースも増加します。そのため、リソースの管理や最適化を行う際に、この情報は非常に重要です。
Type: int型
MQL_MEMORY_LIMIT
MQL_MEMORY_LIMITは、MQL5プログラムの最大動的メモリ量をMB単位で示します。動的メモリの量は、プログラムの実行に必要なリソースの上限を表します。プログラムが使用できるメモリの最大値を知ることで、リソース管理やプログラムの最適化に役立てることができます。
Type: int型
MQL_MEMORY_USED
MQL_MEMORY_USEDは、MQL5プログラムのメモリ使用量をMB単位で示します。これは、現在のプログラムが実行中に消費しているメモリの量を表します。プログラムのメモリ使用量を監視することで、メモリリークやリソースの過剰使用を防ぎ、プログラムの安定性と効率性を向上させることができます。
Type: int型
MQL_PROGRAM_TYPE
MQL_PROGRAM_TYPEは、MQL5プログラムの種類を示します。これにより、現在実行中のプログラムがエキスパートアドバイザー、インジケータ、スクリプトなどのどれであるかを判別できます。プログラムの種類を知ることは、特定の機能や動作を適切に扱うために重要です。
Type: ENUM_PROGRAM_TYPE
ENUM_PROGRAM_TYPE
ENUM_PROGRAM_TYPEはMQL5プログラムの種類を取得します。
PROGRAM_SCRIPT
PROGRAM_SCRIPTは、スクリプトを示します。スクリプトは、一度だけ実行される簡単なプログラムで、特定のタスクを自動化するために使用されます。例えば、特定の注文を一度に大量に送信したり、チャート上のオブジェクトを一括削除するなどの用途に使用されます。
PROGRAM_EXPERT
PROGRAM_EXPERTは、エキスパートアドバイザーを示します。エキスパートアドバイザーは、特定の取引戦略に基づいて自動的に取引を行うプログラムです。市場の分析や注文の実行、ポジションの管理などを自動で行い、トレーダーの負担を軽減します。
PROGRAM_INDICATOR
PROGRAM_INDICATORは、カスタムインジケ-タを示します。インジケータは、チャート上に表示されるさまざまな技術指標を計算・表示するためのプログラムです。トレンドラインや移動平均線、RSIなどの指標を表示し、トレーダーが市場の状況を分析するのに役立ちます。
PROGRAM_LIBRARY
PROGRAM_LIBRARYは、ライブラリを示します。ライブラリは、他のMQL5プログラムから再利用可能な関数やクラスを提供するプログラムです。共通の機能をライブラリとして分離することで、コードの再利用性を高め、プログラムの開発効率を向上させます。
PROGRAM_SERVICE
PROGRAM_SERVICEは、サービスを示します。サービスは、ターミナルのバックグラウンドで動作するプログラムです。ユーザーインターフェイスを持たず、取引サーバーとの通信やデータの取得・処理を行うために使用されます。バックグラウンドで定期的に実行されるタスクを処理するのに適しています。
MQL_DLLS_ALLOWED
MQL_DLLS_ALLOWEDは、指定された実行プログラムでDLLを使用する許可を示します。DLLの使用が許可されている場合はtrueを返し、許可されていない場合はfalseを返します。この情報は、プログラムが外部のDLLを利用するかどうかを判断するのに役立ちます。
Type: bool型
DLLとは?
DLL(Dynamic Link Library)とは、動的リンクライブラリの略で、プログラムが実行時に必要な機能を提供する外部のモジュール(独立した機能を持つプログラムの一部)です。DLLは複数のプログラムで共有され、再利用可能なコードを含むことができます。これにより、プログラムのサイズを小さくし、メモリの効率的な使用を可能にします。
DLLの主な特徴
- 再利用性: 一度作成したDLLは、複数のプログラムから利用できます。これにより、同じコードを何度も書く必要がなくなり、開発効率が向上します。
- メモリ効率: DLLはメモリを共有するため、複数のプログラムが同じDLLを使用する場合でも、メモリの無駄遣いを防げます。
- アップデートの容易さ: DLLの更新はDLLファイルを差し替えるだけで済むため、プログラム本体を変更することなく、新機能の追加やバグ修正が可能です。
DLLの使用例
例えば、取引プラットフォームが提供する標準的な機能を超えた特定の処理を行いたい場合、DLLを使用することでその処理を外部モジュールとして実装し、MQL5プログラムから利用することができます。これにより、標準機能を拡張し、より高度な取引ロジックを実装することができます。
MQL_TRADE_ALLOWED
MQL_TRADE_ALLOWEDは、指定された実行プログラムで取引が許可されているかどうかを示します。取引の許可がある場合はtrueを返し、許可されていない場合はfalseを返します。この情報は、エキスパートアドバイザーやスクリプトが自動的に取引を行う際に、取引の可否を確認するために使用されます。
Type: bool型
MQL_SIGNALS_ALLOWED
MQL_SIGNALS_ALLOWEDは、指定された実行プログラムでシグナルの変更が許可されているかどうかを示します。シグナルの変更が許可されている場合はtrueを返し、許可されていない場合はfalseを返します。この情報は、シグナルを使用するエキスパートアドバイザーやスクリプトが、シグナルの設定を変更できるかどうかを判断するために使用されます。
Type: bool型
シグナルとは?
シグナルは、取引戦略に基づいて生成される売買のサインを表すもので、トレーダーが市場で取引を行う際の参考として利用されます。MQL5やMT5(MetaTrader5)において、シグナルは以下のような仕組みを担っています。
- シグナルプロバイダー: シグナルプロバイダーは、特定の取引戦略に基づいて取引シグナルを生成し、公開します。このプロバイダーは専門的なトレーダーやアルゴリズムを使用してシグナルを生成します。
- シグナル購読者: トレーダーは、シグナルプロバイダーが提供するシグナルを購読することができます。購読者は、プロバイダーの取引シグナルに基づいて自動的に取引を行うことができます。これにより、自分自身で市場を分析する手間を省くことができます。
- 自動取引: シグナルを購読すると、MT5プラットフォームは自動的にシグナルを受信し、購読者の取引アカウントでシグナルに基づいた注文を実行します。このプロセスは完全に自動化されており、トレーダーが手動で取引を行う必要がありません。
- シグナルの評価: トレーダーは、シグナルプロバイダーの過去のパフォーマンスを評価し、信頼性や収益性を判断して購読を決定します。MT5プラットフォームでは、シグナルプロバイダーの取引履歴やパフォーマンス統計を確認することができます。
MQL_DEBUG
MQL_DEBUGは、デバッグモードを示すフラグです。このフラグは、現在の実行プログラムがデバッグモードで動作しているかどうかを示します。デバッグモードである場合はtrueを返し、そうでない場合はfalseを返します。この情報は、プログラムの動作状態を把握し、適切なデバッグ作業を行うために重要です。
Type: bool型
デバッグモードとは?
デバッグモードは、プログラムの動作を詳細に監視し、不具合やエラーを発見・修正するための特別なモードです。開発者はデバッグモードを利用して、プログラムの実行中に変数の値を確認したり、ステップ実行を行ったりすることができます。これにより、プログラムの挙動を詳しく調べ、問題箇所を特定しやすくなります。
デバッグモードの主な特徴
- ステップ実行: プログラムを1行ずつ実行し、その過程で変数の値やプログラムの状態を確認できます。これにより、特定の行でどのような処理が行われているのかを詳細に把握できます。
- ブレークポイント: プログラムの特定の位置で実行を一時停止するためのマークを設定できます。ブレークポイントを利用することで、特定の条件が満たされたときにのみプログラムを停止し、詳細な調査が可能になります。
- 変数の監視: プログラム実行中の変数の値をリアルタイムで監視できます。これにより、予期しない値の変化やエラーの原因を突き止めることができます。
デバッグモードの使用例
デバッグモードは、特にプログラムの開発中やテスト中に重要です。例えば、エキスパートアドバイザーを開発する際に、特定の条件下で取引が正しく行われているかを確認するためにデバッグモードを使用することができます。デバッグモードでプログラムを実行し、ステップ実行やブレークポイントを活用して、取引ロジックの正当性を検証します。
MQL_PROFILER
MQL_PROFILERは、プログラムがコードプロファイリングモードで動作していることを示すフラグです。このフラグは、プロファイリングモードである場合にtrueを返し、そうでない場合はfalseを返します。プロファイリングモードは、プログラムのパフォーマンスを詳細に分析するために使用されます。
Type: bool型
プロファイリングモードとは?
プロファイリングモードとは、プログラムの実行時におけるパフォーマンスを測定し、特定のコードの実行にかかる時間やリソースの消費量を分析するプロセスです。これにより、プログラムのボトルネックや最適化可能な箇所を特定できます。
プロファイリングモードの主な特徴
- 実行時間の測定: 各関数やコードブロックの実行時間を詳細に測定します。これにより、どの部分が最も時間を要しているかを把握できます。
- リソース使用量の分析: メモリやCPUの使用量を監視し、特定の処理がどれだけのリソースを消費しているかを確認します。
- パフォーマンスのボトルネック特定: プログラムのどの部分がパフォーマンスの低下を引き起こしているかを特定し、最適化の対象を明確にします。
MQL_TESTER
MQL_TESTERは、テスタプロセスを示すフラグです。このフラグは、現在の実行プログラムがMetaTrader5のストラテジーテスターで実行されているかどうかを示します。テスタプロセスで実行されている場合はtrueを返し、そうでない場合はfalseを返します。この情報は、プログラムがテスト環境で動作しているかどうかを判断するために使用されます。
Type: bool型
ストラテジーテスターとは?
ストラテジーテスターとは、MetaTrader5に搭載されているツールで、エキスパートアドバイザーや取引戦略を過去の市場データを使用してテストするための機能です。これにより、過去のデータを基にしたバックテスト(取引戦略の過去の市場データに基づく検証)を行い、取引戦略の有効性やパフォーマンスを評価することができます。
MQL_FORWARD
MQL_FORWARDは、プログラムがフォワードテストプロセスで実行されていることを示すフラグです。このフラグは、現在の実行プログラムがMetaTrader5のフォワードテストモードで動作している場合にtrueを返し、そうでない場合はfalseを返します。この情報は、プログラムがフォワードテスト環境で動作しているかどうかを判断するために使用されます。
Type: bool型
MetaTrader 5のフォワードテストモード
MetaTrader5のフォワードテストモードは、取引戦略を過去のデータと将来のデータに基づいて検証する機能です。バックテスト(過去の市場データに基づく検証)に加えて、フォワードテストを行うことで、戦略のパフォーマンスをより現実的に評価することができます。
フォワードテストモードでは、以下の手順で取引戦略を検証します:
- 過去のデータでバックテストを実行:
まず、指定された期間の過去のデータを使用して取引戦略のバックテストを実行します。このステップで、戦略が過去の市場条件でどのように機能したかを評価します。 - フォワード期間の設定:
バックテストの後、テスト期間をフォワード期間とバックテスト期間に分割します。フォワード期間は、バックテストが終了した後の将来のデータに基づいて設定されます。 - フォワードテストの実行:
フォワード期間に移行し、実際の市場条件に基づいて取引戦略をテストします。これにより、戦略が過去のデータだけでなく、現実の市場環境でも有効かどうかを確認できます。
MT5のストラテジーテスターにおけるフォワードテストのやり方
- MetaTrader5の起動:
MetaTrader5を起動し、メインメニューの「ツール」から「ストラテジーテスター」を選択します。 - エキスパートアドバイザーの選択:
テストしたいエキスパートアドバイザーを選択します。 - 設定の構成:
ストラテジーテスターウィンドウで、テストするシンボル(通貨ペアなど)と期間を設定します。 - フォワードテストの有効化:
テストパラメータの設定で、「フォワードテスト」を有効にします。フォワードテストの期間を選択し、全体のテスト期間のうちどの部分をフォワードテストに割り当てるかを指定します。 - テストの実行:
「スタート」ボタンをクリックしてテストを開始します。ストラテジーテスターは、指定されたバックテスト期間とフォワードテスト期間に基づいて取引戦略を評価します。 - 結果の分析:
テストが終了すると、ストラテジーテスターはバックテストとフォワードテストの結果を表示します。これにより、取引戦略が過去のデータおよび将来のデータでどのように機能するかを比較し、評価することができます。
フォワードテストを行うことで、取引戦略が過去のデータだけでなく、実際の市場条件でも有効であるかを確認することができ、戦略の信頼性を高めることができます。
MQL_OPTIMIZATION
MQL_OPTIMIZATIONは、最適化プロセスを示すフラグです。このフラグは、現在の実行プログラムがMetaTrader5のストラテジーテスターで最適化モードで動作している場合にtrueを返し、そうでない場合はfalseを返します。この情報は、プログラムが最適化環境で動作しているかどうかを判断するために使用されます。
Type: bool型
最適化モードとは?
MetaTrader5の最適化モードは、取引戦略のパフォーマンスを最大化するために、異なるパラメータセットを試行して最適な組み合わせを見つけるプロセスです。最適化を行うことで、取引戦略がさまざまな市場条件でどのように機能するかを評価し、最良のパフォーマンスを提供する設定を見つけることができます。
MT5のストラテジーテスターにおける最適化のやり方
- MetaTrader5の起動:
MetaTrader5を起動し、メインメニューの「ツール」から「ストラテジーテスター」を選択します。 - エキスパートアドバイザーの選択:
最適化したいエキスパートアドバイザーを選択します。 - 設定の構成:
ストラテジーテスターウィンドウで、テストするシンボル(通貨ペアなど)と期間を設定します。 - 最適化の有効化:
テストパラメータの設定で、「最適化」を有効にします。この設定により、異なるパラメータの組み合わせを試行し、最適なものを探すことができます。 - パラメータの設定:
「入力パラメータ」タブで、最適化するパラメータとその範囲を設定します。これにより、ストラテジーテスターは指定された範囲内でパラメータの組み合わせを試行します。 - テストの実行:
「スタート」ボタンをクリックして最適化を開始します。ストラテジーテスターは、指定されたパラメータの組み合わせをすべて試行し、その結果を評価します。 - 結果の分析:
最適化が終了すると、ストラテジーテスターは各パラメータセットの結果を表示します。これにより、取引戦略のパフォーマンスが最も良好であったパラメータセットを特定し、選択することができます。
最適化モードを使用することで、取引戦略のパラメータを調整し、さまざまな市場条件で最高のパフォーマンスを発揮する設定を見つけることができます。これにより、戦略の有効性を向上させ、リスクとリターンのバランスを最適化することができます。
MQL_VISUAL_MODE
MQL_VISUAL_MODEは、ビジュアルテストモードプロセスを示すフラグです。このフラグは、現在の実行プログラムがMetaTrader5のビジュアルテストモードで動作している場合にtrueを返し、そうでない場合はfalseを返します。この情報は、プログラムが視覚的にデータを確認できる環境で動作しているかどうかを判断するために使用されます。
Type: bool型
ビジュアルテストモードとは?
MetaTrader5のビジュアルテストモードは、取引戦略を過去のデータに基づいて視覚的に検証するための機能です。ビジュアルテストモードを使用すると、取引のエントリーポイントやエグジットポイント、価格の変動などをチャート上でリアルタイムに確認することができます。これにより、取引戦略の動作を詳細に観察し、戦略の有効性を視覚的に評価することができます。
MQL_FRAME_MODE
MQL_FRAME_MODEは、エキスパートアドバイザーが最適化結果のフレーム収集モードで動作していることを示すフラグです。このフラグは、現在の実行プログラムがフレーム収集モードで動作している場合にtrueを返し、そうでない場合はfalseを返します。この情報は、プログラムがフレーム収集モードで動作しているかどうかを判断するために使用されます。
Type: bool型
フレーム収集モードとは?
フレーム収集モードは、取引戦略の最適化プロセスにおいて、各パラメータセットのパフォーマンスを評価するための詳細なデータ(フレーム)を収集するモードです。このモードでは、各テスト実行の詳細な結果が収集され、最適化の効率を高めるために使用されます。
フレーム収集モードの特徴
- 詳細なパフォーマンスデータ: フレーム収集モードでは、各パラメータセットの実行結果に関する詳細なデータが収集されます。これには、取引回数、勝率、利益率などのパフォーマンス指標が含まれます。
- 効率的な最適化: フレーム収集モードを使用することで、最適化プロセスの効率が向上します。詳細なデータを基に、最適なパラメータセットを迅速に特定することができます。
- 比較分析: 収集されたフレームデータを比較分析することで、取引戦略の強みや弱みを明確にし、戦略の改善点を見つけることができます。
MQL_LICENSE_TYPE
MQL_LICENSE_TYPEは、EX5モジュール(MetaTrader5で使用される実行可能なプログラム)のライセンスの種類を示します。ライセンスの種類は、MQL5プログラムがどのようなライセンス条件で実行されているかを表します。このフラグは、現在の実行プログラムのライセンスタイプを特定するために使用されます。
Type: ENUM_LICENSE_TYPE
ENUM_LICENSE_TYPE
ENUM_LICENSE_TYPEは、MQL5プログラムのライセンスの種類を表す列挙型です。以下に、各識別子について説明します。
LICENSE_DEMO
LICENSE_DEMOは、プログラムがデモライセンスで実行されていることを示します。デモライセンスは、プログラムを試用するためのもので、通常は機能が制限されています。このライセンスは、商用利用や本番環境での利用を想定していません。
LICENSE_FULL
LICENSE_FULLは、プログラムがフルライセンスで実行されていることを示します。フルライセンスは、プログラムのすべての機能を制限なく利用できるライセンスです。商用利用や本番環境での使用が許可されています。
LICENSE_FREE
LICENSE_FREEは、プログラムがフリーライセンスで実行されていることを示します。フリーライセンスは、無料で利用できるライセンスです。機能に制限がある場合もありますが、一般的には広く利用できるように設計されています。
LICENSE_TIME
LICENSE_TIMEは、プログラムが期限付きライセンスで実行されていることを示します。期限付きライセンスは、特定の期間のみ利用できるライセンスです。期間が終了すると、プログラムの使用が制限されるか、完全に停止します。
MQL_STARTED_FROM_CONFIG
MQL_STARTED_FROM_CONFIGは、スクリプトまたはエキスパートアドバイザー(EA)が設定ファイルのStartUpセクションから起動された場合にtrueを返すフラグです。このフラグは、プログラムがMetaTrader5ターミナルの起動時に設定ファイルを通じて自動的に実行されるかどうかを示します。
Type: bool型
設定ファイルとは?
設定ファイル(configファイル)とは、MetaTrader5ターミナルの起動時に使用される構成情報を含むファイルです。このファイルには、ターミナルの動作に関する設定や、特定のスクリプトやエキスパートアドバイザーを自動的に起動するための情報が含まれています。
StartUpセクションとは?
StartUpセクションは、設定ファイル内の特定のセクションで、MetaTrader5ターミナルの起動時に実行されるスクリプトやエキスパートアドバイザーを指定する部分です。このセクションに記述されたプログラムは、ターミナルの起動時に自動的に実行されます。