2017年9月26日火曜日

単純移動平均線の傾き

EasyLanguageで単純移動平均線(以下SMA)の傾きをどうやって表記するか。

最初は単純化して、5日間の単純移動平均線(5dSMA)で考えてみよう。

5dSMAは、当日を含む過去5日の終値の平均値。

EasyLanguageでは、

5dSMA = (Close[4] + Close[3] + Close[2] + Close[1] + Close[0]) / 5

となる。(関数を使うことで、AverageFC(Close, 5)としても表記可)


つぎに、

SMAの傾き(以下MASlope)は、SMAの変化量(一本前のSMAと当日のSMAの差)を、期間(当日と前日=1)で割ったもの。

MASlope = (SMA[0] - SMA[1]) / 1 = SMA[0] - SMA[1]

つまり、一日前のSMAとのSMAの差である。
(チャートにSMAを表示させればひと目でわかるので、わざわざ上の長い説明は必要ないんだけどネ)

この2つの差は移動平均線の定義から同様に、 (Close[0] - Close[5] ) / 5 で表すことが出来る。

・5日前の終値が、当日の終値よりも高ければ、SMAは増加、傾き上昇
・5日前の終値が、当日の終値よりも安ければ、SMAは減少、傾き下降


余談だが、5日前と当日の終値の差(大小)を比較するというテクニカル分析は、モメンタムでも使われており、

MASlope = Momentum(Close, 5) / 5 という表記も可能だ。(使わないけど(笑))


傾きの話に戻すと、5日単純移動平均線の傾きは、

5dSMASlope = (Close[0] - Close[5] ) / 5

これを一般化して、n日単純移動平均線の場合は、

ndSMASlope = (Close[0] - Close[n] ) / n

実際にコードを書く場合は、期間をinputで任意で指定できるようにし、次のように表すことが出来る。

---
input: int Length(5); //計算期間
var: double SMASlope(0); //移動平均線の傾き

if Length > 0 then
SMASlope = (Close[0] - Close[Length]) / Length;

Plot1(SMASlope, "移動平均線傾き");
---

余談:
トレステには、TLSlope TLSlopeEasyというトレンドラインの傾きを計算する関数もあるので、興味のある人はヘルプをご覧あれ。

2 件のコメント:

  1. シンプルでわかりやすかったです。
    ありがとうございます。

    返信削除
  2. コメントありがとうございます
    最近はあまりEasyLanguage関連の投稿をしていないので恐縮です。

    返信削除