FrameInputs関数の働き・役割
FrameInputs関数は、ストラテジーテスターでの特定の最適化パスに対応する入力パラメータを取得するために使用されます。最適化パスとは、最適化の過程で異なるパラメータ設定ごとに実行される単位を指します。この関数を使用すると、指定されたパス番号に基づいたパラメータを文字列形式の配列として受け取ることができます。
FrameInputs関数の引数について
bool FrameInputs(
ulong pass, // 最適化でのパスの数
string& parameters[], // 「parameterN=valueN」形式を持つ文字列の配列
uint& parameters_count // パラメータ数
);
FrameInputs関数には、3つの引数があります。それぞれの役割は以下の通りです。
pass
種類:ulong
説明:ストラテジーテスターでの最適化パスを指定します。この引数には、最適化の過程での特定のパス番号が渡され、その番号に対応するパラメータ情報が取得されます。
parameters
種類:string&(参照型の文字列配列)
説明:関数の実行後に「parameterN=valueN」形式でパラメータが格納される文字列配列です。たとえば、「リスク」と「取引量」というパラメータが設定されている場合、parameters配列には「parameter1=リスクの値」「parameter2=取引量の値」のようにパラメータ名と値が含まれます。
parameters_count
種類:uint&(参照型の整数)
説明:parameters配列に格納されたパラメータの総数が格納されます。取得されたパラメータの要素数を確認するために使用されます。
FrameInputs関数の戻り値について
FrameInputs関数は、処理が成功した場合にtrueを返し、失敗した場合にfalseを返します。trueが返された場合、指定されたパスに対応する入力パラメータがparameters配列に格納され、parameters_countにその要素数が設定されています。
一方で、falseが返された場合はエラーが発生している可能性があり、この場合はGetLastError関数を使用してエラーコードを取得することで、詳細なエラー情報を確認できます。このように、関数の成功・失敗に応じてエラー処理を行うことで、より確実にパラメータ取得の状況を把握できます。
FrameInputs関数を使う際の注意点
parameters配列は関数実行後に設定され、呼び出し前の初期化は不要です。他の処理で再利用する際は、内容が上書きされるため、必要に応じて別の変数へコピーして保持します。
parameters_countにはparameters配列の要素数が格納されているため、これを利用してループ処理を行い、パラメータにアクセスします。
FrameInputs関数を使ったサンプルコード
以下は、FrameInputs関数を使用して、特定の最適化パスのパラメータを取得し、それらをエキスパートログに出力するサンプルコードです。
// OnStart関数はスクリプトが開始された際に自動的に呼び出されます
void OnStart()
{
// 最適化パス番号を指定します。ここでは例としてパス番号1を使用しています。
ulong pass_number = 1;
// parameters配列には、指定したパスに対応するパラメータ名と値が格納されます。
// 文字列配列として定義しますが、関数実行後に内容が設定されます。
string parameters[];
// parameters_count変数には、parameters配列の要素数が格納されます。
// これにより、取得されたパラメータの数を確認できます。
uint parameters_count = 0;
// FrameInputs関数を使用して、指定したパスの入力パラメータを取得します。
// 戻り値がtrueの場合は成功、falseの場合はエラーが発生しています。
if(FrameInputs(pass_number, parameters, parameters_count))
{
// パラメータの取得に成功した場合の処理
// 取得したパラメータ情報をエキスパートログに出力します
// parameters_countを使用して、全てのパラメータにアクセスするためのループを構成します
for(uint i = 0; i < parameters_count; i++)
{
// 各パラメータをエキスパートログに出力します
// parameters[i]には「parameterN=valueN」形式でパラメータが格納されています
Print("パラメータ ", i + 1, ": ", parameters[i]);
}
}
else
{
// パラメータの取得に失敗した場合のエラーメッセージ
// GetLastError関数を使用してエラーコードを取得し、エキスパートログに出力します
Print("パラメータの取得に失敗しました。エラーコード: ", GetLastError());
}
}
サンプルコードに使われた関数や文法要素の簡単な解説
このサンプルコードでは、FrameInputs関数を使用して特定の最適化パスのパラメータを取得し、それらをエキスパートログに出力しています。以下に、コード中で使用されている関数や文法要素について詳しく解説します。
OnStart関数
OnStart関数は、MQL5でスクリプトが実行されるときに最初に自動的に呼び出される関数です。この関数はスクリプトの開始処理を行うために使われ、今回のサンプルコードではFrameInputs関数を呼び出してパラメータ取得やエキスパートログ出力の処理を行っています。スクリプトが実行されるたびに、OnStart関数内のコードが順番に実行されます。
pass_number
pass_numberは最適化パスを指定するための変数です。ここで指定されたパス番号に基づき、FrameInputs関数は対応するパラメータ情報を取得します。たとえば、pass_numberに「1」を設定すると、最適化で1番目のパスに対応するパラメータを取得します。
parameters配列
parameters配列は、指定されたパスに対応するパラメータ名と値が格納される文字列配列です。この配列には「parameterN=valueN」の形式でパラメータが格納され、FrameInputs関数の呼び出し後に内容が設定されます。コード内では、取得したパラメータ情報をエキスパートログに出力するために使用されています。
parameters_count
parameters_countは、parameters配列の要素数(パラメータの数)を保持するための変数です。FrameInputs関数が呼び出された後、この変数にはparameters配列内の項目数が格納され、すべてのパラメータにアクセスする際に役立ちます。
FrameInputs関数
FrameInputs関数は、指定したパス番号に基づいて最適化パスの入力パラメータを取得する関数です。この関数は3つの引数を受け取り、成功した場合はtrue、失敗した場合はfalseを返します。戻り値がfalseである場合は、GetLastError関数を使用してエラーの詳細を確認します。
forループ
forループは、parameters配列内の各パラメータに順次アクセスするために使用されています。ループはparameters_count変数を基準に構成され、配列の全要素をエキスパートログに出力します。
Print関数
Print関数は、指定されたメッセージをエキスパートログに出力するために使用されます。このサンプルコードでは、取得したパラメータの情報やエラーメッセージをエキスパートログに表示するために用いられています。
GetLastError関数
GetLastError関数は、最後に発生したエラーコードを取得するための関数です。FrameInputs関数がfalseを返した場合に、この関数を呼び出してエラーコードを取得し、エラーの原因を特定します。このエラーコードはPrint関数を使ってエキスパートログに出力されます。