最適化の結果の操作

FrameFirst

フレーム読み込みのポインタを先頭に移動し、以前に設定したフィルタをリセットします。

bool  FrameFirst();

戻り値

成功の場合は true、それ以外の場合は false 。エラー情報を取得するには、GetLastError() 関数が呼ばれます。

FrameFilter

フレーム読み込みフィルタを設定して、ポインタを先頭に移動します。

bool  FrameFilter(
const string name,        // Public 名称/レベル
long         id            // パブリック ID
);

戻り値

成功の場合は true、それ以外の場合は false 。エラー情報を取得するには、GetLastError() 関数が呼ばれます。

注意事項

最初のパラメータとして空の文字列が渡された場合、フィルタは数値パラメータでのみ機能し、指定された ID を持ったフレームのみが表示されます。2 番目のパラメータが ULONG_MAX の場合、テキストフィルタのみが機能します。

FrameFilter(“”, ULONG_MAX) の呼び出しは FrameFirst() と同一、つまりフィルタを使用しません。

FrameNext

フレームを読んでポインタを次に移動します。この関数には 2 つのバージョンがあります。

1. 1 つの数値を受け取る

bool  FrameNext(
ulong&  pass,      // フレームが追加された最適化でのパスの番号
string&  name,      // Public 名称・レベル
long&    id,        // パブリック ID
double&  value     // 値
);

2. フレームの全てのデータを受け取る

bool  FrameNext(
ulong&  pass,      // フレームが追加された最適化でのパスの番号
string&  name,      // Public 名称・レベル
long&    id,        // パブリック ID
double&  value,    // 値
void&    data[]    // 任意型の配列
);

パラメータ

pass

[out]  ストラテジーテスターーでの最適化のパスの数

name

[out]  識別子の名称

id

[out]  識別子の値

value

[out]  単一の数値

data

[out]  任意型の配列

戻り値

成功の場合は true、それ以外の場合は false 。エラー情報を取得するには、GetLastError() 関数が呼ばれます。

注意事項

2 番目のバージョンの呼び出しでは受信されたデータを data[] 配列で正しく処理する必要があります。

FrameInputs

指定されたパス番号を持つフレームを形成する入力パラメータを受け取ります。

bool  FrameInputs(
ulong    pass,                // 最適化でのパスの数
string&  parameters[],        // 「parameterN=valueN」形式を持つ文字列の配列
uint&    parameters_count    // パラメータ数
);

パラメータ

pass

[in]  ストラテジーテスターーでの最適化のパスの数

parameters

[out]  名称ととパラメータ値の記述のための文字列の配列

parameters_count

[out] parameters[] 配列の要素数

戻り値

成功の場合は true、それ以外の場合は false 。エラー情報を取得するには、GetLastError() 関数が呼ばれます。

注意事項

parameters[] 配列の parameters_count で文字列の数を取得することによって、全てのレコードを通過するループを整理することが出来ます。これにより、エキスパートアドバイザーの指定されたパス数の入力パラメータの値を見つけられます。

FrameAdd

データとフレームを追加します。この関数には 2 つのバージョンがあります。

1. ファイルからのデータの追加

bool  FrameAdd(
const string  name,        // Public 名称・レベル
long          id,          // パブリック ID
double        value,      // 値
const string filename    // データファイル名
);

2. 任意型の配列からのデータの追加

bool  FrameAdd(
const string  name,        // Public 名称・レベル
long          id,          // パブリック ID
double        value,      // 値
const void&   data[]      // 任意型の配列
);

パラメータ

name

[in]  Public フレームラベル。FrameFilter() 関数のフィルタ内で利用出来ます。

id

[in]  public フレーム識別子。FrameFilter() 関数のフィルタ内で利用出来ます。

value

[in]  フレームに書き込む数値。OnTester() 関数でのように単一パスの結果を送信するために使用されます。

filename

