Strategi pembalikan berdasarkan RSI cepat dan warna candlestick

Penulis:ChaoZhang, Tanggal: 2023-09-13 17:24:54
Tag:

Strategi ini disebut Reversal Strategy Based on Fast RSI and Candlestick Colors. Ini menggunakan RSI cepat untuk menilai tingkat overbought/oversold dan warna candlestick untuk menentukan arah tren, memasuki perdagangan reversal ketika keduanya memberikan sinyal bersamaan.

RSI cepat memiliki parameter yang lebih kecil dan dapat lebih cepat mendeteksi kondisi overbought / oversold harga. RSI di bawah 30 menunjukkan keadaan oversold, sedangkan di atas 70 adalah overbought.

Warna candlestick menunjukkan harga putih menutup dekat terbuka, hijau mewakili harga naik dan bendera merah jatuh.

Logika perdagangan adalah:

Ketika RSI cepat menunjukkan oversold dan 4 lilin merah berturut-turut muncul, itu dianggap sebagai sinyal pembalikan yang kuat untuk pergi panjang.

Ketika RSI cepat overbought dan 4 lilin hijau lurus muncul, itu menandakan peluang pembalikan yang kuat untuk pergi pendek.

Jika sudah memegang posisi panjang, keluar saat 1 lilin hijau muncul. Jika memegang posisi pendek, keluar saat 1 lilin merah muncul.

Keuntungan dari strategi ini adalah menggunakan kombinasi indikator untuk secara akurat menentukan sinyal pembalikan. Namun manajemen uang yang ketat diperlukan karena ukuran posisi yang berat. Stop loss juga penting.

Secara singkat, perdagangan reversal bergantung pada indikator yang secara tepat mengidentifikasi waktu. Aplikasi RSI plus informasi candlestick yang wajar dapat meningkatkan kinerja strategi. Tapi tidak ada strategi tunggal yang sempurna. Pedagang masih perlu mempertahankan pola pikir perdagangan yang fleksibel.


/*backtest
start: 2022-09-06 00:00:00
end: 2023-01-20 00:00:00
period: 4d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Hundred Strategy v1.0", shorttitle = "Hundred str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
lev = input(5, defval = 5, minval = 1, maxval = 100, title = "leverage")
onlyprofit = input(true, defval = true, title = "Only Profit")
fast = input(7, defval = 7, minval = 2, maxval = 50, title = "Fast RSI Period")
limit = input(30, defval = 30, minval = 1, maxval = 100, title = "RSI limit")
rsisrc = input(close, defval = close, title = "RSI Price")
rsibars = input(1, defval = 1, minval = 1, maxval = 20, title = "RSI Bars")
cbars = input(4, defval = 4, minval = 1, maxval = 20, title = "Color Bars")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Fast RSI
fastup = rma(max(change(rsisrc), 0), fast)
fastdown = rma(-min(change(rsisrc), 0), fast)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//Limits
bar = close > open ? 1 : close < open ? -1 : 0
uplimit = 100 - limit
dnlimit = limit

//RSI Bars
upsignal = fastrsi > uplimit ? 1 : 0
dnsignal = fastrsi < dnlimit ? 1 : 0
uprsi = sma(upsignal, rsibars) == 1
dnrsi = sma(dnsignal, rsibars) == 1

//Signals
long = strategy.position_size >= 0
short = strategy.position_size <= 0
up = sma(bar, cbars) == -1 and long and dnrsi
dn = sma(bar, cbars) == 1 and short and uprsi
profit = (strategy.position_size > 0 and close > strategy.position_avg_price) or (strategy.position_size < 0 and close < strategy.position_avg_price) or onlyprofit == false
exit = ((strategy.position_size > 0 and bar == 1) or (strategy.position_size < 0 and bar == -1)) and profit
lot = strategy.position_size == 0 ? strategy.equity / close * lev : lot[1]

//Trading
if up
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)

if dn
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)
    
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
    strategy.close_all()

Lebih banyak