トレシズ氏は、イザナミを専門にシステムトレードの開発・公開・販売を行っている人物です。
【引用】坂本タクマ「全シ連」第33話「シストレ界の名医ドクタートレシズ登場!さぁオオウチを治療しよう」 (2016.10.31)
彼のブログに「出来高系指標は有効なのかどうか?」という記事があります。
想像通りではありましたが、
「下落している銘柄の、出来高が増えたところは買い」
というのが正しいということが、検証結果からも実証されています。
年度別の期待値からみても、ある程度全年度におきまして有効なようです。
今回は「出来高系指標」についてバックテスト環境を整えていきます。
トレシズ氏の移動平均乖離率(出来高)手法の有効性検証
上記サイトに書かれている売買ルールをまとめると次のようになっています。
【買いルール】
- 1) 移動平均乖離率(出来高)(50日)が5より大きい
- 2) 移動平均乖離率(終値)(25日)が0より小さい
【手仕舞いルール】
- 1) 翌日売り
これを実現するには「移動平均乖離率(出来高)」を実装する必要があります。
バックテストのコード上でも実現可能ですが、テクニカル手法はできる限り「TIlib.pt」の中に追加したいです。
「TIlib.pt」内に追加できればProtraでグラフ表示が可能となります。
要するに、視覚的な検証が容易になるメリットがあります。
今回の記事では、上記ルールを実現するために、「TIlib.pt」に「移動平均乖離率(出来高)」を実装してみます。
移動平均乖離率(出来高)をライブラリに追加する
「TIlib.pt」内に実装するのは初めてです。
他のコードを見ながら試行錯誤して追加してみました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# Percent difference from Moving Average of Volumes def DiffVolumeMA_new(days) obj = [3] obj[0] = null // previous % difference obj[1] = null // current % difference obj[2] = VolumeMA_new(days) DiffVolumeMA_calc(obj) return obj end def DiffVolumeMA_next(obj) VolumeMA_next(obj[2]) DiffVolumeMA_calc(obj) end def DiffVolumeMA_calc(obj) obj[0] = obj[1] if obj[2][1] obj[1] = 100.0 * ({obj[2][3]}Volume - obj[2][1]) / obj[2][1] end end def DiffVolumeMA_draw(obj, color) VolumeMA_draw(obj, color) end def DiffVolumeMA_value(obj) return obj[1] end |
上記コードに対して、チャートを表示するためのソースコードは次のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
require "Color" require "TIlib" $Names[0] = "Diff Volume MA(50)" $Colors[0] = $Red if !$MA1 $MA1 = DiffVolumeMA_new(50) else DiffVolumeMA_next($MA1) DiffVolumeMA_draw($MA1, $Colors[0]) end Indicator(0, $MA1[1]) |
近いうちに、こちらもGitHub上に公開します。
表示結果
真ん中の枠の赤い線が「移動平均乖離率(出来高)」です。
正しいのか分かりませんが、とりあえずグラフに凹凸があるので、とりあえず成功ということにします。
まとめ
コードだけ見ると簡単そうに見えますが、実はこの記事は2年前に書き途中だったものです。
今回、少しずつ理解度が増し「TIlib.pt」に実装することに成功しました。
まだ実装できずに保留の記事が20本以上あります。
徐々に知識を増やしていきます。
って、本来の目的なんだっけな・・・?
株での資産形成から、どんどん遠のいてる気がする・・・。