
Эта стратегия является улучшенной версией торговой стратегии, основанной на индикаторе MACD. Она объединяет в себе особенности отслеживания тенденций индикатора MACD и идею динамического трейдинга для создания торговых сигналов путем анализа различий между быстрыми и медленными скользящими средними значениями. Вместе с тем, стратегия также вводит такие оптимизированные средства, как подтверждение тренда, задержка сигналов, фиксированный процент стоп-лоса и стоп-стоп, чтобы повысить устойчивость и прибыльность стратегии.
В основе этой стратегии лежит индикатор MACD, который представляет собой разницу между быстрым движущимся средним ((EMA) и медленным движущимся средним ((EMA). Когда быстрый EMA и медленный EMA пересекаются, то возникает сигнал покупки или продажи. В частности, когда MACD-линия прорывается вверх по сигнальной линии снизу, возникает сигнал покупки; когда MACD-линия падает вниз, то возникает сигнал продажи.
В дополнение к базовому перекрестному сигналу MACD, стратегия также вводит механизм подтверждения тренда. Он определяет, находится ли текущий рынок в восходящем или нисходящем тренде, сравнивая его с простым движущимся средним ((SMA). Только в восходящем тренде появляется сигнал покупки, или в нисходящем тренде появляется сигнал продажи, чтобы действительно совершить торговую операцию.
Кроме того, эта стратегия также продлевает время подтверждения сигнала. То есть, соответствующая сделка будет выполнена только тогда, когда текущая K-линия удовлетворяет условиям покупки или продажи, а предыдущая K-линия также удовлетворяет тем же условиям. Это еще больше повышает надежность сигнала.
Наконец, стратегия устанавливает фиксированные процентные цены на остановку и остановку. Как только сделка совершается, стоп-стоп и стоп-стоп рассчитываются на основе цены открытия позиции, и когда эти цены достигаются, она автоматически ликвидируется. Это помогает контролировать риски и доходы от одной сделки.
Эта стратегия является улучшенной торговой стратегией, основанной на 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)