
Ini adalah sistem strategi perdagangan yang menggabungkan RSI dengan ATR. Strategi ini mengidentifikasi peluang perdagangan potensial dengan memantau persilangan RSI dengan rata-rata bergeraknya, sambil menggunakan ATR sebagai filter tingkat fluktuasi untuk memastikan pasar memiliki cukup volatilitas. Strategi ini beroperasi pada waktu perdagangan Eropa (waktu Prague 8:00-21:00), menggunakan siklus waktu 5 menit, dan menetapkan tingkat stop loss yang tetap.
Logika inti dari strategi ini didasarkan pada komponen-komponen kunci berikut:
Aturan transaksi yang spesifik adalah sebagai berikut:
Strategi ini, dengan menggabungkan indikator RSI dan ATR, membangun sistem perdagangan yang relatif lengkap. Keuntungan utama dari strategi ini adalah banyak mekanisme penyaringan dan manajemen risiko yang baik, tetapi ada juga beberapa keterbatasan. Dengan arah optimasi yang diusulkan, strategi ini diharapkan untuk mendapatkan kinerja yang lebih baik. Kuncinya adalah untuk terus menyesuaikan dan mengoptimalkan parameter sesuai dengan lingkungan perdagangan yang sebenarnya, untuk menjaga fleksibilitas strategi.
/*backtest
start: 2024-11-10 00:00:00
end: 2024-12-09 08:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Custom RSI + ATR Strategy", overlay=true)
// === Настройки индикаторов ===
rsi_length = input.int(14, minval=1, title="RSI Length")
rsi_ma_length = input.int(10, minval=1, title="RSI MA Length")
atr_length = input.int(14, minval=1, title="ATR Length")
atr_threshold = input.float(0.5, minval=0.1, title="ATR Threshold")
// === Параметры стоп-лосса и тейк-профита ===
stop_loss_ticks = input.int(5000, title="Stop Loss Ticks")
take_profit_ticks = input.int(5000, title="Take Profit Ticks")
// === Получение значений индикаторов ===
rsi = ta.rsi(close, rsi_length)
rsi_ma = ta.sma(rsi, rsi_ma_length)
atr_value = ta.atr(atr_length)
// === Время для открытия сделок ===
start_time = timestamp("Europe/Prague", year, month, dayofmonth, 8, 0)
end_time = timestamp("Europe/Prague", year, month, dayofmonth, 21, 0)
in_trading_hours = (time >= start_time and time <= end_time)
// === Условие по волатильности ===
volatility_filter = atr_value > atr_threshold
// === Условия для лонгов ===
long_condition = ta.crossover(rsi, rsi_ma) and rsi < 45 and in_trading_hours and volatility_filter
if (long_condition)
strategy.entry("Long", strategy.long)
strategy.exit("Take Profit/Stop Loss", "Long", stop=low - stop_loss_ticks * syminfo.mintick, limit=high + take_profit_ticks * syminfo.mintick)
// === Условия для шортов ===
short_condition = ta.crossunder(rsi, rsi_ma) and rsi > 55 and in_trading_hours and volatility_filter
if (short_condition)
strategy.entry("Short", strategy.short)
strategy.exit("Take Profit/Stop Loss", "Short", stop=high + stop_loss_ticks * syminfo.mintick, limit=low - take_profit_ticks * syminfo.mintick)
// === Отображение индикаторов на графике ===
plot(rsi, color=color.blue, title="RSI")
plot(rsi_ma, color=color.red, title="RSI MA")
hline(45, "RSI 45", color=color.green)
hline(55, "RSI 55", color=color.red)
plot(atr_value, color=color.orange, title="ATR", linewidth=2)
hline(atr_threshold, "ATR Threshold", color=color.purple)