角度をロジックに使うことの問題点

このページに書かれていること

作成代行をする中でお客様から「○○の角度が急な時を狙いたい」と依頼されることがよくあります。
しかし角度というものはチャートのスケール(縮尺)が変わると変化してしまうため、プログラムで表現するのが非常に難しいです。
このページではロジックに角度を組み込むと何が問題なのかを掲載しています。

具体例

最も多く言われるのは「MAの角度が45度くらいの時にエントリーしたい」といった類のことです。
これが問題なのは、その時のチャートを見れば45度になっている場所も縮尺を変えると全く違うように見えてしまうからです。

MAの角度が45度くらい

上の画像はチャートに20SMAを表示したものです、縦線で区切られた区間はMAが45度くらいで上昇しているように見えます。
しかし全く同じ場所を縮尺を変えて以下のように見せることができます。

同じ区間のスケールを変えるとMAの角度が変わってしまう

下の画像で「MAが希望通りの角度なのでエントリーするべき」と言えるでしょうか?
さらに問題なのは「ソフトがチャートのスケールを自動で変えてしまう場合がある」ということです。
MetaTraderの場合、チャート画面内にすべてのローソク足が収まるように自動スケールが行われます。
そのため角度が十分あるのでエントリーした箇所が、後から見ると「思っていたところでエントリーできていない」となるケースが多発するのです。
同じ場所なのにその時々で判定が変わってしまう、これがロジックに角度を使うとよくない理由です。

ロジックに角度を組み込みたい場合はどうすればよいのか

角度を使うことが問題なのは分かったが、やはり上昇・下降の強さを何らかの形で測りたいという人は多いと思います。
そうした方には下記のような代替案を提案しています。

1.チャートのスケールに依存しない指標を使う

「角度が急な時」とは実際には何を見ているのでしょうか?
これは「単位時間あたりに変動したレートが大きい時」と言い換えることができそうです。
同じ期間で見た時大きく変動した方が急角度
上の画像では
左は100.05-100.00=0.05
右は100.10-100.00=0.10
の上昇が起こっています。
計測期間が同じであればより大きく上昇した右の方が「上昇の角度が大きい」と言えます。
なので「縦軸(レート変動)÷横軸(計測期間)」の数値を比較することで、角度が急と言える場所かどうか判定できます。
(1本前の終値-5本前の終値)÷5が○○以上なら急角度とする・・・のような使い方です。
この方法なら見た目での判断ではないためチャートのスケールが変わっても常に結果は同じになります。

2.スケールを固定した上で角度を求めるようにする

MAの角度自体は逆三角関数を使って下記のように求めることができます。
角度の求め方
辺abcはチャート上の位置をピクセル値に変換して計算することになりますが、チャートのスケールが変わるとこの数値が変わってしまうため角度も変わってしまうことになります。
なのでチャートのスケールが変わらない設定にすれば後から数値が変わることもないので角度でロジックを組んでも問題になりません。
MetaTraderであればチャート上で右クリック→プロパティの「スケールを1対1に固定」にチェックを入れれば固定されます。
スケールの固定

この設定にするとレートに応じた自動調整が効かなくなるため、ローソク足が画面からはみ出す場所が出てきます。
ドラッグして位置調整はできるので、若干見づらくなることを許容できるならこの方法でも良いとは思います。
スケールを固定するとローソク足が画面外に出てしまうる

関連記事

ページ上部へ戻る