
Strategi RSI Average Line Crossover adalah strategi yang diterapkan untuk perdagangan cryptocurrency. Strategi ini menerapkan moving average pada indikator RSI dan mengirimkan sinyal beli dan jual berdasarkan perpotongan RSI dengan moving average-nya.
Strategi ini pertama-tama menghitung indikator RSI. Indikator RSI didasarkan pada perubahan turun naik dalam jangka waktu tertentu, yang mencerminkan kekuatan harga. RSI lebih besar dari 70 adalah zona overbought, dan lebih kecil dari 30 adalah zona oversold.
Strategi ini kemudian menerapkan moving average berdasarkan indikator RSI. Moving average dapat menyaring fluktuasi acak dan menentukan arah tren. Di sini, RSI Moving Average ditetapkan untuk 10 siklus.
Ketika RSI di atas melewati rata-rata bergeraknya, dianggap sebagai sinyal beli; ketika RSI di bawah melewati rata-rata bergeraknya, dianggap sebagai sinyal jual. Berdagang berdasarkan kedua sinyal tersebut.
Dalam kode, pertama-tama menghitung indikator RSI untuk siklus panjang. Kemudian menghitung rata-rata bergerak dari 10 siklus RSI ma. Ketika ma melewati rsi, beli; ketika ma melewati rsi, jual.
Selain itu, kode ini juga memetakan diagram linier rsi, ma, dan diagram kolom rsi-ma. Garis pemisah rsi = 70, rsi = 30 dipetakan. Dan tanda panah sinyal yang sesuai ditandai pada diagram ketika membeli dan menjual.
Untuk risiko, parameter dapat disesuaikan untuk mengoptimalkan efek indikator, mengurangi posisi dengan tepat, mengatur garis stop loss, dan bekerja dengan analisis tren untuk memfilter sinyal.
Strategi RSI linear crossover menggabungkan keunggulan indikator tren dan indikator filter, relatif matang dan dapat diandalkan. Logika strategi ini sederhana dan mudah dimengerti, implementasi kode juga lebih lengkap, secara keseluruhan merupakan strategi perdagangan cryptocurrency yang lebih baik. Tetapi setiap strategi memiliki tempat yang perlu dioptimalkan, perlu tes terus menerus dan penyesuaian, serta penilaian tren, untuk mendapatkan efek strategi yang lebih baik.
/*backtest
start: 2022-10-31 00:00:00
end: 2023-11-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("RSI w MA Strategy", shorttitle="RSI w MA Strategy", overlay=false, initial_capital=10000, currency='USD',process_orders_on_close=true)
//TIME FRAME AND BACKGROUND CONTROL/////////////////////////////////////////////
testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(01, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0)
testStopYear = input(2022, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(1, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)
testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and time >= testPeriodStart and time <= testPeriodStop ?
color.teal : na
//bgcolor(testPeriodBackgroundColor, transp=50)
testPeriod() => true
////////////////////////////////////////////////////////////////////////////////
src = close, len = input(27, minval=1, title="Length")
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
window = input(10, "RSI MA Window")
ma = sma(rsi,window)
plot(rsi, color=color.orange)
colorr= ma > rsi ? color.red : color.green
plot(ma,color=colorr)
band1 = hline(70)
band0 = hline(30)
fill(band1, band0, color=color.purple, transp=90)
diff = rsi - ma
plot(diff,style= plot.style_columns,transp=50,color = colorr)
plotshape(crossunder(rsi,ma)?rsi:na,title="top",style=shape.triangledown,location=location.absolute,size=size.tiny,color=color.red,transp=0)
plotshape(crossover(rsi,ma)?rsi:na,title="bottom",style=shape.triangleup,location=location.absolute,size=size.tiny,color=color.lime,transp=0)
buySignal = crossover(rsi,ma)
sellSignal = crossunder(rsi,ma)
//TRADE CONTROL/////////////////////////////////////////////////////////////////
if testPeriod()
if buySignal
strategy.close("Short", qty_percent = 100, comment = "Close Short")
strategy.entry("Long", strategy.long, qty=.1)
if sellSignal
strategy.close("Long", qty_percent = 100, comment = "Close Long")
strategy.entry("Short", strategy.short, qty=.1)
////////////////////////////////////////////////////////////////////////////////