Strategi ini memanfaatkan kelebihan rata-rata bergerak dan petunjuk yang agak kuat untuk mengenal pasti dan menjejaki trend. Ia hanya memerlukan dua petunjuk untuk membuat keputusan mengenai trend dan memilih masa masuk / keluar. Strategi ini bertujuan untuk menangkap trend harga dalam garis panjang dan panjang dan mengelakkan gangguan pasaran jangka pendek.
Strategi ini menggunakan garis rata-rata EMA dari tiga kitaran yang berbeza, EMA-A adalah kitaran terpendek, EMA-B seterusnya, EMA-C adalah yang terpanjang. Apabila kitaran pendek EMA-A di atas EMA-B yang mempunyai kitaran yang lebih panjang, ini menunjukkan bahawa harga berada dalam trend menaik, yang boleh dilakukan lebih banyak; sebaliknya, apabila EMA-A di bawah EMA-B, ini menunjukkan bahawa harga beralih ke trend menurun, yang boleh dilakukan kosong.
Strategi ini juga digabungkan dengan RSI untuk menentukan titik keluar. Apabila memegang posisi berganda, jika RSI melintasi 70 garis maka ia akan ditutup; apabila memegang posisi kosong, jika RSI melintasi 30 garis maka ia akan ditutup. Ini dapat mengunci keuntungan trend dan mencegah kerugian daripada berkembang lebih jauh.
Risiko ini dapat dikurangkan dengan mengoptimumkan parameter RSI, atau menambah syarat penapisan tambahan. Ia juga boleh digabungkan dengan kaedah analisis teknikal seperti trend, sokongan dan rintangan untuk meningkatkan prestasi strategi.
Strategi ini menggabungkan trend tracking dan overbought oversold indicator, hanya memerlukan dua indikator mudah untuk membuat keputusan dan menangkap trend. Dengan pengoptimuman parameter dan pengoptimuman peraturan, anda dapat meningkatkan keberkesanan dengan ketara sambil tetap sederhana. Ia adalah templat strategi trend tracking yang sangat praktikal, sesuai untuk pelabur garis tengah 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)