Strategi ini memanfaatkan keuntungan dari moving averages dan indikator yang relatif kuat untuk mengidentifikasi dan melacak tren. Hanya membutuhkan dua indikator untuk menilai tren dan memilih waktu masuk / keluar. Strategi ini bertujuan untuk menangkap tren harga dalam garis tengah dan panjang dan menghindari kebisingan pasar jangka pendek.
Strategi ini menggunakan garis rata-rata EMA dari tiga periode yang berbeda, EMA-A dengan periode terpendek, EMA-B berikutnya, EMA-C dengan periode terpanjang. Ketika periode pendek EMA-A di atas EMA-B dengan periode yang lebih panjang, berarti harga berada dalam tren naik, yang dapat dilakukan lebih banyak; Sebaliknya, ketika EMA-A di bawah EMA-B, berarti harga beralih ke tren turun, yang dapat dilakukan kosong.
Strategi ini juga menggabungkan indikator RSI untuk menentukan titik waktu keluar. Ketika berposisi tinggi, jika RSI melewati 70 garis, maka posisi kosong; Ketika berposisi kosong, jika RSI melewati 30 garis maka posisi kosong. Ini dapat mengunci keuntungan tren dan mencegah kerugian dari perluasan lebih lanjut.
Risiko ini dapat dikurangi dengan mengoptimalkan parameter RSI, atau dengan menambahkan kondisi penyaringan tambahan. Strategi ini juga dapat dikombinasikan dengan metode analisis teknis seperti tren, dukungan, dan resistensi untuk meningkatkan kinerja strategi.
Strategi ini mengintegrasikan pelacakan tren dan indikator overbought oversold, hanya membutuhkan dua indikator sederhana untuk mencapai penilaian dan menangkap tren. Dengan optimasi parameter dan optimasi aturan, dapat meningkatkan efektivitas secara signifikan sambil tetap sederhana. Ini adalah template strategi pelacakan tren yang sangat praktis, cocok untuk investor garis menengah dan panjang.
/*backtest
start: 2023-08-26 00:00:00
end: 2023-09-25 00:00:00
period: 2h
basePeriod: 15m
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/
//@author Alorse
//@version=5
// strategy(title='Tendency EMA + RSI [Alorse]', shorttitle='Tendece EMA + RSI [Alorse]', overlay=true, pyramiding=0, currency=currency.USD, default_qty_type=strategy.percent_of_equity, initial_capital=1000, default_qty_value=20, commission_type=strategy.commission.percent, commission_value=0.01)
// Bollinger Bands
len = input.int(14, minval=1, title='Length', group='RSI')
src = input.source(close, 'Source', group='RSI')
rsi = ta.rsi(src, len)
// Moving Averages
len_a = input.int(10, minval=1, title='EMA A Length', group='Moving Averages')
out_a = ta.ema(close, len_a)
plot(out_a, title='EMA A', color=color.purple)
len_b = input.int(20, minval=1, title='EMA B Length', group='Moving Averages')
out_b = ta.ema(close, len_b)
plot(out_b, title='EMA B', color=color.orange)
len_c = input.int(100, minval=1, title='EMA C Length', group='Moving Averages')
out_c = ta.ema(close, len_c)
plot(out_c, title='EMA B', color=color.green)
// Strategy Conditions
stratGroup = 'Strategy'
showLong = input.bool(true, title='Long entries', group=stratGroup)
showShort = input.bool(false, title='Short entries', group=stratGroup)
closeAfterXBars = input.bool(true, title='Close after X # bars', tooltip='If trade is in profit', group=stratGroup)
xBars = input.int(24, title='# bars')
entryLong = ta.crossover(out_a, out_b) and out_a > out_c and close > open
exitLong = rsi > 70
entryShort = ta.crossunder(out_a, out_b) and out_a < out_c and close < open
exitShort = rsi < 30
bought = strategy.opentrades[0] == 1 and strategy.position_size[0] > strategy.position_size[1]
entry_price = ta.valuewhen(bought, open, 0)
var int nPastBars = 0
if strategy.position_size > 0
nPastBars := nPastBars + 1
nPastBars
if strategy.position_size == 0
nPastBars := 0
nPastBars
if closeAfterXBars
exitLong := nPastBars >= xBars and close > entry_price ? true : exitLong
exitLong
exitShort := nPastBars >= xBars and close < entry_price ? true : exitShort
exitShort
// Long Entry
strategy.entry('Long', strategy.long, when=entryLong and showLong)
strategy.close('Long', when=exitLong)
// Short Entry
strategy.entry('Short', strategy.short, when=entryShort and showShort)
strategy.close('Short', when=exitShort)