次にマクロを用いて、エントリールールの定義に使われている移動平均線の算出日数を最適化してみましょう。
プロシージャ名は、「OPTIMIZE_CONTUOR」です。

マクロの作業内容と作業手順は次の通りです。
1.セルを指定したとおりに変化させ、そのつど返ってくる計算結果をシート「等高線」に張り付ける。
2.等高線に張り付けた計算結果から等高線グラフを描く

では、このマクロの書き換え方を解説いたします。
「OPTIMIZE_CONTUOR」のコードの一部をご覧ください。

optmstart_a = 1
optmstart_b = 10
optmend_a = 9

optmend_b = 20
stepnum_a = 1
stepnum_b = 1
With shtestima

'変数を変化させる範囲
For b = optmstart_b To optmend_b Step stepnum_b
For a = optmstart_a To optmend_a Step stepnum_a
 
'変数のセット
.Range("a4").Value = a
.Range("a6").Value = b
 
'等高線のシートにパフォーマンスの計算結果を貼り付ける
shtcontour.Cells(m + dRow + 1, l + dCol).Value = shtestima.Range("E10").Value
という箇所があります。
 
最適化をする際に重要になるのは、ほとんどここだけですので、抜粋して意味を解説いたします。
変数の変化する範囲を書き換える方法は次のようになります。
optmstart_a = 1
optmstart_b = 10
optmend_a = 9
optmend_b = 20
という箇所があります。
 
これは、変数aと変数bをそれぞれ「どの値からどの値まで変化させるか」を指定する箇所です。

例えば、短期移動平均線の算出日数を指定する変数aを2から10まで変化させ、長期移動平均線の算出日数を指定する変数bを11から20まで変化させたい場合、
optmstart_a = 2
optmstart_b = 11
optmend_a = 10
optmend_b = 20
 
というように書き換えます。
そして、変化させたい値が大きくなってくると、計算に時間がかかってしまいますので、そのような場合は、「1~20まで5ずつ変化させる」というふうに書き換えることが可能です。
 
その場合は、
stepnum_a = 1
stepnum_b = 1
 
の部分を次のように書き換えます'初期設定では1になっています(。
stepnum_a = 5
stepnum_b = 5
 
こうすることで、計算を素早く終わらせることも可能になります。
そして、変化させたいセルの場所を変えたい場合は次のように書き換えます。
 
'変数のセット
.Range("a4").Value = a
.Range("a6").Value = b
という箇所の
.Range(“a4”)の「a4」を書き換えたいセルの名前にします。
例えば、変数aとして変化させるセルの場所をセルB1にしたいときには、
'変数のセット
.Range("b1").Value = a
.Range("a6").Value = b
というように書き換えます。
そして、最適化の判断を行うために、グラフ化するデータを書き換える場合は、次のように書き換えます。

'等高線のシートにパフォーマンスの計算結果を貼り付ける
shtcontour.Cells(m+dRow + 1, l + dCol).Value = shtestima.Range("e2").Value
 
初期設定では、貼り付けるセルはE2、つまり、損益合計の値になっております。
例えば、ここでRRRを張り付けて評価したいと思った場合、RRRが返されているセルE22を張り付ける必要があるわけですので、
 
'等高線のシートにパフォーマンスの計算結果を貼り付ける
shtcontour.Cells(m+dRow+1, l + dCol).Value = shtestima.Range("e22").Value
と書き換えてください。
 0701_7
↑こうして、シート「等高線」に書きだされた計算結果を基にして描かれる等高線グラフは、新規のシートに描かれます。実際には、そのとき検証シート内でテストされているシステムの最適化の結果が返ります。
 
縦軸のラベルが変数aのパラメーターを表し、横軸が変数bのパラメーターを表します。
 
そしてさらに、このプロシージャでは最適化の結果、最も良いパフォーマンスが出たパラメーターを「評価シート」内の変数エリアに書き込む、という作業まで自動で行われます。
 
しかしながら、パラメーターの選択は、機械的に最大値を返したパラメーターを選択しているだけであるので、過剰な最適化に陥っているリスクがあることに注意してください。最終的にはトレーダー自身が用心する必要があります。