Ini adalah strategi perdagangan yang didasarkan pada crossover rata-rata bergerak ganda. Ini menggunakan interaksi antara rata-rata bergerak cepat dan lambat untuk menentukan tren pasar dan menghasilkan sinyal perdagangan. Ketika MA cepat melintasi di atas MA lambat, sinyal beli dihasilkan. Ketika MA cepat melintasi di bawah MA lambat, sinyal jual dihasilkan.
Strategi ini terutama memanfaatkan kemampuan pelacakan tren rata-rata bergerak. Rata-rata bergerak adalah harga rata-rata yang dihitung selama periode tertentu berdasarkan harga penutupan historis. Mereka dapat meratakan fluktuasi kecil intraday dan mencerminkan tren kerangka waktu yang lebih besar. MA cepat menggunakan periode yang lebih pendek dan dapat merespons lebih cepat perubahan harga, sementara MA lambat menggunakan periode yang lebih lama dan mewakili tren jangka panjang. MA cepat melintasi di atas MA lambat menunjukkan momentum jangka pendek sedang menembus tren jangka panjang ke atas, menandakan tren naik sedang dimulai. Sebaliknya, MA cepat melintasi di bawah MA lambat berarti tren jangka panjang berada di bawah tekanan dan harga mungkin jatuh.
Strategi ini menghasilkan sinyal perdagangan dengan mengatur moving average dari panjang siklus yang berbeda dan menggunakan crossover mereka. Ketika MA siklus pendek melintasi di atas MA siklus panjang, itu menandakan peningkatan momentum jangka pendek dan menghasilkan sinyal beli. Ketika MA siklus pendek melintasi di bawah MA siklus panjang, itu menunjukkan melemahnya tren jangka pendek dan menghasilkan sinyal jual.
Strategi crossover MA ganda memanfaatkan kemampuan pelacakan tren rata-rata bergerak dan menghasilkan sinyal berdasarkan silangannya. Meskipun sederhana dan intuitif, ia juga memiliki beberapa kekurangan. Ini dapat diatasi dengan penyesuaian parameter, menambahkan konfirmasi, pengoptimalan algoritma dll untuk mengubahnya menjadi sistem yang kuat. Secara keseluruhan, strategi MA ganda adalah strategi trend berikut yang sangat klasik dan mudah digunakan.
/*backtest start: 2023-01-01 00:00:00 end: 2023-04-14 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © KivancOzbilgic //@version=4 strategy("pomila", overlay=true) Periods = input(title="ATR Period", type=input.integer, defval=10) src = input(hl2, title="Source") Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0) changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true) showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=false) highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true) barcoloring = input(title="Bar Coloring On/Off ?", type=input.bool, defval=true) atr2 = sma(tr, Periods) atr= changeATR ? atr(Periods) : atr2 up=src-(Multiplier*atr) up1 = nz(up[1],up) up := close[1] > up1 ? max(up,up1) : up dn=src+(Multiplier*atr) dn1 = nz(dn[1], dn) dn := close[1] < dn1 ? min(dn, dn1) : dn trend = 1 trend := nz(trend[1], trend) trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green) buySignal = trend == 1 and trend[1] == -1 plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0) plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0) dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red) sellSignal = trend == -1 and trend[1] == 1 plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red, transp=0) plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0) mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0) longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white fill(mPlot, upPlot, title="UpTrend Highligter", color=longFillColor) fill(mPlot, dnPlot, title="DownTrend Highligter", color=shortFillColor) FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2018, title = "From Year", minval = 999) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 999) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) window() => time >= start and time <= finish ? true : false longCondition = buySignal if (longCondition) strategy.entry("BUY", strategy.long, when = window()) shortCondition = sellSignal if (shortCondition) strategy.entry("SELL", strategy.short, when = window()) buy1= barssince(buySignal) sell1 = barssince(sellSignal) color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na barcolor(barcoloring ? color1 : na)