[in]  フレームに追加するデータを含むファイルの名称。このファイルは MQL5/Files に位置しなければなりません。

data

[in]  フレームに書き込む任意の型の配列。参照で引き渡されます。

戻り値

成功の場合は true、それ以外の場合は false 。エラー情報を取得するには、GetLastError() 関数が呼ばれます。

ParameterGetRange

ストラテジーテスターでエキスパートアドバイザーを最適化する際に、値範囲のデータを受け取り入力変数のステップを変更します。この関数には 2 つのバージョンがあります。

1. 整数型入力パラメータのデータを受け取る

bool  ParameterGetRange(
const string  name,          // パラメータ(入力変数)名
bool&        enable,        // パラメータ最適化が有効
long&        value,        // パラメータ値
long&        start,        // 初期値
long&        step,          // ステップ変更
long&        stop          // 最終値
);

2. real 型入力パラメータのデータを受け取る

bool  ParameterGetRange(
const string  name,          // パラメータ(入力変数)名
bool&       enable,        // パラメータ最適化が有効
double&      value,        // パラメータ値
double&      start,        // 初期値
double&      step,          // ステップ変更
double&      stop          // 最終値
);

パラメータ

name

[in] 入力変数 ID。これらの変数は、アプリケーションの外部パラメータです。チャート起動中または単一のテスト中での指定が可能です。

enable

[out]  このパラメータがストラテジーテスターで最適化の際に値を列挙するために使用することが出来るというフラグ

value

[out]  パラメータ値

start

[out]  最適化中の初期のパラメータ値

step

[out]  値の列挙中のパラメータ変更ステップ

stop

[out]  最適化中の最終パラメータ値

戻り値

成功の場合は true、それ以外の場合は false 。エラー情報を取得するには、GetLastError() 関数が呼ばれます。

注意事項

この関数は OnTesterInit()、OnTesterPass() 及び OnTesterDeinit() ハンドラ—のみから呼び出されます。これは、エキスパートアドバイザーの入力パラメータ値を受信するために導入され、変動はストラテジーテスターで最適化中に範囲されています。

OnTesterInit()で呼び出された場合、取得されたデータは、任意の入力変数列挙のためのルールのParameterSetRange() 関数を使用しての再定義に使用することが出来ます。そのため、新たな Start、Stop 及び Step 値を設定することができ、ストラテジーテスターの設定にかかわらず、入力パラメータを完全に最適化から除外することも出来ます。なので、エキスパートアドバイザーの重要なパラメータの値に応じて最適化からいくつかのパラメータを除外することによって最適化の際に入力パラメータのエリアを管理することが出来ます。

例:

#property description “Expert Advisor for ParameterGetRange() function demonstration.”
#property description “Should be launched in the optimization mode of the Strategy Tester”
//— 入力パラメータ
input int                 Input1=1;
input double             Input2=2.0;
input bool               Input3=false;
input ENUM_DAY_OF_WEEK   Input4=SUNDAY;

