Эта стратегия является улучшенной версией основанной на индикаторе MACD торговой стратегии. Она сочетает в себе тенденционные характеристики индикатора MACD с идеями импульсной торговли, генерируя торговые сигналы путем анализа различий между быстрыми и медленными скользящими средними. Между тем, стратегия также вводит методы оптимизации, такие как подтверждение тренда, подтверждение задержки сигнала, фиксированный процент стоп-лосса и прибыли, для повышения надежности и прибыльности стратегии.
Основой этой стратегии является индикатор MACD, который состоит из разницы между быстрой скользящей средней (EMA) и медленной скользящей средней (EMA). Когда быстрая EMA пересекает медленную EMA, она генерирует сигнал покупки или продажи. В частности, когда линия MACD проходит через линию сигнала снизу вверх, она генерирует сигнал покупки; когда линия MACD падает ниже линии сигнала сверху вниз, она генерирует сигнал продажи.
В дополнение к базовым сигналам MACD, стратегия также вводит механизм подтверждения тренда. Она сравнивается с простой скользящей средней (SMA), чтобы определить, находится ли текущий рынок в восходящем или нисходящем тренде. Только когда сигнал покупки появляется в восходящем тренде или сигнал продажи появляется в нисходящем тренде, торговая операция будет выполнена. Это эффективно избегает ложных сигналов, генерируемых на колеблющемся рынке.
Кроме того, стратегия расширяет время подтверждения сигнала. То есть только тогда, когда текущая свеча удовлетворяет условиям покупки или продажи, и предыдущая свеча также удовлетворяет тем же условиям, соответствующая транзакция будет выполнена. Это еще больше улучшает надежность сигналов.
Наконец, стратегия устанавливает фиксированные процентные уровни стоп-лосса и прибыли. Как только сделка будет выполнена, цены стоп-лосса и прибыли будут рассчитаны на основе входной цены, и позиция будет автоматически закрыта, как только эти цены будут достигнуты. Это помогает контролировать риск и прибыль одной сделки.
Эта стратегия является улучшенной торговой стратегией, основанной на индикаторе MACD. Благодаря подтверждению тренда, подтверждению задержки сигнала, фиксированному стоп-лосс и получению прибыли и другим методам она улучшает надежность и потенциал прибыли стратегии. Однако она также сталкивается с рисками в оптимизации параметров, распознавании трендов, отдельных индикаторов, данных обратного тестирования и других аспектах. В будущем мы можем рассмотреть возможность оптимизации стратегии с таких аспектов, как сочетание других индикаторов, динамическое стоп-лосс и получение прибыли, управление позицией и машинное обучение, чтобы еще больше улучшить его практическое применение.
/*backtest start: 2023-05-08 00:00:00 end: 2024-05-13 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/ // © sligetit //@version=5 strategy("Improved MACD_VXI Strategy", overlay=true) // Calculate MACD and Signal Line fastLength = input.int(13, title="Fast Length") slowLength = input.int(21, title="Slow Length") signalLength = input.int(8, title="Signal Length") fastMA = ta.ema(close, fastLength) slowMA = ta.ema(close, slowLength) macd = fastMA - slowMA signal = ta.sma(macd, signalLength) // Plot MACD and Signal Line plot(macd, color=color.red, linewidth=1) plot(signal, color=color.blue, linewidth=2) // Calculate Cross Signals with Trend Confirmation smaPeriod = input.int(50, title="SMA Period") sma = ta.sma(close, smaPeriod) trendUp = close > sma trendDown = close < sma crossOver = ta.crossover(signal, macd) crossUnder = ta.crossunder(signal, macd) buySignal = crossOver and trendUp sellSignal = crossUnder and trendDown // Execute Buy/Sell Operations if buySignal strategy.entry("Buy", strategy.long) if sellSignal strategy.entry("Sell", strategy.short) // Extend Signal Confirmation Time Window longSignal = crossOver[1] and trendUp[1] shortSignal = crossUnder[1] and trendDown[1] if longSignal strategy.entry("Buy", strategy.long) if shortSignal strategy.entry("Sell", strategy.short) // Set Fixed Percentage Stop Loss and Take Profit stopLossPercent = input.float(1, title="Stop Loss (%)") / 100 takeProfitPercent = input.float(2, title="Take Profit (%)") / 100 stopLossPrice = strategy.position_avg_price * (1 - stopLossPercent) takeProfitPrice = strategy.position_avg_price * (1 + takeProfitPercent) strategy.exit("Stop Loss/Profit", "Buy", stop=stopLossPrice, limit=takeProfitPrice) strategy.exit("Stop Loss/Profit", "Sell", stop=stopLossPrice, limit=takeProfitPrice)