システムトレードのためのエクセル講座第4回 パラメーターの変更
皆さんはエクセルをつかって最適化を行えることはご存知でしたか?
実は、可能なんです。今回はそのことに触れていきます。
これを知るとシステム構築にすごい幅が出ると思いますので、ご存じでなかった方は是非覚えておいてください。
それでは講義はじめましょう。前回のエクセルシートをお開きください。
システムトレードのためのエクセル講座
第4回
パラメーターの変更
簡易コード表
1, C1にヒゲ乖離幅と打ち込む
2, D1に0.4と記述
3,C1に時間と記述
4,D2に1と記述
5, G10を=IF(AND(F10>C10,D10-F10>D$1),1,"")に変更。
6, G10セルを選択し、右下にカーソルを合わせ黒十時になるのを確認し、ダブルクリックしてコピー
7, H10を=IF(AND(F10<C10,F10-E10>D$1),1,"")に変更。
8, H10セルを選択し、右下にカーソルを合わせ黒十時になるのを確認し、ダブルクリックしてコピー
9,I10に=IF(G10=1,OFFSET(C11,D$2,0)-C11,0) と修正
10, I10セルを選択し、右下にカーソルを合わせ黒十時になるのを確認し、ダブルクリックしてコピー
11,J10に=IF(H10=1,C11-OFFSET(C11,D$2,0),0)と修正
12, J10セルを選択し、右下にカーソルを合わせ黒十時になるのを確認し、ダブルクリックしてコピー
パラメーターの変更
ヒゲの長さを変える。
前々回の講義で、ドル円やユーロ円で多市場間テストをした時に、通貨ごとにひげの乖離幅を変えていました。 その時の手順は以下のようなものでした。
1,セルをいじってパラメーター(ヒゲの乖離幅)を変更し
2,他のセルにも適用させるように下まで全コピーを実行する
これだと少し不便ですね。
そこで今回は絶対参照を使ってその不便さを解消します。
まずはコードを次のように修正してください。
1, C1にヒゲ乖離幅と打ち込む
2, D1に0.4と記述
3, G10を=IF(AND(F10>C10,D10-F10>D$1),1,"")に変更。
4, G10セルを選択し、右下にカーソルを合わせ黒十時になるのを確認したらダブルクリックしてコピー
5, H10を=IF(AND(F10<C10,F10-E10>D$1),1,"")に変更。
6, H10セルを選択し、右下にカーソルを合わせ黒十時になるのを確認したらダブルクリックしてコピー
解説
3, G10を=IF(AND(F10>C10,D10-F10>D$1),1,"")に変更。
ここででてくる$ですが、これはセルを絶対参照させたい時に使う記号です。
具体的に説明しますので、コピーされたセルを見ていってください。
G10 =IF(AND(F10>C10,D10-F10>D$1),1,"")
G11 =IF(AND(F11>C11,D11-F11>D$1),1,"")
G12 =IF(AND(F12>C12,D12-F12>D$1),1,"")
G13 =IF(AND(F13>C13,D13-F13>D$1),1,"")
$をつけた後の数字1が自動的に2,3,4のように変わっていないことに注目してください。
第一回目の講義で、コピーをする時に、エクセルは相対的にコピーを実行するとお話したことを覚えていますでしょうか。
その結果F10、F11、F12、F13というようにそれぞれのセルに対応した数値に変更され、記述した式が全てのセルで同じように計算させることができるのでしたね。
しかし、セルを相対的にコピーしたくない時があります。
そのような時に使うのが$です。
$は絶対参照を指定する時に使う記号です。これを使うことで、その次の数値や記号を、相対的ではなく、固定してコピーできるようになります。
それを抑えた上でもう一回コードを確認しましょう。
=IF(AND(F10>C10,D10-F10>D$1),1,"")
D10-F10>D$1
ってなんでしょうか。
これは高値と安値の差がD$1以上だったら、という意味になります。
D$1を見てください。先ほど0.4を入れておきました。D$1=0.4 なので
D10-F10>0.4
になります。結局前の式と変わらないわけですね。
しかし今回違うのは、高値と安値の差について、すべてのセルの式がD1を参照にしているという点です。
あとは同じなので、解説は以上で終わります。
実験
さてそれでは早速D1をいじってみましょう。
とその前に、もともとヒゲの幅0.4円の時の損益曲線と分析データーをみてみましょう。


次にD1を0.2にしてみてください。↓になります


だいぶ成績が落ちてしまいましたね。これでは手数料負けしてしまいます。
次は思い切ってD1を1にしてみてください。以下のようになります。


