
Esta é uma estratégia de negociação quantitativa que combina tendência de EMA, rompimento de ciclo e filtragem de sessão de negociação. A estratégia é baseada principalmente no julgamento da direção da tendência da média móvel e usa o padrão de rompimento do preço na posição do ciclo-chave como um sinal de negociação. Ao mesmo tempo, a filtragem do período de negociação é introduzida para melhorar a qualidade da negociação. A estratégia utiliza métodos de stop loss e take profit percentuais para controlar riscos.
A lógica central da estratégia inclui os seguintes elementos-chave:
Essa estratégia cria um sistema de negociação logicamente rigoroso combinando vários mecanismos, como tendências de média móvel, padrões de preços e filtragem de período de tempo. Embora existam certas limitações, espera-se que a estabilidade e a lucratividade da estratégia sejam ainda mais aprimoradas por meio de otimização e melhoria contínuas. A estratégia é adequada como estrutura básica de um sistema de rastreamento de tendências de médio e longo prazo e pode ser personalizada e aprimorada de acordo com as necessidades reais de negociação.
/*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))