Indicator Moving Average


Moving Average (MA) atau Purata Bergerak merupakan pengiraan statistik bagi meratakan nilai yang berubah-rubah dalam satu tempoh masa. MA boleh digunakan untuk mengenalpasti pola (trend) pergerakan harga saham menaik atau menurun.

Terdapat pelbagai formula moving average iaitu

  1. Simple Moving Average (SMA)
  2. Exponential Moving Average (EMA)
  3. Relative Moving Average (RMA)
  4. Weighted Moving Average (WMA)
  5. Volume Weighted Moving Average (VWMA)

SMA adalah kiraan purata mudah dalam satu tempoh masa data. EMA adalah kiraan purata yang memberi pemberat eksponen kepada data terkini. RMA adalah kiraan purata yang juga memberi pemberat eksponen seperti EMA, namun kurang pemberat kepada data terkini. Oleh itu, pergerakan RMA lebih perlahan dan kurang noisy berbanding EMA. WMA adalah kiraan purata yang memberi pemberat kepada data terkini, tetapi pemberat secara linear tidak seperti EMA. VWMA adalah kiraan purata yang memberi pemberat mengikut bilangan dagangan (volume) terhadap data tersebut. Oleh itu, VWMA lebih memberi kesan terhadap data yang bilangan dagangan lebih tinggi.

Pada platform TradingView tersedia fungsi kesemua moving average ini. Fungsi-fungsi sma, ema, rma, wma dan vwma memerlukan sumber data dan bilangan data. Sumber data boleh diperolehi dari mana-mana sumber contoh nya data harga buka, harga tutup, harga terendah atau harga tertinggi.

Rujukan: https://www.tradingcode.net/tradingview/moving-averages-overview

Bagi contoh chart pertama di bawah, perbezaan tiga garisan bagi sma100, ema100 dan vwma100.

Bagi contoh chart kedua di bawah, perbezaan tiga garisan bagi sma50, sma100 dan sma200.

Berikut adalah code pine script bagi indicator Moving Average.

//@version=5
indicator("Moving Average", shorttitle="MA", overlay=true)

ma1en = input.bool(defval = true, title = "MA1", inline = "ma1")
ma1type = input.string(defval = "EMA", title = "", options = ["SMA", "EMA", "RMA", "VMA", "VWMA"], inline = "ma1")
ma1len = input.int(defval = 50, title = "", inline = "ma1")
ma2en = input.bool(defval = true, title = "MA2", inline = "ma2")
ma2type = input.string(defval = "EMA", title = "", options = ["SMA", "EMA", "RMA", "VMA", "VWMA"], inline = "ma2")
ma2len = input.int(defval = 100, title = "", inline = "ma2")
ma3en = input.bool(defval = true, title = "MA3", inline = "ma3")
ma3type = input.string(defval = "EMA", title = "", options = ["SMA", "EMA", "RMA", "VMA", "VWMA"], inline = "ma3")
ma3len = input.int(defval = 200, title = "", inline = "ma3")

//Moving Average
ma(source, length, _type) =>
    switch _type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "RMA" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)
        
valuema1 = ma(close, ma1len, ma1type)
valuema2 = ma(close, ma2len, ma2type)
valuema3 = ma(close, ma3len, ma3type)

plot(ma1en? valuema1 : na, title="EMA1", color=color.new(color.red, 0), linewidth=2) 
plot(ma2en? valuema2 : na, title="EMA2", color=color.new(color.green, 0), linewidth=2)
plot(ma3en? valuema3 : na, title="EMA3", color=color.new(color.blue, 0), linewidth=2)

Leave a Reply

Your email address will not be published. Required fields are marked *