Robot Perdagangan Rasional Didorong oleh Strategi RSI

Penulis:ChaoZhang, Tanggal: 2024-02-19 14:43:34
Tag:

img

Gambaran umum

Strategi perdagangan ini menggabungkan tiga indikator teknis yang kuat - Indeks Kekuatan Relatif (RSI), Bollinger Bands dan level Support/Resistance untuk memungkinkan keputusan perdagangan otomatis. Robot dapat secara cerdas mengidentifikasi titik masuk dan keluar potensial berdasarkan kondisi pasar yang berlaku tanpa intervensi manual.

Logika Strategi

Logika inti dari robot trading ini dibangun di atas RSI, Bollinger Bands dan analisis Support/Resistance.

Pertama, RSI mengukur kekuatan tren yang sedang berlangsung. RSI di atas 70 menunjukkan pasar yang terlalu banyak dibeli sementara RSI di bawah 30 menunjukkan pasar yang terlalu banyak dijual.

Kedua, Bollinger Bands mendefinisikan rentang volatilitas pasar. Band atas dan bawah mencakup rentang fluktuasi normal pasar. Mendekati band atas menunjukkan zona yang relatif tinggi di mana pembalikan ke bawah mungkin terjadi. Demikian pula, menyentuh band bawah menunjukkan zona yang relatif rendah di mana bouncing ke atas diharapkan.

Akhirnya, level Support dan Resistance dapat diperoleh dari Bollinger Bands. Support berada di sekitar band bawah sementara Resistance melayang di sekitar band atas. Ini menyiratkan bahwa uptrend dapat menghadapi tekanan penjualan di sekitar Resistance, yang mengarah ke penurunan potensial. Sebaliknya, downtrend dapat memenuhi permintaan pembelian di sekitar Support, mendorong rebound teknis.

Dengan mengkonsolidasikan indikator ini, logika masuk didefinisikan sebagai: pergi panjang ketika harga menyentuh band bawah (zona oversold) yang bertepatan dengan Support; pergi pendek ketika harga melanggar band atas (zona overbought) dengan tinggi melebihi Resistance.

Manfaat Utama

  1. Keandalan sinyal yang kuat melalui penggabungan beberapa indikator

  2. Eksekusi sepenuhnya otomatis tanpa intervensi manual

  3. Peringatan real-time untuk pembaruan instan saat bepergian

  4. Anotasi grafik intuitif untuk memvisualisasikan tingkat perdagangan

  5. Parameter yang dapat disesuaikan untuk optimalisasi di seluruh instrumen dan kerangka waktu

Pengendalian Risiko

  1. Volatilitas yang luar biasa dapat menimbulkan stop loss.

  2. Pengaturan parameter yang tidak optimal dapat menyebabkan overtrading atau kualitas sinyal yang buruk. Parameter harus disesuaikan berdasarkan hasil backtest untuk pengaturan yang optimal.

  3. Kegagalan sistem dapat menyebabkan gangguan sinyal atau penundaan eksekusi.

Peluang Peningkatan

  1. Menggabungkan logika stop loss untuk lebih membatasi risiko penurunan.

  2. Memperkenalkan aturan ukuran posisi sesuai dengan ekuitas akun untuk manajemen risiko yang lebih cerdas.

  3. Manfaatkan pembelajaran mesin dengan melatih model pada data historis untuk meningkatkan kemampuan prediktif.

  4. Melakukan optimasi parameter di berbagai produk untuk mengungkap set parameter terbaik yang disesuaikan dengan setiap produk.

Kesimpulan

Strategi ini menunjukkan kemampuan beradaptasi dan serbaguna yang kuat. Dengan memantau beberapa indikator untuk menilai kondisi pasar, ia dapat secara andal menentukan tingkat pembalikan tren untuk eksekusi otomatis. Perbaikan terus-menerus pada algoritma akan meningkatkan kinerja strategi untuk secara konsisten menghasilkan alpha. Solusi perdagangan algoritma yang sangat baik yang cocok untuk perdagangan kuantitatif.


/*backtest
start: 2024-01-19 00:00:00
end: 2024-02-06 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("RSI, Bollinger Bands, and Support/Resistance Trading Bot", overlay=true)

// Define RSI parameters
rsiLength = input(14, title="RSI Length")
rsiOverbought = input(70, title="Overbought Level")
rsiOversold = input(30, title="Oversold Level")

// Define Bollinger Bands parameters
bbLength = input(20, title="Bollinger Bands Length")
bbMultiplier = input(2, title="Bollinger Bands Multiplier")

// Calculate RSI
rsiValue = rsi(close, rsiLength)

// Calculate Bollinger Bands
basis = sma(close, bbLength)
upperBand = basis + bbMultiplier * stdev(close, bbLength)
lowerBand = basis - bbMultiplier * stdev(close, bbLength)

// Calculate Support and Resistance based on Bollinger Bands
support = basis - bbMultiplier * stdev(close, bbLength)
resistance = basis + bbMultiplier * stdev(close, bbLength)

// Strategy logic
rsiCondition = rsiValue > rsiOverbought or rsiValue < rsiOversold
touchingUpperBand = close >= upperBand
touchingLowerBand = close <= lowerBand

// Entry conditions
longCondition = touchingLowerBand and low <= support
shortCondition = touchingUpperBand and high >= resistance

// Exit conditions
longExitCondition = crossover(close, basis)
shortExitCondition = crossunder(close, basis)

// Automatic close if moving in opposite direction
if (strategy.position_size > 0 and shortCondition)
    strategy.close("Long")

if (strategy.position_size < 0 and longCondition)
    strategy.close("Short")

// Strategy orders
strategy.entry("Long", strategy.long, when=longCondition)
strategy.entry("Short", strategy.short, when=shortCondition)

// Plot entry and exit arrows
plotarrow(series=longCondition ? 1 : na, colorup=color.new(color.green, 0), offset=-1, minheight=5)
plotarrow(series=shortCondition ? 1 : na, colordown=color.new(color.red, 0), offset=-1, minheight=5)
plotarrow(series=longExitCondition ? -1 : na, colorup=color.new(color.red, 0), offset=-1, minheight=5)
plotarrow(series=shortExitCondition ? -1 : na, colordown=color.new(color.green, 0), offset=-1, minheight=5)

// Plot Bollinger Bands on chart
plot(upperBand, title="Upper Band", color=color.red)
plot(lowerBand, title="Lower Band", color=color.green)

// Highlight areas where price touches Bollinger Bands
bgcolor(touchingUpperBand ? color.new(color.red, 90) : na)
bgcolor(touchingLowerBand ? color.new(color.green, 90) : na)

// Plot Support and Resistance
plot(support, title="Support", color=color.blue)
plot(resistance, title="Resistance", color=color.purple)

// Plot RSI on chart
hline(rsiOverbought, "Overbought Level", color=color.red)
hline(rsiOversold, "Oversold Level", color=color.green)
plot(rsiValue, title="RSI", color=color.blue)


Lebih banyak