Strategi ini menggunakan indikator RSI untuk mengukur momentum harga dan menentukan waktu masuk dengan menghitung standar deviasi perubahan RSI. Strategi ini memasuki posisi panjang ketika momentum RSI melebihi ambang standar deviasi dan kurang dari momentum sebelumnya dikalikan dengan faktor kelelahan, dan memasuki posisi pendek dalam kondisi yang berlawanan. Strategi ini menggunakan pesanan batas untuk keluar, mengendalikan risiko dengan menetapkan target keuntungan dan stop loss ticks. Strategi ini dijalankan pada setiap tanda harga untuk menangkap semua pergerakan harga potensial.
Strategi ini memanfaatkan momentum RSI dan ambang standar deviasi untuk melakukan perdagangan pembalikan dalam lingkungan frekuensi tinggi. Dengan memperkenalkan faktor kelelahan dan keluarnya pesanan batas, strategi dapat menangkap peluang perdagangan yang dibawa oleh pergerakan harga sambil mengendalikan risiko. Namun, strategi masih membutuhkan optimasi lebih lanjut dalam aplikasi aktual, seperti memperkenalkan lebih banyak indikator, mengoptimalkan pengaturan parameter, memperkenalkan manajemen posisi dan penyaringan tren, dll., untuk meningkatkan stabilitas dan profitabilitas strategi.
/*backtest start: 2024-03-01 00:00:00 end: 2024-03-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("MCOTs Intuition Strategy", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1, initial_capital=50000, calc_on_every_tick=true) // Input for RSI period rsiPeriod = input(14, title="RSI Period") // Input for standard deviation multiplier stdDevMultiplier = input(1.0, title="Standard Deviation Multiplier") // Input for exhaustion detection exhaustionMultiplier = input(1.5, title="Exhaustion Multiplier") // Input for profit target and stop loss in ticks profitTargetTicks = input(8, title="Profit Target (ticks)") stopLossTicks = input(32, title="Stop Loss (ticks)") // Calculate RSI rsiValue = ta.rsi(close, rsiPeriod) // Calculate standard deviation of RSI changes rsiStdDev = ta.stdev(ta.change(rsiValue), rsiPeriod) // Calculate momentum momentum = ta.change(rsiValue) // Conditions for entering a long position longCondition = momentum > rsiStdDev * stdDevMultiplier and momentum < momentum[1] * exhaustionMultiplier if (longCondition) strategy.entry("Long", strategy.long) strategy.exit("Take Profit Long", "Long", limit=close + profitTargetTicks * syminfo.mintick) strategy.exit("Stop Loss Long", "Long", stop=close - stopLossTicks * syminfo.mintick) // Conditions for entering a short position shortCondition = momentum < -rsiStdDev * stdDevMultiplier and momentum > momentum[1] * exhaustionMultiplier if (shortCondition) strategy.entry("Short", strategy.short) strategy.exit("Take Profit Short", "Short", limit=close - profitTargetTicks * syminfo.mintick) strategy.exit("Stop Loss Short", "Short", stop=close + stopLossTicks * syminfo.mintick) // Plotting RSI value for reference plot(rsiValue, title="RSI", color=color.blue)