
A estratégia é um sistema de negociação de confirmação de níveis múltiplos, combinando a linha de equilíbrio, o indicador de massa do RSI e o indicador de volatilidade do ATR. A estratégia usa a média móvel do índice de 9 e 21 períodos (EMA) como base para o julgamento de tendências principais, enquanto a confirmação de força é feita em combinação com o indicador RSI e a posição de tamanho de posição e parada de perda é ajustada dinamicamente com o indicador ATR. A estratégia é eficaz na filtragem de falsos sinais e na melhoria da confiabilidade da negociação por meio da combinação de vários indicadores técnicos.
A lógica central da estratégia baseia-se nos seguintes níveis:
A estratégia de construir um sistema de negociação estável através da combinação de três dimensões de equilíbrio de cruzamento, RSI e a volatilidade ATR. A vantagem da estratégia está em seu mecanismo de confirmação multi-nível completo e sistema de gerenciamento de risco dinâmico, mas pode enfrentar riscos mais elevados em mercados de turbulência. O desempenho da estratégia de melhorar o espaço como um todo, adicionando filtragem do ambiente de mercado e otimização de parâmetros de auto-adaptação.
/*backtest
start: 2025-02-13 00:00:00
end: 2025-02-20 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("BTC Scalping Strategy", overlay=true, margin_long=100, margin_short=100, pyramiding=1)
// Inputs
emaFastLength = input.int(9, "Fast EMA Length")
emaSlowLength = input.int(21, "Slow EMA Length")
rsiLength = input.int(14, "RSI Length")
rsiOverbought = input.int(70, "RSI Overbought")
rsiOversold = input.int(30, "RSI Oversold")
atrLength = input.int(14, "ATR Length")
riskPercent = input.float(1, "Risk Percentage", step=0.5)
// Calculate Indicators
emaFast = ta.ema(close, emaFastLength)
emaSlow = ta.ema(close, emaSlowLength)
rsi = ta.rsi(close, rsiLength)
atr = ta.atr(atrLength)
// Entry Conditions
longCondition = ta.crossover(emaFast, emaSlow) and rsi < rsiOverbought
shortCondition = ta.crossunder(emaFast, emaSlow) and rsi > rsiOversold
// Exit Conditions
takeProfitLevelLong = close + (atr * 3)
stopLossLevelLong = close - (atr * 1.5)
takeProfitLevelShort = close - (atr * 3)
stopLossLevelShort = close + (atr * 1.5)
// Position Sizing
equity = strategy.equity
riskAmount = equity * (riskPercent / 100)
positionSizeLong = riskAmount / (close - stopLossLevelLong)
positionSizeShort = riskAmount / (stopLossLevelShort - close)
// Strategy Execution
if (longCondition)
strategy.entry("Long", strategy.long, qty=positionSizeLong)
strategy.exit("Exit Long", "Long", limit=takeProfitLevelLong, stop=stopLossLevelLong)
if (shortCondition)
strategy.entry("Short", strategy.short, qty=positionSizeShort)
strategy.exit("Exit Short", "Short", limit=takeProfitLevelShort, stop=stopLossLevelShort)
// Plotting
plot(emaFast, color=color.new(color.blue, 0), linewidth=2)
plot(emaSlow, color=color.new(color.red, 0), linewidth=2)
hline(rsiOverbought, "RSI OB", color=color.new(color.red, 50))
hline(rsiOversold, "RSI OS", color=color.new(color.green, 50))
// Alerts
alertcondition(longCondition, "Long Signal", "Potential Long Entry")
alertcondition(shortCondition, "Short Signal", "Potential Short Entry")