移動平均システム、2
終値移動平均1本だけではダマシが多い銘柄について、複数の移動平均を用いる方法がいくつか考案されましたが……そのほとんどは現在の相場ではうまく行かないことが多いです。原因の一つとして、相場が電子取引で動き、複数の移動平均を使用するシステムは通常はタイミングが遅すぎるからでしょう。
高値移動平均、安値移動平均を用い、それぞれのところに逆指し値を入れるといったやり方は、大相場には強いですが、レンジ相場で終値移動平均よりも更に悲惨な結果になる場合があります。
そこで、一工夫です。
まずは高値、安値の代わりに、真高値、真安値を用います。英語ではTrue High, True Lowと呼ばれるものです。DMIや究極オシレータを使用されている方にはなじみのある概念かもしれません。
まずは、「真」の部分から説明します。
背景となっているのは、取引所が休んでいる際にも価格は常に動いている≠ニいう考え方です。前日の安値と当日の始値の間の差が、取引所外で動いた部分、すなわち、市場の参加者の心の中で動いた部分なのです。この部分を考慮に入れるもと、当日の相場は前日の引けに始まるといえます。つまり、当日の真始値は前日の終値なのです。当日の真始値が高値と安値の範囲の外にある場合には、真高値もしくは真安値は高値や安値と一致しません。
まとめると、真高値は、前日の終値と当日の高値のうち、より高いほうとなり、真安値は前日の終値と当日の安値のうち、より安いほうです。
そして、真高値と真安値の移動平均を計算します。
ここまでを、マイクロソフトのエクセルでは次のように計算します。
A | B | C | D | E | F | G | H | |
1 | 日付 | 高値 | 安値 | 終値 | 真高値 | 真安値 | 真高値10日移動平均 | 真安値10日移動平均 |
2 | ||||||||
3 | =MAX(D2,B3) | =MIN(D2,C3) | ||||||
4 |
↓ |
↓ |
||||||
5 | ||||||||
6 | ||||||||
7 | ||||||||
8 | ||||||||
9 | ||||||||
10 | ||||||||
11 | ||||||||
12 | =AVERAGE(E3:E12) | =AVERAGE(F3:F12) | ||||||
13 |
↓ |
↓ |
||||||
14 | ||||||||
15 |
このサイトの専用記号を用いて表すと次のようになります。
th=(ref(-1).close,high).max;(真高値)
tl=(ref(-1).close,low).min;(真安値)
th.ma(10)=th.sum(10)/10;(真高値10日移動平均)
tl.ma(10)=tl.sum(10)/10;(真安値10日移動平均)
これで多少はダマシに強くなりますが、まだまだ十分ではありません。レンジ相場は延々と続くことがあり、そのような場合には、ストップをかける戦略はことごとく裏目に出る場合があります。もう一工夫必要です。
中略 | E | F | G | H | I | |
2 | 真高値 | 真安値 | 真高値移動平均 | 真安値移動平均 | レンジ相場回避フィルター | |
中略 |
||||||
31 | 中略 | =(MAX(G2:G31)-MIM(H2:H31))/(G31-H31) | ||||
32 |
記号では次のようになります。
$filter=(th.max(30)-tl.min(30))/(th.ma(10)-tl.ma(10));
フィルターは移動平均の計算期間の3倍の長さの計算期間における値動きの上限と下限の差を真高値移動平均と真安値移動平均の開き具合で割ったもので、レンジ相場になると値が小さくなります。
計算期間にもよりますが、10日と30日を用いる場合には、おおむね、フィルターの値が1.7より小さくなれば、別の銘柄を物色したほうがいいということになるでしょう。
記号で表すと、次のようになります。
if($filter>1.7).order:long_stop(entry,exit)@th.ma(10);(フィルターが1.7を超えていれば途転買い注文を出す)
if($filter>1.7).order:short_stop(entry,exit)@tl.ma(10);(フィルターが1.7を超えていれば途転売り注文を出す)
念の為に言っておきますが、フィルターが2.0でも順張りの勝率は5割より小さいと思われます。しかし、買ったときに取れる幅は大きく、値幅を考慮した勝率、すなわち確率は、銘柄にもよりますが、60%を超えることが多いようです。