Strategi ini menggunakan dua rata-rata bergerak eksponensial (EMA) untuk menangkap perubahan tren harga. Ketika EMA jangka pendek melintasi di atas EMA jangka panjang dari bawah, sinyal beli dihasilkan; ketika EMA jangka pendek melintasi di bawah EMA jangka panjang dari atas, sinyal jual dihasilkan. Strategi ini juga menetapkan batas stop loss dan take profit harian untuk mengendalikan kerugian dan keuntungan sehari-hari.
Strategi crossover rata-rata bergerak ganda EMA adalah strategi perdagangan yang sederhana dan mudah dimengerti yang cocok untuk pasar tren. Dengan menggunakan crossover rata-rata bergerak cepat dan lambat, strategi ini dapat menangkap perubahan tren harga dengan relatif baik. Pada saat yang sama, pengaturan stop loss dan take profit harian dapat secara efektif mengendalikan risiko. Namun, strategi ini dapat berkinerja buruk di pasar yang bergolak atau selama pembalikan tren dan perlu dioptimalkan dan ditingkatkan dengan menggabungkan indikator teknis dan metode analisis lainnya.
/*backtest start: 2023-06-01 00:00:00 end: 2024-06-06 00:00:00 period: 1d basePeriod: 1h 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/ // © DD173838 //@version=5 strategy("Moving Average Strategy with Daily Limits", overlay=true) // Moving Average settings shortMaLength = input.int(9, title="Short MA Length") longMaLength = input.int(21, title="Long MA Length") // Calculate MAs shortMa = ta.ema(close, shortMaLength) longMa = ta.ema(close, longMaLength) // Plot MAs plot(shortMa, title="9 EMA", color=color.blue) plot(longMa, title="21 EMA", color=color.red) // Strategy conditions crossUp = ta.crossover(shortMa, longMa) crossDown = ta.crossunder(shortMa, longMa) // Debug plots to check cross conditions plotshape(series=crossUp, title="Cross Up", location=location.belowbar, color=color.green, style=shape.labelup, text="UP") plotshape(series=crossDown, title="Cross Down", location=location.abovebar, color=color.red, style=shape.labeldown, text="DOWN") // Entry at cross signals if (crossUp) strategy.entry("Long", strategy.long) if (crossDown) strategy.entry("Short", strategy.short) // Daily drawdown and profit limits var float startOfDayEquity = na if (na(startOfDayEquity) or ta.change(time('D')) != 0) startOfDayEquity := strategy.equity maxDailyLoss = 50000 * 0.0025 maxDailyProfit = 50000 * 0.02 currentDailyPL = strategy.equity - startOfDayEquity if (currentDailyPL <= -maxDailyLoss) strategy.close_all(comment="Max Daily Loss Reached") if (currentDailyPL >= maxDailyProfit) strategy.close_all(comment="Max Daily Profit Reached")