Strategi Tren RSI

RSI SMA EMA
Tanggal Pembuatan: 2024-06-14 15:28:38 Akhirnya memodifikasi: 2024-06-14 15:28:38
menyalin: 0 Jumlah klik: 562
1
fokus pada
1617
Pengikut

Strategi Tren RSI

Ringkasan

Strategi ini didasarkan pada indikator RSI yang relatif kuat dan lemah, untuk menentukan sinyal beli dan jual dengan menilai apakah nilai indikator RSI melebihi batas atas dan bawah yang ditentukan. Strategi ini juga menetapkan batas waktu stop loss dan posisi untuk mengendalikan risiko.

Prinsip Strategi

  1. Menghitung nilai RSI.
  2. Sinyal beli dihasilkan ketika RSI berada di bawah ambang batas beli yang ditetapkan; sinyal jual dihasilkan ketika RSI berada di atas ambang batas beli yang ditetapkan.
  3. Menggunakan sinyal beli, jumlah beli dihitung dengan harga penutupan saat ini, dan pesanan beli.
  4. Jika Anda memiliki stop loss ratio, hitunglah harga stop loss dan pesanlah stop loss.
  5. Semua pemegang posisi di posisi kosong berdasarkan sinyal jual atau kondisi stop loss.
  6. Jika Anda mengatur waktu maksimum untuk memegang posisi, maka setelah waktu memegang posisi melebihi waktu maksimum untuk memegang posisi, semua posisi akan dihapus, terlepas dari keuntungan atau kerugian.

Keunggulan Strategis

  1. RSI adalah indikator analisis teknis yang digunakan secara luas, yang secara efektif menangkap sinyal overbought dan oversold di pasar.
  2. Strategi ini memperkenalkan stop loss dan batas waktu untuk memegang posisi, yang membantu mengendalikan risiko.
  3. Strategi logis yang jelas, mudah dipahami dan diterapkan.
  4. RSI dapat disesuaikan dengan kondisi pasar yang berbeda dengan menyesuaikan parameter dan threshold.

Risiko Strategis

  1. RSI dalam beberapa kasus dapat memberikan sinyal yang salah, yang menyebabkan kerugian pada strategi.
  2. Strategi ini tidak mempertimbangkan faktor-faktor mendasar dari varietas yang diperdagangkan, dan hanya mengandalkan indikator teknis, yang mungkin menghadapi risiko terjadinya kejadian pasar yang tidak terduga.
  3. Rasio stop loss tetap mungkin tidak dapat beradaptasi dengan perubahan volatilitas pasar.
  4. Kinerja kebijakan dapat dipengaruhi oleh pengaturan parameter, parameter yang tidak tepat dapat menyebabkan kinerja kebijakan yang buruk.

Arah optimasi strategi

  1. Memperkenalkan indikator teknis lainnya, seperti moving averages, untuk meningkatkan keandalan strategi.
  2. Optimalkan strategi stop loss, seperti stop loss bergerak atau stop loss dinamis berdasarkan volatilitas.
  3. Parameter RSI dan thresholds disesuaikan secara dinamis dengan kondisi pasar.
  4. Menggabungkan analisis fundamental dari varietas perdagangan untuk meningkatkan kemampuan strategi untuk mengontrol risiko.
  5. Retest dan optimasi parameter untuk menemukan kombinasi parameter yang optimal.

Meringkaskan

Strategi ini memanfaatkan indikator RSI untuk menangkap sinyal overbought dan oversold di pasar, dan memperkenalkan batasan waktu stop loss dan hold untuk mengendalikan risiko. Logika strategi sederhana, mudah diterapkan dan dioptimalkan. Namun, kinerja strategi dapat dipengaruhi oleh fluktuasi pasar dan pengaturan parameter, sehingga perlu digabungkan dengan metode analisis dan manajemen risiko lainnya untuk meningkatkan kehandalan dan profitabilitas strategi.

Kode Sumber Strategi
/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Simple RSI Strategy", overlay=true,  initial_capital=20, commission_value=0.1, commission_type=strategy.commission.percent)

// Define the hardcoded date (Year, Month, Day, Hour, Minute)
var hardcodedYear = 2024
var hardcodedMonth = 6
var hardcodedDay = 10

// Convert the hardcoded date to a timestamp
var start_date = timestamp(hardcodedYear, hardcodedMonth, hardcodedDay)

// settings
order_size_usdt = input.float(20, title="Order Size (USDT)")
rsiLength = input.int(9, title="RSI Length")
rsiBuyThreshold = input.int(30, title="RSI Buy Threshold")
rsiSellThreshold = input.int(70, title="RSI Sell Threshold")
rsibuystrat = input.int(1, title="buy strat 1=achieved,2=recross")
rsisellstrat = input.int(1, title="sell strat 1=achieved,2=recross")
stoploss = input.int(1, title="Stop loss percent")
max_duration = input(24, title="Max Position Duration (hours)")*60

// emaPeriod = input.int(50, title="EMA Period")
// smaPeriod = input.int(200, title="SMA Period")

rsi = ta.rsi(close, rsiLength) 
// ma_rsi = ta.sma(rsi, rsiLength)
// ema = ta.ema(close,emaPeriod)
// sma = ta.sma(close,smaPeriod)
// plot(sma, color=color.red, title="exp Moving Average")
// plot(smal, color=color.blue, title="Simple Moving Average")

longCondition = ((ta.crossunder(rsi, rsiBuyThreshold) and rsibuystrat==1) or (ta.crossover(rsi, rsiBuyThreshold) and rsibuystrat==2) ) and strategy.position_size == 0
shortCondition = ( (ta.crossover(rsi, rsiSellThreshold) and rsisellstrat==1) or (ta.crossunder(rsi, rsiSellThreshold) and rsisellstrat==2) ) and strategy.position_size > 0 

// Execute Buy and Sell orders
if (longCondition)
	positionSize = order_size_usdt / close
	strategy.entry("Long", strategy.long,qty=positionSize)
	if (stoploss>0)
		stopLossPrice = close * (1 - stoploss/100 )
		strategy.exit("Stop Loss", from_entry="Long", stop=stopLossPrice)
	
if (shortCondition )//or stopCondition)
	strategy.close("Long")

//add condition open time
if (strategy.position_size > 0 and max_duration >0)
	var float entry_time = na
	if (strategy.opentrades > 0)
		entry_time := nz(strategy.opentrades.entry_time(0), na)
	else
		entry_time := na

	current_time = time
	var float duration_minutes = -1
	if (not na(entry_time))
		duration_minutes := (current_time - entry_time) / 60000

	
	// Close positions after a certain duration (e.g., 60 minutes)
	// if ( duration_minutes > max_duration and close>=strategy.opentrades.entry_price(0))
	if ( duration_minutes > max_duration )
		label.new(bar_index, high, text="Duration: " + str.tostring(duration_minutes/60) + " hrs", color=color.blue, textcolor=color.white, style=label.style_label_down, size=size.small)
		strategy.close("Long")


// Plot Buy and Sell signals
plotshape(series=longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
//plotshape(series=stopCondition, title="stop Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")

// Plot RSI
// hline(rsiBuyThreshold, "RSI Buy Threshold", color=color.green)
// hline(rsiSellThreshold, "RSI Sell Threshold", color=color.red)