
Strategi pengembalian harga frekuensi tinggi adalah sistem perdagangan kuantitatif berbasis indikator teknis yang menyediakan peluang perdagangan untuk pengembalian harga di lingkungan pasar banteng. Strategi ini adalah optimasi dan penulisan ulang strategi “Buy The Dips in Bull Market” yang dirilis oleh Coinrule pada tahun 2020 dan dibangun kembali dengan menggunakan Pine Script v6. Dengan analisis mendalam terhadap data tingkat jam Bitcoin selama lebih dari dua tahun, versi yang dioptimalkan memberikan keuntungan tambahan 312.6% dibandingkan dengan strategi asli dan mencapai tingkat kemenangan 74.8%.
Strategi ini mengambil keuntungan dari perubahan harga sementara di pasar bullish, masuk lebih banyak saat RSI menunjukkan oversold dan struktur pasar tetap bullish, dan keluar saat harga naik kembali ke atas rata-rata bergerak kritis.
Strategi ini menggunakan sistem penilaian multi-syarat, yang terdiri dari logika inti sebagai berikut:
Logika input: Strategi memasuki posisi multihead ketika semua kondisi berikut terpenuhi:
Logika Keluar: Strategi ini berlaku jika kedua kondisi berikut ini terpenuhi:
Opsi perdagangan kosong: Ketika diaktifkan, strategi ini juga dapat digunakan untuk melakukan perdagangan kosong dengan logika sebaliknya:
Manajemen Risiko: Strategi ini menggunakan pengaturan stop loss / stop loss berbasis ATR, menggunakan volatilitas untuk menentukan tingkat risiko secara dinamis. Secara default, rasio pengembalian risiko 2: 1 digunakan, dan menawarkan opsi yang sepenuhnya dapat disesuaikan. Selain itu, ada opsi manajemen risiko berdasarkan persentase tetap.
Tingkat keberhasilan yang tinggi: Dengan pengaturan parameter yang dioptimalkan, strategi ini mencapai tingkat kemenangan 74.8%, yang merupakan angka yang sangat besar dalam strategi perdagangan kuantitatif. Tingkat kemenangan yang tinggi membuat kurva dana lebih halus dan membantu mengurangi stres psikologis.
Manajemen risiko dinamis: Strategi ini menggunakan mekanisme stop loss dan stop loss berbasis ATR, yang dapat secara otomatis menyesuaikan tingkat risiko sesuai dengan volatilitas pasar. Metode ini lebih ilmiah daripada persentase tetap dan dapat mempertahankan kontrol risiko yang konsisten dalam lingkungan tingkat fluktuasi yang berbeda.
Kombinasi parameter yang dioptimalkan:
Kemampuan transaksi dua arah: Strategi ini menyediakan opsi opsi perdagangan kosong yang memungkinkan untuk beradaptasi dalam berbagai lingkungan pasar, dan tidak hanya terbatas pada perdagangan satu arah.
Visibilitas penuh: Strategi menawarkan fitur pemetaan yang ditingkatkan, termasuk tampilan tingkat risiko, yang membantu pedagang memahami logika perdagangan dan manajemen risiko secara intuitif.
Ketergantungan pasar banteng: Strategi ini dirancang khusus untuk kondisi bull market, di mana kinerja dapat menurun secara signifikan dalam lingkungan bear market jangka panjang. Strategi ini dapat menghasilkan sinyal palsu yang sering terjadi di pasar yang tidak jelas tren atau horizontal.
Trend mengikuti karakteristik: Sebagai sebuah strategi trend-following, strategi ini mungkin mengalami retracement yang besar pada saat trend reversal yang kuat. Terutama ketika pasar bergerak cepat dari bull market ke bear market, strategi ini mungkin tidak dapat disesuaikan pada waktu yang tepat.
Tantangan transaksi frekuensi tinggi: Strategi menghasilkan beberapa sinyal yang perlu dipantau secara aktif, yang dapat meningkatkan biaya transaksi dan kompleksitas operasi. Perdagangan frekuensi tinggi dapat menyebabkan peningkatan slippage dan biaya, yang mempengaruhi pendapatan aktual.
Parameter Sensitivitas: Kinerja strategi sangat sensitif terhadap pengaturan parameter, dan mungkin memerlukan optimasi parameter yang berbeda untuk pasar dan jangka waktu yang berbeda. Pemilihan parameter yang tidak tepat dapat menyebabkan overfitting atau penurunan kualitas sinyal.
Keterbatasan Manajemen Risiko: Meskipun manajemen risiko ATR adalah metode yang unggul, dalam kondisi pasar yang ekstrim (seperti flash crash atau skydiving), stop loss mungkin tidak dapat dilakukan dengan harga yang diharapkan, menyebabkan kerugian yang sebenarnya lebih besar dari yang diharapkan.
Penyesuaian parameter adaptasi: Dapat dipertimbangkan untuk menerapkan sistem parameter adaptif yang secara otomatis menyesuaikan RSI threshold dan siklus moving average sesuai dengan volatilitas pasar dan intensitas tren. Misalnya, menggunakan RSI threshold yang lebih rendah dan siklus moving average yang lebih panjang dalam lingkungan yang sangat berfluktuasi untuk mengurangi sinyal palsu.
Klasifikasi kondisi pasar: Menambahkan algoritma yang lebih kompleks untuk mengidentifikasi kondisi pasar, dengan jelas membedakan antara pasar bull, bear, dan crossover, dan menggunakan logika perdagangan yang berbeda untuk kondisi pasar yang berbeda. Indikator tambahan seperti ADX dapat diperkenalkan untuk mengukur kekuatan tren.
Optimalisasi Pembelajaran Mesin: Menggunakan algoritma pembelajaran mesin untuk secara otomatis mengidentifikasi kombinasi parameter terbaik dan bahkan dapat membangun model prediksi dinamis untuk meningkatkan kualitas sinyal. Ini dapat dilakukan dengan pelatihan data historis dan pelatihan ulang secara berkala untuk menyesuaikan diri dengan perubahan pasar.
Konfirmasi multi-frame waktu: Menambahkan analisis multi-frame waktu untuk memastikan bahwa sinyal masuk didukung oleh tren frame waktu yang lebih besar pada saat yang sama. Hal ini dapat dilakukan dengan memeriksa urutan rata-rata bergerak dan pembacaan RSI untuk beberapa periode waktu, sehingga mengurangi sinyal palsu.
Filter tingkat fluktuasi: Menambahkan mekanisme penyaringan tingkat fluktuasi, menangguhkan perdagangan atau menyesuaikan parameter risiko dalam lingkungan yang sangat fluktuatif. Persentase historis ATR dapat digunakan sebagai ukuran fluktuasi, dan strategi perdagangan yang lebih konservatif dapat diambil ketika fluktuasi melebihi batas tertentu.
Pengelolaan dana yang optimal: Menerapkan sistem manajemen dana yang lebih canggih, menyesuaikan ukuran posisi sesuai dengan ukuran akun, kinerja strategi baru-baru ini, dan dinamika kondisi pasar. Misalnya, meningkatkan posisi secara bertahap setelah keuntungan berturut-turut dan mengurangi posisi setelah kerugian berturut-turut.
High-frequency price retracement scalping strategy adalah sistem perdagangan kuantitatif yang dirancang khusus untuk lingkungan bull market, untuk menangkap peluang retracement harga dengan mengidentifikasi kondisi oversold dan mengkonfirmasi tren rata-rata bergerak. Berbanding dengan versi asli, strategi ini mencapai peningkatan kinerja yang signifikan melalui pengoptimalan parameter dan peningkatan fitur manajemen risiko, mencapai 312.6% keuntungan tambahan dan 74.8% tingkat kemenangan.
Keunggulan inti dari strategi ini adalah sistem manajemen risiko yang dinamis dan kinerja tingkat kemenangan yang tinggi, yang membuatnya berkinerja baik di lingkungan pasar bullish. Namun, strategi ini juga sangat bergantung pada lingkungan pasar, dan risiko yang lebih besar dapat terjadi selama perlambatan tren.
Optimisasi di masa depan akan berfokus pada penyesuaian parameter adaptasi, klasifikasi status pasar, aplikasi pembelajaran mesin, analisis multi-frame waktu, dan sistem manajemen dana yang lebih canggih. Dengan optimasi ini, strategi diharapkan dapat mempertahankan kinerja yang stabil dalam berbagai lingkungan pasar, dan lebih meningkatkan robustitas dan profitabilitas.
Tidak peduli apa jenis optimasi yang digunakan, pedagang harus mempertimbangkan risiko pasar, melakukan verifikasi feedback yang memadai, dan menyesuaikan parameter strategi dan alokasi dana sesuai dengan toleransi risiko pribadi dan tujuan investasi.
/*backtest
start: 2025-06-13 00:00:00
end: 2025-07-13 00:00:00
period: 10m
basePeriod: 10m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":200000}]
*/
// === DESCRIPTION ===
// Buy The Dips Bull Market Strategy - Optimized
// Modified strategy based on the original 2020 strategy from Coinrule
// Optimized parameters based on 2+ years of BTC hourly data analysis
// Performance improvement: 312.6% better returns with 74.8% win rate
// Enters long when RSI is oversold and we're in a bull market structure
// Exits when price recovers above fast MA and fast MA > slow MA
// Quant Trading Pro
//@version=6
strategy(title="High Freq Buy The Dips Bull Market [Quant Trading]",
shorttitle="High Freq Buy The Dips BUll Market",
overlay=true,
initial_capital=1000,
default_qty_type=strategy.percent_of_equity,
default_qty_value=100,
commission_type=strategy.commission.percent,
commission_value=0.1,
slippage=3,
margin_long=0,
margin_short=0)
// === INPUT PARAMETERS ===
// RSI Settings
lengthRSI = input.int(14, "RSI Period", minval=1, maxval=50, group="📊 RSI Settings")
rsiBuySignal = input.int(45, "RSI Buy Signal", minval=20, maxval=50, group="📊 RSI Settings")
// Moving Average Settings
maFastLength = input.int(15, "Fast MA Length", minval=1, maxval=50, group="📈 Moving Averages")
maSlowLength = input.int(40, "Slow MA Length", minval=10, maxval=100, group="📈 Moving Averages")
maLongLength = input.int(150, "Long MA Length", minval=50, maxval=300, group="📈 Moving Averages")
// Trade Settings
allowShortTrades = input.bool(false, "Allow Short Trades?", group="🚫 Short Trades")
// Risk Management - ATR Based
enableATRRisk = input.bool(true, "Enable ATR Risk Management", group="🛡️ Risk Management")
atrLength = input.int(14, "ATR Period", minval=1, maxval=50, group="🛡️ Risk Management")
atrMultiplier = input.float(2.0, "ATR Stop Loss Multiplier", minval=0.5, maxval=5.0, step=0.1, group="🛡️ Risk Management")
riskRewardRatio = input.float(2.0, "Risk Reward Ratio", minval=1.0, maxval=10.0, step=0.1, group="🛡️ Risk Management")
// Optional Percentage-based Risk Management
usePercentageRisk = input.bool(false, "Use Percentage Instead of ATR", group="🛡️ Risk Management")
stopLossPercent = input.float(5.0, "Stop Loss (%)", minval=1.0, maxval=20.0, step=0.5, group="🛡️ Risk Management")
takeProfitPercent = input.float(10.0, "Take Profit (%)", minval=2.0, maxval=50.0, step=0.5, group="🛡️ Risk Management")
// === 1️⃣ CALCULATIONS ===
// RSI Calculation
rsiValue = ta.rsi(close, lengthRSI)
// Moving Averages
maFast = ta.sma(close, maFastLength)
maSlow = ta.sma(close, maSlowLength)
maLong = ta.sma(close, maLongLength)
// ATR Calculation for Risk Management
atrValue = ta.atr(atrLength)
// === 2️⃣ ENTRY & EXIT LOGIC ===
// Long Entry Conditions
rsiOversold = rsiValue < rsiBuySignal
bullMarketStructure = maLong < maSlow // Long MA below slow MA indicates bullish structure
longCondition = rsiOversold and bullMarketStructure
// Long Exit Conditions
priceRecovery = close > maFast
maAlignment = maFast > maSlow
longExitCondition = priceRecovery and maAlignment
// Short Entry Conditions (reverse logic)
rsiOverbought = rsiValue > (100 - rsiBuySignal) // If RSI buy signal is 35, short when RSI > 65
bearMarketStructure = maLong > maSlow // Long MA above slow MA indicates bearish structure
shortCondition = rsiOverbought and bearMarketStructure and allowShortTrades
// Short Exit Conditions (reverse logic)
priceDecline = close < maFast
maAlignmentBear = maFast < maSlow
shortExitCondition = priceDecline and maAlignmentBear and allowShortTrades
// === 3️⃣ TRADE EXECUTIONS ===
// Long Trades
if longCondition
strategy.entry("Long", strategy.long)
// Long Exits
if longExitCondition
strategy.close("Long")
// Short Trades (if enabled)
if shortCondition
strategy.entry("Short", strategy.short)
// Short Exits
if shortExitCondition
strategy.close("Short")
// ATR-Based Risk Management (if enabled)
if enableATRRisk and not usePercentageRisk
// Calculate ATR-based stop loss and take profit levels
longStopLoss = close - (atrValue * atrMultiplier)
longTakeProfit = close + (atrValue * atrMultiplier * riskRewardRatio)
shortStopLoss = close + (atrValue * atrMultiplier)
shortTakeProfit = close - (atrValue * atrMultiplier * riskRewardRatio)
// Long position risk management
strategy.exit("Long Exit", from_entry="Long",
stop=longStopLoss,
limit=longTakeProfit)
// Short position risk management
if allowShortTrades
strategy.exit("Short Exit", from_entry="Short",
stop=shortStopLoss,
limit=shortTakeProfit)
// Percentage-Based Risk Management (Alternative)
else if enableATRRisk and usePercentageRisk
strategy.exit("Long Exit", from_entry="Long",
stop=strategy.position_avg_price * (1 - stopLossPercent / 100),
limit=strategy.position_avg_price * (1 + takeProfitPercent / 100))
if allowShortTrades
strategy.exit("Short Exit", from_entry="Short",
stop=strategy.position_avg_price * (1 + stopLossPercent / 100),
limit=strategy.position_avg_price * (1 - takeProfitPercent / 100))
// === 4️⃣ VISUALIZATIONS ===
// Moving Averages - ensure they're properly connected to price data
plot(maFast, "Fast MA", color=color.new(color.purple, 0), linewidth=2, display=display.all)
plot(maSlow, "Slow MA", color=color.new(color.orange, 0), linewidth=2, display=display.all)
plot(maLong, "Long MA", color=color.new(color.blue, 0), linewidth=3, display=display.all)
// Entry/Exit Signals - ensure they're anchored to bars
//plotshape(longCondition, title="Long Entry", location=location.belowbar,
// color=color.new(color.green, 0), style=shape.triangleup, size=size.small)
//plotshape(longExitCondition, title="Long Exit", location=location.abovebar,
// color=color.new(color.red, 0), style=shape.triangledown, size=size.small)
// Short signals (if enabled)
//plotshape(shortCondition, title="Short Entry", location=location.abovebar,
// color=color.new(color.red, 0), style=shape.triangledown, size=size.small)
//plotshape(shortExitCondition, title="Short Exit", location=location.belowbar,
// color=color.new(color.green, 0), style=shape.triangleup, size=size.small)
// Risk Management Visualization
var float longSL = na
var float longTP = na
var float shortSL = na
var float shortTP = na
// Set risk levels only when entering new positions
if longCondition and enableATRRisk
if not usePercentageRisk
longSL := close - (atrValue * atrMultiplier)
longTP := close + (atrValue * atrMultiplier * riskRewardRatio)
else
longSL := close * (1 - stopLossPercent / 100)
longTP := close * (1 + takeProfitPercent / 100)
if shortCondition and enableATRRisk
if not usePercentageRisk
shortSL := close + (atrValue * atrMultiplier)
shortTP := close - (atrValue * atrMultiplier * riskRewardRatio)
else
shortSL := close * (1 + stopLossPercent / 100)
shortTP := close * (1 - takeProfitPercent / 100)
// Clear levels when positions are closed
if strategy.position_size == 0
longSL := na
longTP := na
shortSL := na
shortTP := na
// Plot risk levels only when in position
plot(strategy.position_size > 0 ? longSL : na, "Long Stop Loss", color=color.new(color.red, 0), style=plot.style_linebr, linewidth=2)
plot(strategy.position_size > 0 ? longTP : na, "Long Take Profit", color=color.new(color.green, 0), style=plot.style_linebr, linewidth=2)
plot(strategy.position_size < 0 ? shortSL : na, "Short Stop Loss", color=color.new(color.red, 50), style=plot.style_linebr, linewidth=2)
plot(strategy.position_size < 0 ? shortTP : na, "Short Take Profit", color=color.new(color.green, 50), style=plot.style_linebr, linewidth=2)