
Esta es una estrategia comercial cuantitativa que combina la tendencia EMA, la ruptura del ciclo y el filtrado de sesiones comerciales. La estrategia se basa principalmente en el juicio de la dirección de la tendencia de la media móvil y utiliza el patrón de ruptura del precio en la posición clave del ciclo como señal comercial. Al mismo tiempo, se introduce el filtrado del período comercial para mejorar la calidad comercial. La estrategia utiliza métodos de stop loss porcentuales y take profit para controlar los riesgos.
La lógica central de la estrategia incluye los siguientes elementos clave:
Esta estrategia construye un sistema de trading lógicamente riguroso combinando múltiples mecanismos como tendencias de promedios móviles, patrones de precios y filtrado de períodos de tiempo. Aunque existen ciertas limitaciones, se espera que la estabilidad y la rentabilidad de la estrategia mejoren aún más mediante la optimización y la mejora continuas. La estrategia es adecuada como marco básico de un sistema de seguimiento de tendencias a medio y largo plazo, y se puede personalizar y mejorar según las necesidades comerciales reales.
/*backtest
start: 2024-12-17 00:00:00
end: 2025-01-16 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/
//@version=6
strategy("The Gold Box Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=200)
// Inputs
roundNumberInterval = input.int(5, title="Round Number Interval ($)", minval=1)
useEMA = input.bool(true, title="Use 20 EMA for Confluence")
emaLength = input.int(20, title="EMA Length")
// Session times for London and NY
londonSession = input("0300-1200", title="London Session (NY Time)")
nySession = input("0800-1700", title="New York Session (NY Time)")
// EMA Calculation
emaValue = ta.ema(close, emaLength)
// Plot Round Number Levels
roundLow = math.floor(low / roundNumberInterval) * roundNumberInterval
roundHigh = math.ceil(high / roundNumberInterval) * roundNumberInterval
// for level = roundLow to roundHigh by roundNumberInterval
// line.new(x1=bar_index - 1, y1=level, x2=bar_index, y2=level, color=color.new(color.gray, 80), extend=extend.both)
// Session Filter
inLondonSession = not na(time("1", londonSession))
inNYSession = not na(time("1", nySession))
inSession = true
// Detect Bullish and Bearish Engulfing patterns
bullishEngulfing = close > open[1] and open < close[1] and close > emaValue and inSession
bearishEngulfing = close < open[1] and open > close[1] and close < emaValue and inSession
// Entry Conditions
if bullishEngulfing
strategy.entry("Long", strategy.long, comment="Bullish Engulfing with EMA Confluence")
if bearishEngulfing
strategy.entry("Short", strategy.short, comment="Bearish Engulfing with EMA Confluence")
// Stop Loss and Take Profit
stopLossPercent = input.float(1.0, title="Stop Loss (%)", minval=0.1) / 100
takeProfitPercent = input.float(1.5, title="Take Profit (%)", minval=0.1) / 100
strategy.exit("Exit Long", "Long", stop=close * (1 - stopLossPercent), limit=close * (1 + takeProfitPercent))
strategy.exit("Exit Short", "Short", stop=close * (1 + stopLossPercent), limit=close * (1 - takeProfitPercent))