PFが2を超えました!!
それでも売買回数が51回と少ないので信頼度は引くそうです。
もし自動で更新されないようでしたら数式タブの計算方法の設定で、再計算が自動になっているかどうかを確認してください。
さて今回は、最適化のステップにいくために、もう一つパラメーターを作りたいと思います。
手仕舞い時間の変更
今までの方法だと、ヒゲが出たら次の始値でエントリーし、一時間後(エントリーの次のローソク足の始値)にイグジッドすることになります。
それがもし2時間後、3時間後にイグジッドしたら成績はどのようにかわるか興味はありませんか?
・・余り興味はないかもしれませんが、最適化のステップのために、コードを記述していきましょう!
1,C1に時間と記述
2,D2に1と記述
3,I10に=IF(G10=1,OFFSET(C11,D$2,0)-C11,0) と修正
4, I10セルを選択し、右下にカーソルを合わせ黒十時になるのを確認したらダブルクリックしてコピー
5,J10に=IF(H10=1,C11-OFFSET(C11,D$2,0),0)と修正
6, J10セルを選択し、右下にカーソルを合わせ黒十時になるのを確認したらダブルクリックしてコピー
まずは今回初めて出てきたOFFSET関数から解説します。
OFFSET
指定したセルから指定した行、列に移動させたセルの値を入力します。
結構大事な関数なのでしっかり押さえておきましょう。
記述式: =OFFSET(参照,行数,列数)
具体例:=OFFSET(K10,4,3)
図を見てください。K10から下に4行左に3列移動させたセルの値が入力されていますね。

それではコードを解説します。
3,I10に=IF(G10=1,OFFSET(C11,D$2,0)-C11,0) と修正
もともと、C12-C11だったものが、OFFSET(C11,D$2,0)-C11に変わりました。
C11からD$2で指定された数列下にいって、左に0行動かしたセルの値から、C11を引くことになります。
列は移動しませんので、D$2で指定した数値だけ下にいく=決済までの時間が増えるということになります。
4,も原理は同じですので解説は省きます。
実験
さてそれではD2をいじってみましょう。
2日後に決済したらどうなるかという遊び心で48に変更してみてください。(乖離幅は0.4にしてあります。)


累計損益が154円を突破しています!要は15400Pipsです!
といっても、赤い丸のところから運用を開始していたとしたら最大損失額である124円程負けていることになりますので、怖くてとても運用を任せられません。
今回作ったパラメーターであるヒゲの長さと、決済時間の最適かつ、信頼のできる組み合わせをみつけるにはどうすればよいでしょうか。
そのやり方は・・・・次回取り上げたいと思います。
本来は最適化をもっと早く取り上げたかったのですが、記事の進み具合が以外と遅くて辿りつけませんでした。申し訳ありません。
明日最適化の方法についてUPしますので、興味をお持ちの方は楽しみにしていてください。
最近ブログの誤訳や間違いを指摘して頂けることが増えて嬉しいです。
もし質問や、よくわからないことがありましたら掲示板やフォームをご利用なさってお聞きくださいね。
今回も最後までお読み頂きありがとうございました。
もしよろしければ、ブログランキングの応援よろしくお願い致します。
実は、可能なんです。今回はそのことに触れていきます。
これを知るとシステム構築にすごい幅が出ると思いますので、ご存じでなかった方は是非覚えておいてください。
それでは講義はじめましょう。前回のエクセルシートをお開きください。
システムトレードのためのエクセル講座
第4回
パラメーターの変更
簡易コード表
1, C1にヒゲ乖離幅と打ち込む
2, D1に0.4と記述
3,C1に時間と記述
4,D2に1と記述
5, G10を=IF(AND(F10>C10,D10-F10>D$1),1,"")に変更。
6, G10セルを選択し、右下にカーソルを合わせ黒十時になるのを確認し、ダブルクリックしてコピー
7, H10を=IF(AND(F10<C10,F10-E10>D$1),1,"")に変更。
8, H10セルを選択し、右下にカーソルを合わせ黒十時になるのを確認し、ダブルクリックしてコピー
9,I10に=IF(G10=1,OFFSET(C11,D$2,0)-C11,0) と修正
10, I10セルを選択し、右下にカーソルを合わせ黒十時になるのを確認し、ダブルクリックしてコピー
11,J10に=IF(H10=1,C11-OFFSET(C11,D$2,0),0)と修正
12, J10セルを選択し、右下にカーソルを合わせ黒十時になるのを確認し、ダブルクリックしてコピー
パラメーターの変更
ヒゲの長さを変える。
前々回の講義で、ドル円やユーロ円で多市場間テストをした時に、通貨ごとにひげの乖離幅を変えていました。 その時の手順は以下のようなものでした。
1,セルをいじってパラメーター(ヒゲの乖離幅)を変更し
2,他のセルにも適用させるように下まで全コピーを実行する
これだと少し不便ですね。
そこで今回は絶対参照を使ってその不便さを解消します。
まずはコードを次のように修正してください。
1, C1にヒゲ乖離幅と打ち込む
2, D1に0.4と記述
3, G10を=IF(AND(F10>C10,D10-F10>D$1),1,"")に変更。
4, G10セルを選択し、右下にカーソルを合わせ黒十時になるのを確認したらダブルクリックしてコピー
5, H10を=IF(AND(F10<C10,F10-E10>D$1),1,"")に変更。
6, H10セルを選択し、右下にカーソルを合わせ黒十時になるのを確認したらダブルクリックしてコピー
解説
3, G10を=IF(AND(F10>C10,D10-F10>D$1),1,"")に変更。
ここででてくる$ですが、これはセルを絶対参照させたい時に使う記号です。
具体的に説明しますので、コピーされたセルを見ていってください。
G10 =IF(AND(F10>C10,D10-F10>D$1),1,"")
G11 =IF(AND(F11>C11,D11-F11>D$1),1,"")
G12 =IF(AND(F12>C12,D12-F12>D$1),1,"")
G13 =IF(AND(F13>C13,D13-F13>D$1),1,"")
$をつけた後の数字1が自動的に2,3,4のように変わっていないことに注目してください。
第一回目の講義で、コピーをする時に、エクセルは相対的にコピーを実行するとお話したことを覚えていますでしょうか。
その結果F10、F11、F12、F13というようにそれぞれのセルに対応した数値に変更され、記述した式が全てのセルで同じように計算させることができるのでしたね。
しかし、セルを相対的にコピーしたくない時があります。
そのような時に使うのが$です。
$は絶対参照を指定する時に使う記号です。これを使うことで、その次の数値や記号を、相対的ではなく、固定してコピーできるようになります。
それを抑えた上でもう一回コードを確認しましょう。
=IF(AND(F10>C10,D10-F10>D$1),1,"")
D10-F10>D$1
ってなんでしょうか。
これは高値と安値の差がD$1以上だったら、という意味になります。
D$1を見てください。先ほど0.4を入れておきました。D$1=0.4 なので
D10-F10>0.4
になります。結局前の式と変わらないわけですね。
しかし今回違うのは、高値と安値の差について、すべてのセルの式がD1を参照にしているという点です。
あとは同じなので、解説は以上で終わります。
実験
さてそれでは早速D1をいじってみましょう。
とその前に、もともとヒゲの幅0.4円の時の損益曲線と分析データーをみてみましょう。


