メイン目次 サブ目次

簡単なシステムの作成

トレンドフォローシステム

EMAを用いたトレンドフォローシステムを作成してみます。 今回用いる元データをdata9.txt に置いておきますので、同じ数値が出るか比較しながら試して下さい。

基本的には、価格がEMAより上にあれば買い、下にあれば売り、としますが、 ダマシを防止するために少し工夫を加えます。 転換値幅"d"を用意し、買い玉が無い状態で価格がEMA+d以上になれば買い、 買い玉がある状態で価格がEMA以下になれば買い玉は仕切ります。 売り玉については逆です。 "d"は、価格変動が小さな時には小さく、価格変動が大きい時には大きくすべきなので、 ボラティリティーと現在値の積に比例するように定めます。

EMAのパラメータは前節と同じく0.1とします。 新たなパラメータとしては、転換値幅の比例定数、および手数料抜け幅が必要です。 セルF2に比例定数を、セルH2に抜け幅を入れておきます。 抜け幅は実際より大き目にしておいた方が良いと思います。 ここではそれぞれ、0.8と40を用います。

ポジションの状態をI列に表示します。買いが+1、売りが-1、玉無しが0です。 セルI5に初期値として0を入れ、 セルI6に「=IF(E6>=F6+IF(I5<1,$F$2*D6*H6,0),1,IF(E6<=F6-IF(I5>-1,$F$2*D6*H6,0),-1,0))」 と入力し、セルI6をコピーしてセルI7以降に貼り付けます。



今回の例では、大引けに売買条件が成立すると同時にポジションを取っているという事です。 板寄せの場合は逆指しを用いれば良いのですが、 ザラバには大引け限定の逆指しがありませんので、 このシステム通りに執行するには、やや困難が伴います。 ただ、経験的には、翌日の寄り付きにポジションを取るより、 売買サインと同時にポジションを取る方が若干成績は良くなります。

次に、J列に損益を表示します。セルJ5に初期値として0を入れ、 セルJ6に「=J5+I5*(E6-E5)-ABS(I6-I5)*$H$2/2」と入力し、 セルJ6をコピーしてセルJ7以降に貼り付けます。 抜け幅は、新規の際と仕切りの際に半額ずつ差し引かれます。

ここで注意すべきなのは、前日から当日にかけての損益を計算する際に前日のポジションを用いるということです。 当日のポジションは当日の終値から計算されるので、 前日から当日にかけての損益を当日のポジションで計算すると、未来の値段を用いて売買している事になります。 システムを検証する際に初心者が良くやる間違いですので、気を付けて下さい。 分かりやすく言うと、セルJ6を計算するのにセルI6を使ってはいけないということです。



損益だけではシステムの性能評価という点で不十分ですので、 最大ドローダウンを計算します。そのために、まず最大利益を計算します。 セルK5に初期値0を入れ、セルK6に「=MAX(K5,J6)」と入れてコピーし、セルK7以降に貼り付けます。



セルL5に初期値0を入れ、セルL6に「=MAX(L5,K6-J6)」と入れてコピーし、 セルL7以降に貼り付ければ出来上がりです。



損益はポジションの大小でどうにでもなりますから、損益それ自体よりも、 損益と最大ドローダウンの比率の方が重要です。 損益曲線(J列をグラフにしたもの)の確認も必要です。



以下が損益曲線です(青の線)。綺麗な右肩上がりのグラフになるシステムほど良いシステムであると言えます。 実際には更に条件を付け加えて休む期間を作ったり、 別の指標と組み合わせたりしてパフォーマンスの向上を図ります。 色々と試してみて下さい。


メイン目次 サブ目次