Это количественная торговая стратегия, основанная на индикаторе MACD, которая выполняет сделки в течение определенного временного интервала. Основная стратегия использует быстрые и медленные скользящие средние для расчета значений MACD и генерирует сигналы на основе перекресток с сигнальной линией.
Стратегия использует 8-периодические и 16-периодические экспоненциальные скользящие средние (EMA) для расчета значений MACD и использует 11-периодическую простую скользящую среднюю (SMA) в качестве сигнальной линии. Сигналы покупки генерируются, когда линия MACD пересекает линию сигнала, в то время как сигналы продажи происходят на нисходящих пересечениях. Стратегия включает 1% стоп-лосс и 2% прибыль, и выполняет сделки только в пределах установленного пользователем временного диапазона (по умолчанию полный год 2023).
Это хорошо структурированная количественная торговая стратегия с четкой логикой. Она генерирует торговые сигналы через кроссоверы MACD, в сочетании с временной фильтрацией и управлением рисками для формирования практической торговой системы.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-27 00:00:00 period: 1d basePeriod: 1d 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/ // © sergengurgen83 //@version=5 strategy(title="MACD Crossover Strategy with Date Range", shorttitle="MACD Crossover strategys.g", overlay=true) // Kullanıcı girişleri fastLength = input.int(8, minval=1, title="Hızlı MA Süresi") slowLength = input.int(16, minval=1, title="Yavaş MA Süresi") signalLength = input.int(11, minval=1, title="Sinyal MA Süresi") stopLossPercent = input.float(1.0, title="Stop-Loss Yüzdesi") / 100 takeProfitPercent = input.float(2.0, title="Kar Al Yüzdesi") / 100 // Tarih aralığı girişleri startDate = input(timestamp("2023-01-01 00:00"), title="Başlangıç Tarihi") endDate = input(timestamp("2023-12-31 23:59"), title="Bitiş Tarihi") // Tarih aralığı kontrolü inDateRange = true // Hareketli Ortalamalar ve MACD Hesaplamaları fastMA = ta.ema(close, fastLength) slowMA = ta.ema(close, slowLength) macd = fastMA - slowMA signal = ta.sma(macd, signalLength) // Alım ve Satım sinyalleri buySignal = ta.crossover(macd, signal) and inDateRange sellSignal = ta.crossunder(macd, signal) and inDateRange // Strateji kuralları if (buySignal) strategy.entry("Buy", strategy.long) if (sellSignal) strategy.close("Buy") // Stop-Loss ve Kar Al seviyeleri strategy.exit("Sell", from_entry="Buy", loss=stopLossPercent * close, profit=takeProfitPercent * close) // Sinyallerin grafikte gösterilmesi plot(macd, color=color.blue, title="MACD") plot(signal, color=color.red, title="Sinyal") hline(0, color=color.purple, linestyle=hline.style_dashed) plotshape(series=buySignal, location=location.belowbar, color=color.green, style=shape.labelup, title="Al", text="AL") plotshape(series=sellSignal, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sat", text="SAT")