Ini adalah sistem strategi dagangan yang menggabungkan penunjuk momentum RSI dengan penunjuk turun naik ATR. Strategi ini mengenal pasti peluang dagangan yang berpotensi dengan memantau persilangan RSI dengan purata bergerak sambil menggunakan penunjuk ATR sebagai penapis turun naik untuk memastikan turun naik pasaran yang mencukupi. Strategi ini beroperasi semasa waktu dagangan Eropah (8:00-21:00 waktu Prague) pada jangka masa 5 minit dengan tahap mengambil keuntungan dan stop-loss tetap.
Logik teras adalah berdasarkan beberapa komponen utama:
Peraturan perdagangan khusus:
Strategi ini membina sistem perdagangan yang agak lengkap dengan menggabungkan penunjuk RSI dan ATR. Kekuatannya utama terletak pada pelbagai mekanisme penapisan dan pengurusan risiko yang komprehensif, walaupun terdapat batasan. Melalui pengoptimuman yang dicadangkan, strategi menunjukkan potensi untuk peningkatan prestasi. Kuncinya adalah penyesuaian parameter berterusan dan pengoptimuman berdasarkan keadaan perdagangan sebenar untuk mengekalkan daya adaptasi.
/*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)