システムトレード用の開発ツールです。エクセルのVBAを駆使して最高のパフォーマンスを目指します。基本は無料
システムトレードをエクセル上で構築する上で、もっとも重要なエクセル関数の一つかも知れません。ぜひ使い方をマスターしましょう。
テクニカル指標をエクセル上で表現するには、セルの参照範囲を必ず指定します。例えば、25日単純平均移動を求めたい場合、25日分の株価データに対応するセルの参照範囲を指定します。

P列の単純移動平均25日が通常良く使う参照範囲の設定の仕方です。先頭の(この場合はP34セル)関数式は
=AVERAGE(I9:I33)
となります。この場合はI9からI33までのセル25個分を参照範囲として指定しました。
Q列も同じ単純移動平均25日を表していますが、こちらはOFFSET関数を使った書き方です。先頭の(この場合はQ34セル)関数式は
=AVERAGE(OFFSET($I33,-1*($Q$30-1),0,$Q$30,1))
となります。
Q30セルで平均する日数を調整します。試しに100日にしてください。グラフの折れ線が2本になるのが確認できると思います。
OFFSET関数のメリットが実感できたと思います。通常の関数式で書いたP列の移動平均を5日に変えてみてください。どちらが簡単で使いやすいかは一目瞭然です。
OFFSET関数はある規準のセルを決めて、そのセルを基準に参照範囲を決めるための関数です。OFFSET関数の引数は、左から、基準セル、行数、列数、高さ、幅となります。例でいうと「$I33」が基準セル、-1*($Q$30-1)が行数、ゼロが列数、$Q$30が高さ、1が幅になります。-1*($Q$30-1)は変数ぽい指定のやり方ですが、定数の25とかでもOKです。ちなみに-1掛けるのは基準セルを元に行をさかのぼりたい時に使う手法です。-1引くのもセル参照でセルの範囲を指定するときに使う手法です。
非常に慣れると使い勝手の良いOFFSET関数なのですが、参照範囲がトレースされないために範囲の確認が出来ないという欠点があります。そのために私はOFFSET関数を使う前は、簡単なVBAのマクロを作って参照範囲を確認できるようにしてから、関数式に組み込みます。VBEを開き、標準モジュールの練習用を開いてください。「OFFSET関数の参照範囲をトレースする」というマクロがあります。それを実行すると参照範囲をVBAが選択してくれます。いろいろ数値や引き数を変えて試してみてください。尚、何も変化がおきない場合はQ30セルの数値を34以下に設定しなおしてください。
さらに理解を深めてもらうために、下記のスクリプト文をコピペして実行してみてください。
VBAで通常のセル範囲を設定する方法です。
Sub 選択範囲1()Range("A1:A10").Select
End Sub
今度はOFFSET関数を使いセルA1を表してみます。A10を基準に行数は-9セル分さかのぼり、列数はそのままなので0、高さはA1のみの指定なので1、幅は変化なしなのでデフォルトで1(0じゃないのに注意、0はエラーになります)。もしくは幅は省略可能です。
Sub 範囲選択2()Range("OFFSET(A10,-9,0,1,1):A10").Select
End Sub
さらにA10の記述を削除して同じ範囲を指定します。OFFSETの「高さ」の引数の変化に注目してください。1から10に代わってます。
Sub 範囲選択3()Range("OFFSET(A10,-9,0,10,1)").Select
End Sub
今回は横への動きは省略しますが、縦の動きの特徴さえ分かれば横の動きも同じです。自身でいろいろ試してください。

投稿者 システムトレーダー壱式 : 2008年04月17日 20:58
このエントリーのトラックバックURL:
http://systemtrader.info/cgi/mt/mt-tb.cgi/20