
A estratégia é um sistema de negociação automatizado baseado na teoria da dupla brecha de equilíbrio, combinado com funções de gerenciamento de risco. O núcleo da estratégia usa uma média móvel de 21 e 50 ciclos (EMA) como indicador de sinal, para julgar a mudança de tendência do mercado através do cruzamento de equilíbrio e executar automaticamente a negociação. O sistema integra o Stop Loss e o Take Profit para controlar efetivamente o risco e os objetivos de receita de cada negociação.
A lógica central da estratégia é baseada na clássica teoria de equilíbrio de cruzamentos na análise técnica. Quando o EMA de curto prazo (21 dias) sobe e atravessa o EMA de longo prazo (50 dias), o sistema identifica como um sinal positivo e abre uma posição a mais; quando o EMA de curto prazo atravessa o EMA de longo prazo, o sistema identifica como um sinal negativo e abre uma posição a zero.
Trata-se de uma estratégia de negociação automatizada de design racional e lógico. Combinando sinais de cruzamento linear e rigoroso gerenciamento de risco, a estratégia fornece uma estrutura técnica confiável para aproveitar as oportunidades de tendências de mercado, ao mesmo tempo em que garante a segurança das negociações. Embora haja algum espaço para otimização, a infraestrutura da estratégia está intacta e adequada para o desenvolvimento e aperfeiçoamento de módulos básicos de sistemas de negociação quantitativos.
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA Crossover Strategy with SL & TP", overlay=true, default_qty_type=strategy.percent_of_equity)
// Input settings for SL and TP (ticks)
slTicks = input.int(40, title="Stop Loss (ticks)", minval=1)
tpTicks = input.int(80, title="Take Profit (ticks)", minval=1)
// Define EMA periods
ema21 = ta.ema(close, 21)
ema50 = ta.ema(close, 50)
// Detect crossovers
bullishCross = ta.crossover(ema21, ema50)
bearishCross = ta.crossunder(ema21, ema50)
// Plot the EMAs
plot(ema21, color=color.green, linewidth=2, title="EMA 21")
plot(ema50, color=color.red, linewidth=2, title="EMA 50")
// Calculate tick size in points
var float tickSize = syminfo.mintick
// Calculate stop loss and take profit prices for long and short positions
longSL = close - slTicks * tickSize
longTP = close + tpTicks * tickSize
shortSL = close + slTicks * tickSize
shortTP = close - tpTicks * tickSize
// Execute trades on crossover signals
if (bullishCross)
strategy.entry("Long", strategy.long)
strategy.exit("Exit Long", "Long", stop=longSL, limit=longTP)
if (bearishCross)
strategy.entry("Short", strategy.short)
strategy.exit("Exit Short", "Short", stop=shortSL, limit=shortTP)
// Plot arrows on crossovers
plotshape(series=bullishCross, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", size=size.small)
plotshape(series=bearishCross, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", size=size.small)
// Optional: Background coloring
bgcolor(bullishCross ? color.new(color.green, 90) : na, title="Bullish Background")
bgcolor(bearishCross ? color.new(color.red, 90) : na, title="Bearish Background")