
La estrategia es una versión mejorada de la estrategia de negociación basada en el indicador MACD. Combina las características de seguimiento de tendencias del indicador MACD y la lógica de comercio dinámico para generar señales de negociación mediante el análisis de las diferencias entre las medias móviles rápidas y las medias móviles lentas. Además, la estrategia también introduce medios de optimización como la confirmación de tendencias, la confirmación de señales de retraso y el porcentaje fijo de stop loss y stop loss para mejorar la estabilidad y la rentabilidad de la estrategia.
El núcleo de la estrategia es el indicador MACD, que consiste en la diferencia entre el promedio móvil rápido (EMA) y el promedio móvil lento (EMA). Cuando el EMA rápido se cruza con el EMA lento, se produce una señal de compra o venta. En concreto, cuando la línea MACD se rompe de abajo hacia arriba, se produce una señal de compra; cuando la línea MACD se rompe de arriba hacia abajo, se produce una señal de venta.
Además de la señal de cruce MACD básica, la estrategia también introduce un mecanismo de confirmación de tendencia. Se compara con la media móvil simple (SMA) para determinar si el mercado actual está en una tendencia alcista o descendente. La operación de negociación se ejecuta realmente solo cuando se produce una señal de compra en una tendencia alcista o una señal de venta en una tendencia descendente.
Además, la estrategia también extiende la ventana de tiempo de confirmación de la señal. Es decir, la transacción correspondiente se ejecuta cuando la línea K actual cumple con las condiciones de compra o venta y la línea K anterior también cumple con las mismas condiciones. Esto mejora aún más la fiabilidad de la señal.
Finalmente, la estrategia establece un porcentaje fijo de precios de stop loss y stop loss. Una vez que se realiza una operación, se calculan los precios de stop loss y stop loss en función del precio de apertura de la posición, y se liquida automáticamente una vez que se alcanzan estos precios. Esto ayuda a controlar el riesgo y los beneficios de una sola operación.
La estrategia es una estrategia de negociación mejorada basada en el indicador MACD, que mejora la estabilidad y el potencial de ganancias de la estrategia a través de métodos como la confirmación de tendencias, la confirmación de la demora de la señal y el stop loss fijo. Sin embargo, también existe el riesgo de optimización de parámetros, identificación de tendencias, un solo indicador y datos de retroalimentación. En el futuro, se puede considerar la optimización de la estrategia en combinación con otros indicadores, stop loss dinámico, gestión de posición y aprendizaje automático, para mejorar aún más su efectividad en la aplicación real.
/*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)