
Strategi ini menggunakan indikator RSI untuk mengukur pergerakan harga dan menentukan waktu masuk dengan menghitung standar deviasi dari perubahan RSI. Terbalik dengan posisi kosong, buka posisi lebih banyak ketika RSI bergerak di atas batas standar deviasi dan lebih kecil dari momentum sebelumnya dikalikan dengan faktor kegagalan. Strategi ini menggunakan posisi harga yang terbatas untuk mengendalikan risiko dengan mengatur stop loss dan stop loss. Strategi ini dijalankan pada setiap perubahan harga untuk menangkap semua potensi pergerakan harga.
Strategi ini memanfaatkan momentum RSI dan margin standar untuk melakukan perdagangan reversal di lingkungan frekuensi tinggi. Dengan memperkenalkan faktor kehancuran dan posisi terendah harga, strategi ini dapat menangkap peluang perdagangan yang ditimbulkan oleh fluktuasi harga sambil mengendalikan risiko. Namun, strategi ini perlu dioptimalkan lebih lanjut dalam aplikasi praktis, seperti memperkenalkan lebih banyak indikator, mengoptimalkan pengaturan parameter, memperkenalkan manajemen posisi dan penyaringan tren, 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)