
La estrategia es un sistema de negociación que combina el seguimiento de la tendencia y la inversión de la dinámica. Se basa principalmente en el promedio de la EMA de 34 períodos para juzgar la tendencia general, identificando las zonas de sobreventa y sobreventa a través del indicador RSI, mientras que se combina con la forma de la línea K y la señal de confirmación de transacciones de la transacción. La estrategia adopta un método dinámico de stop loss y ganancias basado en ATR, que puede ajustar los parámetros de negociación de acuerdo con la volatilidad del mercado.
La lógica central de la estrategia incluye los siguientes elementos clave:
La estrategia, mediante la combinación de varios indicadores técnicos, construye un sistema de negociación completo, con una buena adaptabilidad y escalabilidad. La estrategia tiene como ventaja central la confirmación de señales multidimensional y la gestión dinámica del riesgo, pero también debe tener en cuenta la optimización de los parámetros y la adaptabilidad al entorno del mercado.
/*backtest
start: 2024-08-01 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"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/
// © bommytarton
//@version=6
strategy("Improved Momentum and Pivot Reversal Strategy", overlay=true)
// Define user inputs
lengthEMA = input.int(34, title="EMA Length", minval=1)
lengthRSI = input.int(14, title="RSI Length", minval=1)
rsiOverbought = input.int(70, title="RSI Overbought Level", minval=50, maxval=100)
rsiOversold = input.int(30, title="RSI Oversold Level", minval=0, maxval=50)
lengthATR = input.int(14, title="ATR Length", minval=1)
multATR = input.float(1.5, title="ATR Multiplier for Take-Profit", minval=1.0)
stopLossMultiplier = input.float(1.0, title="Stop Loss Multiplier for ATR", minval=0.5, maxval=3.0) // Adjust the stop-loss to be tighter or wider
// Calculate the indicators
ema34 = ta.ema(close, lengthEMA)
rsiValue = ta.rsi(close, lengthRSI)
atrValue = ta.atr(lengthATR)
// Define entry conditions
longCondition = close > ema34 and close[1] < open[1] and close > open and close[2] > open[2] and close[1] < open[1] and rsiValue > 50
// Define stop-loss and take-profit based on ATR
stopLoss = close - (atrValue * stopLossMultiplier) // Tighter stop-loss using the ATR multiplier
takeProfit = close + (atrValue * multATR) // Take profit with adjustable multiplier
// Volume condition filter (make sure that the volume is higher than average over the past 20 bars)
avgVolume = ta.sma(volume, 20)
volumeCondition = volume > avgVolume
// Only trigger long if all conditions are met (trend above 34 EMA, red-green-green candle pattern, volume confirmation)
if (longCondition and volumeCondition)
strategy.entry("Long", strategy.long, stop=stopLoss, limit=takeProfit)
// Exit conditions based on RSI overbought/oversold and trailing stop
exitCondition = rsiValue > rsiOverbought or close < stopLoss
// Execute the exit strategy when RSI is overbought or price hits the stop-loss level
if (exitCondition)
strategy.close("Long") // Close the position when exit condition is met
// Plotting for visualization
plot(ema34, title="34 EMA", color=color.blue)
plot(stopLoss, title="Stop Loss", color=color.red, linewidth=2)
plot(takeProfit, title="Take Profit", color=color.green, linewidth=2)