Tren Mengikuti Strategi EMA dan RSI

Penulis:ChaoZhang, Tanggal: 2023-09-26 15:39:48
Tag:

Gambaran umum

Strategi ini memanfaatkan sepenuhnya rata-rata bergerak dan indeks kekuatan relatif untuk mengidentifikasi dan mengikuti tren. Ini hanya membutuhkan dua indikator untuk menentukan tren dan menemukan waktu masuk / keluar yang tepat. Strategi ini bertujuan untuk menangkap tren harga jangka menengah hingga panjang sambil menghindari kebisingan pasar jangka pendek.

Logika Strategi

Strategi ini menggunakan tiga EMA dengan periode yang berbeda, dengan EMA-A memiliki periode terpendek, EMA-B medium, dan EMA-C terpanjang. Ketika EMA-A yang lebih pendek melintasi di atas EMA-B yang lebih panjang, itu menandakan tren naik, sehingga akan panjang. Sebaliknya, ketika EMA-A melintasi di bawah EMA-B, itu menandakan tren turun, sehingga akan pendek. Untuk menyaring sinyal palsu, itu juga menggunakan EMA-C terpanjang - hanya mempertimbangkan masuk setelah harga melanggar EMA-C.

Strategi ini juga menggunakan RSI untuk menemukan titik keluar. Ketika panjang, ia menutup posisi jika RSI melintasi di atas 70. Ketika pendek, ia keluar jika RSI turun di bawah 30. Ini mengunci keuntungan tren dan mencegah kerugian dari perluasan lebih lanjut.

Analisis Keuntungan

  • Menggunakan kekuatan EMA dalam identifikasi tren
  • RSI membantu dalam waktu masuk dan keluar
  • Strategi sederhana dengan hanya 2 indikator
  • Parameter yang dapat disesuaikan untuk menyesuaikan gaya strategi
  • Keuntungan dari tahap awal, pertengahan dan akhir tren

Analisis Risiko

  • Pullbacks dalam tren utama dapat menghasilkan sinyal palsu
  • Cacat terhadap whipsaws di berbagai pasar
  • Parameter RSI yang tidak tepat dapat menyebabkan keluar dini
  • Periode EMA perlu dipilih dengan hati-hati, terlalu pendek mungkin sensitif terhadap kebisingan, terlalu lama mungkin kehilangan tren

Risiko ini dapat dikurangi dengan mengoptimalkan parameter RSI, menambahkan filter, dan menggabungkan dengan analisis tren.

Arahan Optimasi

  • Mengoptimalkan parameter RSI untuk mengambil keuntungan yang lebih baik dan pengendalian risiko
  • Uji kombinasi periode EMA yang berbeda
  • Tambahkan volume atau indikator konfirmasi lainnya
  • Gunakan ATR untuk ukuran stop loss
  • Pertimbangkan untuk mengurangi ukuran posisi di tengah tren
  • Optimalkan waktu masuk dengan breakout, volume, dll
  • Menjelajahi mekanisme masuk kembali

Ringkasan

Strategi ini menggabungkan indikator trend following dan oscillator untuk identifikasi dan penangkapan trend. Dengan parameter sederhana dan optimasi logika, dapat sangat ditingkatkan sambil menjaga kesederhanaan.


/*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)



Lebih banyak