//+——————————————————————+
//| エキスパート初期化に使用される関数                                        |
//+——————————————————————+
int OnInit()
{
//— エキスパートアドバイザーはストラテジーテスター内のみで動作するように設計されている
if(!MQL5InfoInteger(MQL5_OPTIMIZATION))
{
MessageBox(“Should be launched in the optimization mode of the Strategy Tester!”);
//— 事前にエキスパートアドバイザー操作を終了してチャートから削除する
return(INIT_FAILED);
}
//— 初期化が正常に完了した
return(INIT_SUCCEEDED);
}
//+——————————————————————+
//| TesterInit 関数                                                   |
//+——————————————————————+
void OnTesterInit()
{
//— long 型入力パラメータの例
string name=“Input1”;
bool enable;
long par1,par1_start,par1_step,par1_stop;
ParameterGetRange(name,enable,par1,par1_start,par1_step,par1_stop);
Print(“First parameter”);
PrintFormat(“%s=%d  enable=%s  from %d to %d with step=%d”,
name,par1,(string)enable,par1_start,par1_stop,par1_step);
//— double 型入力パラメータの例
name=“Input2”;
double par2,par2_start,par2_step,par2_stop;
ParameterGetRange(name,enable,par2,par2_start,par2_step,par2_stop);
Print(“Second parameter”);
PrintFormat(“%s=%G  enable=%s  from %G to %G with step=%G”,
パブリック               name,par2,(string)enable,par2_start,par2_stop,par2_step);

//— bool 型入力パラメータの例
name=“Input3”;
long par3,par3_start,par3_step,par3_stop;
ParameterGetRange(name,enable,par3,par3_start,par3_step,par3_stop);
Print(“Third parameter”);
PrintFormat(“%s=%s  enable=%s  from %s to %s”,
name,(string)par3,(string)enable,
(string)par3_start,(string)par3_stop);
//— 列挙型入力パラメータの例
name=“Input4”;
long par4,par4_start,par4_step,par4_stop;
ParameterGetRange(name,enable,par4,par4_start,par4_step,par4_stop);
Print(“Fourth parameter”);
PrintFormat(“%s=%s  enable=%s  from %s to %s”,
name,EnumToString((ENUM_DAY_OF_WEEK)par4),(string)enable,
EnumToString((ENUM_DAY_OF_WEEK)par4_start),
EnumToString((ENUM_DAY_OF_WEEK)par4_stop));
}
//+——————————————————————+
//| TesterDeinit 関数                                                |
//+——————————————————————+
void OnTesterDeinit()
{
//— このメッセージは最適化が完了した後に表示されます
Print(__FUNCTION__,” Optimization completed”);
}

ParameterSetRange

ストラテジーテスターでエキスパートアドバイザーを最適化する際に、入力変数値、チェンジステップ、最初と最終の値)の使い方を指定します。この関数には 2 つのバージョンがあります。

1. 整数型入力パラメータの値を指定する

bool  ParameterSetRange(
const string  name,          // パラメータ(入力変数)名
bool         enable,        // パラメータ最適化が有効
long         value,        // パラメータ値
long         start,        // 初期値
long         step,          // ステップ変更
long         stop          // 最終値
);

2. real 型入力パラメータの値を指定する

bool  ParameterSetRange(
const string  name,          // パラメータ(入力変数)名
bool         enable,        // パラメータ最適化が有効
double       value,        // パラメータ値
double       start,        // 初期値
double       step,          // ステップ変更
double       stop          // 最終値
);

パラメータ

name

[in] input または sinput 変数 ID。これらの変数は、アプリケーションの外部パラメータです。このパラメータの値はプログラム起動時に指定することが出来ます。

enable

[in]  こストラテジーテスターで最適化の際に値を列挙するために使用ためにはこのパラメータを有効にします。

value

[in]  パラメータ値

start

[in]  最適化中の初期のパラメータ値

step

[in]  値の列挙中のパラメータ変更ステップ

stop

[in]  最適化中の最終パラメータ値

戻り値

成功の場合は true、それ以外の場合は false 。エラー情報を取得するには、GetLastError() 関数が呼ばれます。

注意事項

この関数はストラテジーテスターから最適化を軌道する際に OnTesterInit() ハンドラからのみ呼ばれます。これは、パラメータの範囲及び変更のステップを指定するために設計されています。ストラテジーテスターの設定にかかわらず、パラメータは完全に最適化から除外することも出来ます。また、最適化プロセスにおけるsinput 修飾子で宣言された変数を使用も可能にします。

ParameterSetRange() 関数を使用すると、最適化から必要な入力パラメータを含むまたは除き、必要な範囲及び変更ステップを設定することにより、その主要なパラメータの値に応じてストラテジーテスターでエキスパートアドバイザーの最適化を管理することが出来ます。

Originally posted 2019-07-30 09:44:04.

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">