
A estratégia é uma estratégia de arbitragem altamente adaptável que combina a linha média (EMA), a região de oferta e demanda e o volume de transações. Identifica as tendências do mercado através da confirmação cruzada de múltiplos indicadores técnicos e negocia perto das principais áreas de oferta e demanda. A estratégia utiliza um objetivo de stop loss e ganho dinâmico para se adaptar à volatilidade do mercado através do indicador ATR.
A lógica central da estratégia é baseada nos seguintes elementos-chave:
Especificamente, quando o EMA de 9 ciclos sobe por 3 ciclos consecutivos, o EMA de 15 ciclos também está em alta, e o preço está acima da área de demanda, e a linha média de volume de transação de 20 ciclos é maior do que a linha média de volume de transação de 50 ciclos, o sistema emite um sinal de multiplicação. A lógica do sinal de vazio é o oposto.
Medidas de controle de risco:
Trata-se de um sistema de negociação completo que integra várias ferramentas de análise técnica para aumentar a confiabilidade das negociações por meio de mecanismos de confirmação múltiplos. A vantagem da estratégia reside na sua adaptabilidade e capacidade de gerenciamento de riscos, mas também precisa ser considerada a diferença de desempenho em diferentes ambientes de mercado.
/*backtest
start: 2024-02-08 00:00:00
end: 2025-02-06 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Optimized Scalping Strategy with EMA & Supply/Demand Zones", overlay=true)
// Inputs
ema9_length = input(9, title="EMA 9 Length")
ema15_length = input(15, title="EMA 15 Length")
higher_tf = input.timeframe("15", title="Higher Timeframe for Zones")
atr_mult = input(1.5, title="ATR Multiplier for Stop Loss")
risk_reward = input.float(1.2, title="Risk-Reward Ratio", options=[1.2, 1.3, 1.4])
// Calculating EMAs
ema9 = ta.ema(close, ema9_length)
ema15 = ta.ema(close, ema15_length)
// Function to detect supply & demand zones
get_zone(tf) =>
high_tf_high = request.security(syminfo.tickerid, tf, ta.highest(high, 50))
high_tf_low = request.security(syminfo.tickerid, tf, ta.lowest(low, 50))
[high_tf_high, high_tf_low]
[supply_zone, demand_zone] = get_zone(higher_tf)
// ATR-based Stop Loss and Take Profit
atr = ta.atr(14)
long_sl = close - (atr * atr_mult)
long_tp = close + (atr * atr_mult * risk_reward)
short_sl = close + (atr * atr_mult)
short_tp = close - (atr * atr_mult * risk_reward)
// Entry conditions with volume and trend confirmation
longCondition = ta.rising(ema9, 3) and ta.rising(ema15, 3) and close > demand_zone and ta.sma(volume, 20) > ta.sma(volume, 50)
shortCondition = ta.falling(ema9, 3) and ta.falling(ema15, 3) and close < supply_zone and ta.sma(volume, 20) > ta.sma(volume, 50)
// Exit conditions using ATR-based SL/TP with additional trend confirmation
exitLong = (close >= long_tp or close <= long_sl) and ta.falling(ema9, 2)
exitShort = (close <= short_tp or close >= short_sl) and ta.rising(ema9, 2)
// Executing trades with improved risk management
if longCondition
strategy.entry("Long", strategy.long)
strategy.exit("Long Exit", from_entry="Long", stop=long_sl, limit=long_tp)
if shortCondition
strategy.entry("Short", strategy.short)
strategy.exit("Short Exit", from_entry="Short", stop=short_sl, limit=short_tp)
// Plotting
plot(ema9, color=color.blue, title="EMA 9")
plot(ema15, color=color.red, title="EMA 15")
plot(supply_zone, color=color.orange, title="Supply Zone")
plot(demand_zone, color=color.green, title="Demand Zone")