Strategi Trend RSI

RSI SMA EMA
Tarikh penciptaan: 2024-06-14 15:28:38 Akhirnya diubah suai: 2024-06-14 15:28:38
Salin: 0 Bilangan klik: 562
1
fokus pada
1617
Pengikut

Strategi Trend RSI

Gambaran keseluruhan

Strategi ini berdasarkan pada indeks relatif kuat dan lemah (RSI) untuk menentukan isyarat beli dan jual dengan menilai sama ada nilai RSI melebihi paras naik dan turun yang ditetapkan. Strategi ini juga menetapkan had waktu berhenti dan memegang kedudukan untuk mengawal risiko.

Prinsip Strategi

  1. Hitung nilai RSI.
  2. Sinyal beli dihasilkan apabila nilai RSI lebih rendah daripada had pembelian yang ditetapkan; Sinyal jual dihasilkan apabila nilai RSI lebih tinggi daripada had jualan yang ditetapkan.
  3. Mengikut isyarat beli, jumlah beli dikira pada harga penutupan semasa, dan pesanan beli.
  4. Jika anda menetapkan nisbah stop loss, anda akan mengira harga stop loss dan membuat pesanan stop loss.
  5. Semua pemegang kedudukan kosong di bawah isyarat jual atau terhad.
  6. Jika anda menetapkan masa pegangan maksimum, selepas masa pegangan melebihi masa pegangan maksimum, semua pegangan akan dipadamkan, tidak kira keuntungan atau kerugian.

Kelebihan Strategik

  1. RSI merupakan satu indikator analisis teknikal yang digunakan secara meluas dan berkesan untuk menangkap isyarat pasaran yang terlalu beli dan terlalu jual.
  2. Strategi ini memperkenalkan sekatan kerugian dan jangka masa untuk membantu mengawal risiko.
  3. Logik strategi jelas, mudah difahami dan dilaksanakan.
  4. Dengan menyesuaikan parameter dan nilai had RSI, ia dapat disesuaikan dengan keadaan pasaran yang berbeza.

Risiko Strategik

  1. RSI mungkin memberi isyarat yang salah dalam keadaan tertentu, menyebabkan strategi mengalami kerugian.
  2. Strategi ini tidak mengambil kira faktor asas dalam jenis perdagangan dan hanya bergantung pada petunjuk teknikal, yang mungkin menghadapi risiko kejutan pasaran.
  3. Peratusan kerugian tetap mungkin tidak dapat menyesuaikan diri dengan perubahan turun naik pasaran.
  4. Prestasi strategi mungkin dipengaruhi oleh tetapan parameter, parameter yang tidak sesuai boleh menyebabkan prestasi strategi yang buruk.

Arah pengoptimuman strategi

  1. Pengenalan penunjuk teknikal lain, seperti purata bergerak, untuk meningkatkan kebolehpercayaan strategi.
  2. Optimumkan strategi hentian kerugian, seperti hentian bergerak atau hentian dinamik berdasarkan kadar turun naik.
  3. Parameter dan nilai terhad RSI disesuaikan secara dinamik mengikut keadaan pasaran.
  4. Menggabungkan analisis asas jenis perdagangan untuk meningkatkan keupayaan kawalan risiko strategi.
  5. Kaedah ini digunakan untuk mengkaji semula dan mengoptimumkan parameter untuk mencari kombinasi parameter yang terbaik.

ringkaskan

Strategi ini menggunakan indikator RSI untuk menangkap isyarat overbought dan oversold di pasaran, sambil memperkenalkan had waktu berhenti dan memegang untuk mengawal risiko. Logik strategi mudah difahami, mudah dilaksanakan dan dioptimumkan. Walau bagaimanapun, prestasi strategi mungkin dipengaruhi oleh turun naik dan parameter pasaran, dan oleh itu perlu digabungkan dengan kaedah analisis lain dan kaedah pengurusan risiko untuk meningkatkan kehandalan dan keuntungan strategi.

Kod 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)