
Strategi ini menggunakan indeks moving average (EMA) sebagai filter tren dinamis, menggabungkan pola perilaku harga dan amplitudo gelombang nyata (ATR) untuk mengidentifikasi peluang perdagangan potensial. Inti dari strategi ini adalah mekanisme penciptaan sinyal masuk yang tepat, serta level stop loss (TP) dan stop loss (SL) yang diatur secara dinamis, yang bertujuan untuk memaksimalkan potensi keuntungan sekaligus mengontrol risiko secara efektif.
Identifikasi tren: Menggunakan 50 siklus EMA sebagai filter tren dinamis. Perhitungan overtaking hanya dilakukan ketika harga berada di atas EMA, sebaliknya perhitungan overtaking dilakukan. Ini memastikan bahwa arah perdagangan konsisten dengan tren keseluruhan.
Sinyal masuk: Strategi untuk menentukan waktu masuk dengan menganalisis perilaku harga tiga baris berturut-turut. Secara khusus, ia mencari pola berikut:
Konfirmasi Volatilitas: Menggunakan varian real bandwidth ((ATR) untuk memastikan hanya masuk saat ada cukup volatilitas. Ini membantu menghindari perdagangan saat pasar terlalu tenang.
Dinamis Stop: Setelah masuk, strategi akan menetapkan tujuan stop berdasarkan titik tertinggi terbaru ((membuat lebih banyak) atau titik terendah ((membuat lebih sedikit)). Metode ini memungkinkan untuk mendapatkan lebih banyak keuntungan dalam tren yang kuat.
Stop loss adaptif: posisi stop loss yang ditetapkan pada titik rendah terdekat ((membuat over) atau titik tinggi terdekat ((membuat kosong), memberikan perlindungan dinamis terhadap struktur pasar.
Pelaksanaan real-time: Strategi mengevaluasi kondisi pasar pada setiap penutupan, memastikan keputusan didasarkan pada data pasar terbaru.
Trend Alignment: Memastikan arah perdagangan selaras dengan tren utama melalui filter EMA, meningkatkan probabilitas keuntungan.
Masuk yang tepat: Syarat masuk yang ketat ((konfirmasi pergerakan harga dan volatilitas berkelanjutan) membantu mengurangi sinyal palsu dan meningkatkan kualitas transaksi.
Manajemen risiko yang dinamis: mekanisme stop-loss dan stop-loss yang beradaptasi memungkinkan strategi untuk menyesuaikan dengan struktur pasar secara fleksibel, tanpa membatasi keuntungan terlalu dini sambil melindungi dana.
Manfaatkan volatilitas: Dengan varian ATR, pastikan untuk masuk hanya ketika pasar menawarkan peluang perdagangan yang cukup, dan hindari perdagangan berlebihan pada periode rendah volatilitas.
Adaptasi multi-frame waktu: Parameter strategi dapat disesuaikan sesuai dengan varietas perdagangan dan jangka waktu yang berbeda, memberikan kemungkinan aplikasi yang luas.
Umpan balik visual: memberikan wawasan pasar yang intuitif kepada pedagang melalui tanda grafik yang jelas (termasuk sinyal beli dan jual, stop loss dan stop loss trigger).
Risiko False Breakthrough: Dalam pasar horizontal, strategi dapat salah mengartikan fluktuasi jangka pendek sebagai awal tren, yang menyebabkan perdagangan yang tidak perlu.
Efek slippage: Dalam pasar yang bergerak cepat, harga eksekusi yang sebenarnya mungkin berbeda secara signifikan dari harga saat sinyal dihasilkan.
Overtrading: Pada periode volatilitas tinggi, strategi dapat menghasilkan terlalu banyak sinyal, meningkatkan biaya transaksi.
Penundaan pembalikan tren: Ketergantungan pada EMA dapat menyebabkan kehilangan peluang atau kerugian yang tidak perlu pada awal pembalikan tren.
Sensitivitas parameter: Kinerja strategi mungkin sangat sensitif terhadap parameter input (seperti siklus EMA, ATR) dan perlu dioptimalkan dengan hati-hati.
Untuk mengurangi risiko ini, langkah-langkah berikut dapat dipertimbangkan:
Analisis multi-frame: Mengintegrasikan informasi tren dari frame waktu yang lebih tinggi dapat meningkatkan akurasi keputusan masuk. Misalnya, EMA garis matahari dapat ditambahkan sebagai filter tren tambahan.
Peningkatan identifikasi tren: Pertimbangkan untuk menggunakan indikator tren yang lebih kompleks, seperti Indeks Pergerakan Arah (DMI) atau Parabolic SAR, untuk memberikan identifikasi tren yang lebih akurat.
Mekanisme stop optimasi: implementasi tracking stop, memungkinkan untuk memegang posisi lebih lama dalam tren yang kuat. Anda dapat mempertimbangkan untuk menggunakan kelipatan ATR untuk secara dinamis menyesuaikan tingkat stop.
Syarat masuk yang lebih halus: menambahkan konfirmasi volume transaksi atau indikator teknis lainnya (seperti RSI atau MACD) untuk memverifikasi pergerakan harga, mengurangi sinyal palsu.
Peningkatan manajemen risiko: mencapai penyesuaian ukuran posisi berdasarkan ukuran akun, memastikan bahwa risiko setiap perdagangan adalah sama. Pertimbangkan untuk menggunakan target risiko-pengembalian rasio untuk mengoptimalkan keputusan perdagangan.
Adaptasi lingkungan pasar: mengembangkan sistem klasifikasi lingkungan pasar (seperti tren, jangkauan, volatilitas tinggi / rendah) dan menyesuaikan parameter strategi sesuai dengan kondisi pasar yang berbeda.
Integrasi pembelajaran mesin: menggunakan algoritma pembelajaran mesin untuk mengoptimalkan pilihan parameter atau memprediksi waktu masuk / keluar yang optimal, meningkatkan kemampuan adaptasi strategi.
Hal ini bertujuan untuk meningkatkan strategi stabilitas, mengurangi sinyal palsu, dan mempertahankan efektivitasnya dalam berbagai kondisi pasar. Setiap optimasi harus dilakukan secara menyeluruh, backtesting dan pengujian ke depan, untuk memastikan bahwa perbaikan benar-benar membawa peningkatan kinerja.
Strategi Tracking Trend Dinamis dan Stop Loss Precision adalah sistem perdagangan jangka pendek yang dirancang dengan baik yang menggabungkan pelacakan tren, perdagangan dinamis, dan teknik manajemen risiko yang tepat. Strategi ini dirancang untuk menangkap peluang tren pasar jangka pendek melalui penyaringan tren EMA, persyaratan masuk yang ketat, dan mekanisme stop loss dinamis, sambil melindungi dana perdagangan dari risiko yang berlebihan.
Keunggulan utama dari strategi ini adalah kemampuan untuk beradaptasi dengan struktur pasar dan pengendalian risiko yang tepat, sehingga berpotensi untuk mempertahankan kinerja yang stabil di berbagai lingkungan pasar. Namun, seperti semua strategi perdagangan, strategi ini juga menghadapi beberapa risiko yang melekat, seperti false breakout dan sensitivitas parameter.
Strategi ini memiliki potensi untuk meningkatkan kinerja dan adaptasi lebih lanjut melalui optimasi dan perbaikan berkelanjutan, terutama dalam analisis multi-frame, identifikasi tren canggih, dan aplikasi pembelajaran mesin. Strategi ini memberikan kerangka dasar yang kuat bagi pedagang yang mencari keseimbangan antara peluang dan manajemen risiko dalam perdagangan jangka pendek.
Akhirnya, penting untuk diingat bahwa tidak ada strategi yang sempurna atau berlaku untuk semua kondisi pasar. Penerapan yang sukses membutuhkan pemantauan, pengujian, dan penyesuaian yang berkelanjutan, serta pemahaman yang mendalam tentang toleransi risiko dan tujuan perdagangan individu.
/*backtest
start: 2023-07-25 00:00:00
end: 2024-07-30 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Scalp Slayer (i)", overlay=true)
// Input Parameters
filterNumber = input.float(1.5, "Filter Number", minval=1.0, maxval=10.0, tooltip="Higher = More aggressive Filter, Lower = Less aggressive")
emaTrendPeriod = input.int(50, "EMA Trend Period", minval=1, tooltip="Period for the EMA used for trend filtering")
lookbackPeriod = input.int(20, "Lookback Period for Highs/Lows", minval=1, tooltip="Period for determining recent highs/lows")
colorTP = input.color(title='Take Profit Color', defval=color.orange)
colorSL = input.color(title='Stop Loss Color', defval=color.red) // Added color for Stop Loss
// Inputs for visibility
showBuyLabels = input.bool(true, title="Show Buy Labels")
showSellLabels = input.bool(true, title="Show Sell Labels")
showStrategy = input.bool(true, title="Show Strategy", tooltip="Enable for strategy testing")
// Calculations
tr = high - low
ema = filterNumber * ta.ema(tr, 50)
trendEma = ta.ema(close, emaTrendPeriod) // Calculate the EMA for the trend filter
// Ensure calculations are based on historical data only
recentHigh = ta.highest(high, lookbackPeriod)
recentLow = ta.lowest(low, lookbackPeriod)
// Variables to track the entry prices for profit target and stop-loss
var float entryPriceLong = na
var float entryPriceShort = na
var float targetPriceLong = na
var float targetPriceShort = na
var float stopLossLong = na
var float stopLossShort = na
// Buy and Sell Conditions with Trend Filter
buy = close > trendEma and // Buy only if above the trend EMA
close[2] > open[2] and close[1] > open[1] and close > open and
(math.abs(close[2] - open[2]) > math.abs(close[1] - open[1])) and
(math.abs(close - open) > math.abs(close[1] - open[1])) and
close > close[1] and close[1] > close[2] and tr > ema
sell = close < trendEma and // Sell only if below the trend EMA
close[2] < open[2] and close[1] < open[1] and close < open and
(math.abs(close[2] - open[2]) > math.abs(close[1] - open[1])) and
(math.abs(close - open) > math.abs(close[1] - open[1])) and
close < close[1] and close[1] < close[2] and tr > ema
// Entry Rules
if (buy and barstate.isconfirmed) // Check for buy condition on candle close
if (showStrategy)
strategy.entry("Buy", strategy.long, comment="Buy at Close")
entryPriceLong := close // Track entry price for long position
targetPriceLong := recentHigh // Set take profit target to recent high
stopLossLong := recentLow // Set stop-loss to recent low
if (sell and barstate.isconfirmed) // Check for sell condition on candle close
if (showStrategy)
strategy.entry("Sell", strategy.short, comment="Sell at Close")
entryPriceShort := close // Track entry price for short position
targetPriceShort := recentLow // Set take profit target to recent low
stopLossShort := recentHigh // Set stop-loss to recent high
// Take Profit and Stop Loss Logic
signalBuyTPPrint = (not na(entryPriceLong) and close >= targetPriceLong)
signalSellTPPrint = (not na(entryPriceShort) and close <= targetPriceShort)
signalBuySLPrint = (not na(entryPriceLong) and close <= stopLossLong)
signalSellSLPrint = (not na(entryPriceShort) and close >= stopLossShort)
if (signalBuyTPPrint)
if (showStrategy)
strategy.close("Buy", comment="Close Buy at Profit Target")
entryPriceLong := na // Reset entry price for long position
targetPriceLong := na // Reset target price for long position
stopLossLong := na // Reset stop-loss for long position
if (signalSellTPPrint)
if (showStrategy)
strategy.close("Sell", comment="Close Sell at Profit Target")
entryPriceShort := na // Reset entry price for short position
targetPriceShort := na // Reset target price for short position
stopLossShort := na // Reset stop-loss for short position
if (signalBuySLPrint)
if (showStrategy)
strategy.close("Buy", comment="Close Buy at Stop Loss")
entryPriceLong := na // Reset entry price for long position
targetPriceLong := na // Reset target price for long position
stopLossLong := na // Reset stop-loss for long position
if (signalSellSLPrint)
if (showStrategy)
strategy.close("Sell", comment="Close Sell at Stop Loss")
entryPriceShort := na // Reset entry price for short position
targetPriceShort := na // Reset target price for short position
stopLossShort := na // Reset stop-loss for short position
// Plot Buy and Sell Labels with Visibility Conditions
plotshape(showBuyLabels and buy, "Buy", shape.labelup, location=location.belowbar, color=color.green, text="BUY", textcolor=color.white, size=size.tiny, offset=1)
plotshape(showSellLabels and sell, "Sell", shape.labeldown, location=location.abovebar, color=color.red, text="SELL", textcolor=color.white, size=size.tiny, offset=1)
// Plot Take Profit Flags
plotshape(showBuyLabels and signalBuyTPPrint, title="Take Profit (buys)", text="TP", style=shape.flag, location=location.abovebar, color=colorTP, textcolor=color.white, size=size.tiny)
plotshape(showSellLabels and signalSellTPPrint, title="Take Profit (sells)", text="TP", style=shape.flag, location=location.belowbar, color=colorTP, textcolor=color.white, size=size.tiny)
// Plot Stop Loss "X" Marker
plotshape(showBuyLabels and signalBuySLPrint, title="Stop Loss (buys)", text="X", style=shape.xcross, location=location.belowbar, color=colorSL, textcolor=color.white, size=size.tiny)
plotshape(showSellLabels and signalSellSLPrint, title="Stop Loss (sells)", text="X", style=shape.xcross, location=location.abovebar, color=colorSL, textcolor=color.white, size=size.tiny)
// Plot Trend EMA for reference
plot(showStrategy ? trendEma : na, title="Trend EMA", color=color.purple, linewidth=2)
// Plot recent high and low for debugging and validation
plot(showStrategy ? recentHigh : na, title="Recent High", color=color.green, linewidth=1)
plot(showStrategy ? recentLow : na, title="Recent Low", color=color.red, linewidth=1)
// Debugging: Plot bar index to verify real-time behavior
plot(showStrategy ? bar_index : na, title="Bar Index", color=color.blue)
// Debugging: Print the take profit and stop loss conditions
//label.new(bar_index, high, text="TP Buy: " + tostring(signalBuyTPPrint) + "\nSL Buy: " + tostring(signalBuySLPrint) + "\nTP Sell: " + tostring(signalSellTPPrint) + "\nSL Sell: " + tostring(signalSellSLPrint), color=color.blue, textcolor=color.white, size=size.small, style=label.style_label_down)