次にD1を0.2にしてみてください。↓になります


だいぶ成績が落ちてしまいましたね。これでは手数料負けしてしまいます。
次は思い切ってD1を1にしてみてください。以下のようになります。


PFが2を超えました!!
それでも売買回数が51回と少ないので信頼度は引くそうです。
もし自動で更新されないようでしたら数式タブの計算方法の設定で、再計算が自動になっているかどうかを確認してください。
さて今回は、最適化のステップにいくために、もう一つパラメーターを作りたいと思います。
手仕舞い時間の変更
今までの方法だと、ヒゲが出たら次の始値でエントリーし、一時間後(エントリーの次のローソク足の始値)にイグジッドすることになります。
それがもし2時間後、3時間後にイグジッドしたら成績はどのようにかわるか興味はありませんか?
・・余り興味はないかもしれませんが、最適化のステップのために、コードを記述していきましょう!
1,C1に時間と記述
2,D2に1と記述
3,I10に=IF(G10=1,OFFSET(C11,D$2,0)-C11,0) と修正
4, I10セルを選択し、右下にカーソルを合わせ黒十時になるのを確認したらダブルクリックしてコピー
5,J10に=IF(H10=1,C11-OFFSET(C11,D$2,0),0)と修正
6, J10セルを選択し、右下にカーソルを合わせ黒十時になるのを確認したらダブルクリックしてコピー
まずは今回初めて出てきたOFFSET関数から解説します。
OFFSET
指定したセルから指定した行、列に移動させたセルの値を入力します。
結構大事な関数なのでしっかり押さえておきましょう。
記述式: =OFFSET(参照,行数,列数)
具体例:=OFFSET(K10,4,3)
図を見てください。K10から下に4行左に3列移動させたセルの値が入力されていますね。

それではコードを解説します。
3,I10に=IF(G10=1,OFFSET(C11,D$2,0)-C11,0) と修正
もともと、C12-C11だったものが、OFFSET(C11,D$2,0)-C11に変わりました。
C11からD$2で指定された数列下にいって、左に0行動かしたセルの値から、C11を引くことになります。
列は移動しませんので、D$2で指定した数値だけ下にいく=決済までの時間が増えるということになります。
4,も原理は同じですので解説は省きます。
実験
さてそれではD2をいじってみましょう。
2日後に決済したらどうなるかという遊び心で48に変更してみてください。(乖離幅は0.4にしてあります。)


累計損益が154円を突破しています!要は15400Pipsです!
といっても、赤い丸のところから運用を開始していたとしたら最大損失額である124円程負けていることになりますので、怖くてとても運用を任せられません。
今回作ったパラメーターであるヒゲの長さと、決済時間の最適かつ、信頼のできる組み合わせをみつけるにはどうすればよいでしょうか。
そのやり方は・・・・次回取り上げたいと思います。
本来は最適化をもっと早く取り上げたかったのですが、記事の進み具合が以外と遅くて辿りつけませんでした。申し訳ありません。
明日最適化の方法についてUPしますので、興味をお持ちの方は楽しみにしていてください。
最近ブログの誤訳や間違いを指摘して頂けることが増えて嬉しいです。
もし質問や、よくわからないことがありましたら掲示板やフォームをご利用なさってお聞きくださいね。
今回も最後までお読み頂きありがとうございました。
もしよろしければ、ブログランキングの応援よろしくお願い致します。
