Sumber dimuat naik... memuat...

Strategi Trend RSI

Penulis:ChaoZhang, Tarikh: 2024-06-14 15:28:38
Tag:RSISMAEMA

img

Ringkasan

Strategi ini berdasarkan kepada penunjuk Indeks Kekuatan Relatif (RSI). Ia menentukan isyarat beli dan jual dengan menilai sama ada nilai RSI melebihi ambang atas dan bawah yang telah ditetapkan. Di samping itu, strategi menetapkan had stop-loss dan tempoh kedudukan untuk mengawal risiko.

Prinsip Strategi

  1. Mengira nilai penunjuk RSI.
  2. Apabila nilai RSI berada di bawah ambang beli yang ditetapkan, menghasilkan isyarat beli; apabila nilai RSI berada di atas ambang jual yang ditetapkan, menghasilkan isyarat jual.
  3. Berdasarkan isyarat beli, kira kuantiti beli pada harga penutupan semasa dan letakkan pesanan beli.
  4. Jika peratusan stop-loss ditetapkan, kira harga stop-loss dan letakkan pesanan stop-loss.
  5. Tutup semua kedudukan berdasarkan isyarat jual atau keadaan stop-loss.
  6. Jika tempoh kedudukan maksimum ditetapkan, tutup semua kedudukan selepas tempoh kedudukan melebihi maksimum, tanpa mengira keuntungan atau kerugian.

Kelebihan Strategi

  1. Penunjuk RSI adalah penunjuk analisis teknikal yang digunakan secara meluas yang dapat menangkap isyarat overbought dan oversold di pasaran dengan berkesan.
  2. Strategi ini menggabungkan had stop-loss dan tempoh kedudukan, yang membantu mengawal risiko.
  3. Logik strategi adalah jelas dan mudah difahami dan dilaksanakan.
  4. Dengan menyesuaikan parameter dan ambang RSI, strategi boleh disesuaikan dengan persekitaran pasaran yang berbeza.

Risiko Strategi

  1. Dalam beberapa kes, penunjuk RSI boleh menghasilkan isyarat palsu, yang membawa kepada kerugian dalam strategi.
  2. Strategi ini tidak mempertimbangkan faktor asas instrumen dagangan dan hanya bergantung kepada penunjuk teknikal, yang mungkin menghadapi risiko daripada peristiwa pasaran yang tidak dijangka.
  3. Peratusan stop-loss tetap mungkin tidak disesuaikan dengan perubahan turun naik pasaran.
  4. Prestasi strategi boleh dipengaruhi oleh tetapan parameter, dan parameter yang tidak sesuai boleh membawa kepada prestasi strategi yang buruk.

Arahan Pengoptimuman Strategi

  1. Memperkenalkan penunjuk teknikal lain, seperti purata bergerak, untuk meningkatkan kebolehpercayaan strategi.
  2. Mengoptimumkan strategi stop-loss, seperti menggunakan stop-loss trailing atau stop-loss dinamik berdasarkan turun naik.
  3. Sesuaikan parameter dan ambang RSI secara dinamik mengikut keadaan pasaran.
  4. Menggabungkan analisis aspek asas instrumen dagangan untuk meningkatkan keupayaan kawalan risiko strategi.
  5. Melakukan backtesting dan pengoptimuman parameter pada strategi untuk mencari kombinasi parameter yang optimum.

Ringkasan

Strategi ini menggunakan penunjuk RSI untuk menangkap isyarat overbought dan oversold di pasaran sambil memperkenalkan had stop-loss dan tempoh kedudukan untuk mengawal risiko. Logik strategi adalah mudah dan mudah dilaksanakan dan dioptimumkan. Walau bagaimanapun, prestasi strategi mungkin dipengaruhi oleh turun naik pasaran dan tetapan parameter. Oleh itu, adalah perlu untuk menggabungkan kaedah analisis lain dan langkah pengurusan risiko untuk meningkatkan ketahanan dan keuntungan 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)

Berkaitan

Lebih lanjut