Strategi ini didasarkan pada indikator MACD, ADX, dan EMA200, yang bertujuan untuk menangkap peluang perdagangan tren di beberapa kerangka waktu dengan menganalisis tren dan momentum pasar saat ini. Ide utama di balik strategi ini adalah menggunakan indikator MACD untuk menentukan tren pasar, indikator ADX untuk mengkonfirmasi kekuatan tren, dan EMA200 sebagai filter tren. Dengan menggunakan beberapa kerangka waktu, strategi ini bertujuan untuk mendapatkan lebih banyak peluang perdagangan dan rasio risiko-manfaat yang lebih baik.
Solusi:
Melalui optimasi ini, strategi dapat ditingkatkan keandalan dan profitabilitas, memungkinkan untuk lebih beradaptasi dengan lingkungan pasar yang berbeda.
Dengan menggabungkan indikator MACD, ADX, dan EMA200, strategi ini bertujuan untuk menangkap peluang perdagangan tren di beberapa kerangka waktu, menunjukkan keuntungan dan kelayakan tertentu. Kunci strategi terletak pada identifikasi tren dan konfirmasi kekuatan tren, yang dapat dicapai melalui aksi gabungan dari beberapa indikator. Strategi ini juga menggunakan stop loss tetap dan mengambil tingkat keuntungan untuk membantu mengendalikan risiko. Namun, strategi ini memiliki beberapa keterbatasan, seperti potensi kinerja yang kurang baik di pasar yang berbelit-belit dan ketidakmampuan stop loss tetap dan mengambil tingkat keuntungan untuk beradaptasi dengan perubahan pasar.
Perbaikan di masa depan dapat mencakup memperkenalkan lebih banyak indikator konfirmasi tren, mengoptimalkan metode stop loss dan take profit, menambahkan kondisi penyaringan, melakukan optimasi parameter, dan memperkenalkan algoritma pembelajaran mesin untuk terus meningkatkan kinerja strategi. Secara keseluruhan, strategi memiliki logika yang jelas dan implementasi yang sederhana, menjadikannya dasar yang cocok untuk optimasi dan perbaikan lebih lanjut. Ini menawarkan wawasan yang berharga untuk aplikasi praktis dalam perdagangan dunia nyata.
/*backtest start: 2024-02-01 00:00:00 end: 2024-02-29 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © colemanrumsey //@version=5 strategy("15-Minute Trend Trading Strategy", overlay=true) // Exponential Moving Average (EMA) ema200 = ta.ema(close, 200) // MACD Indicator [macdLine, signalLine, _] = ta.macd(close, 12, 26, 9) macdHistogram = macdLine - signalLine // Calculate True Range (TR) tr = ta.tr // Calculate +DI and -DI plusDM = high - high[1] minusDM = low[1] - low atr14 = ta.atr(14) plusDI = ta.wma(100 * ta.sma(plusDM, 14) / atr14, 14) minusDI = ta.wma(100 * ta.sma(minusDM, 14) / atr14, 14) // Calculate Directional Movement Index (DX) dx = ta.wma(100 * math.abs(plusDI - minusDI) / (plusDI + minusDI), 14) // Calculate ADX adxValue = ta.wma(dx, 14) // Long Entry Condition longCondition = close > ema200 and (macdLine > signalLine) and (macdLine < 0) and (adxValue >= 25) // Short Entry Condition shortCondition = close < ema200 and (macdLine < signalLine) and (macdLine > 0) and (adxValue >= 25) // Calculate ATR for Stop Loss atrValue = ta.atr(14) // Initialize Take Profit and Stop Loss var float takeProfit = na var float stopLoss = na // Calculate Risk (Stop Loss Distance) risk = close - low[1] // Using the previous candle's low as stop loss reference // Strategy Orders if longCondition stopLoss := close * 0.99 // Set Stop Loss 1% below the entry price takeProfit := close * 1.015 // Set Take Profit 1.5% above the entry price strategy.entry("Buy", strategy.long, stop=stopLoss, limit=takeProfit) if shortCondition stopLoss := close * 1.01 // Set Stop Loss 1% above the entry price takeProfit := close * 0.985 // Set Take Profit 1.5% below the entry price strategy.entry("Sell", strategy.short, stop=stopLoss, limit=takeProfit) // Plot EMA // plot(ema200, color=color.blue, linewidth=1, title="200 EMA") // Plot MACD Histogram // plot(macdHistogram, color=macdHistogram > 0 ? color.green : color.red, style=plot.style_columns, title="MACD Histogram") // Display ADX Value // plot(adxValue, color=color.purple, title="ADX Value")