
A estratégia de negociação de consenso de múltiplos indicadores é um sistema de negociação quantitativa que combina três indicadores técnicos diferentes para confirmar os sinais de negociação por meio da verificação mútua entre os indicadores. A estratégia integra um sistema de sinais de tendência de ondas amplificadas e um oscilador de tendência de ondas amplificadas, que executa operações de compra ou venda apenas quando pelo menos dois indicadores dão sinais na mesma direção.
O princípio central da estratégia de negociação de consenso de múltiplos indicadores é confirmar a direção do negócio através da análise multidimensional do estado do mercado:
Supertrend de Peso de Liquidez (LWST)O indicador combina o tradicional indicador de tendência super com o peso de tráfego, tornando a banda mais sensível em áreas de alto tráfego. O processo de cálculo inclui:
Sistema de sinalização de tendênciaUtilizando o sistema de EMA duplo para detectar tendências de preços. A intensidade da tendência de mercado é julgada pela diferença percentual entre a média móvel rápida e a média móvel lenta. Quando a EMA rápida excede a EMA lenta e atinge o limiar definido, gera um sinal de múltiplas cabeças; ao contrário, gera um sinal de cabeças vazias
Oscilador de tendência de ondas amplificadas (WT)O valor de oscilação é calculado com base no grau de desvio do preço em relação à sua média plana, para identificar um estado de sobrecompra e sobrevenda. O indicador gera sinais através dos seguintes passos:
Mecanismos de sinalização de cogniçãoA estratégia executa uma transação somente se pelo menos dois indicadores estiverem de acordo. Isso é feito calculando o número de indicadores múltiplos (variando de 3 a 3), gerando um sinal de compra quando o valor é maior do que 2 e um sinal de venda quando é menor do que 2.
Gestão de RiscosCada transação é configurada com base no preço de entrada (default 2%) e no limite de parada (default 4%) e é automaticamente desativada quando qualquer um dos dois requisitos é atingido.
Filtragem de sinais reforçadaA exigência de um consenso entre vários indicadores para executar uma transação reduz significativamente os sinais enganosos que um único indicador pode gerar, aumentando a precisão da transação.
Adaptação a diferentes situações de mercadoOs três indicadores focam em diferentes propriedades do mercado (trend, momentum, volatilidade), permitindo que a estratégia permaneça eficaz em diferentes cenários de mercado.
Ajustes sensíveis à liquidezA supertrend de peso de liquidez ajusta a sensibilidade de acordo com a dinâmica do volume de transações, permitindo que a estratégia capte mudanças de tendência mais rapidamente em áreas de alta liquidez e seja mais conservadora em áreas de baixa liquidez.
Gestão de riscos internaO mecanismo de stop loss e stop-loss fornece uma taxa de retorno de risco clara para cada transação, controlando o risco de uma única transação dentro de limites aceitáveis.
Ferramentas visuais intuitivasA estratégia fornece tabelas de sinais e marcadores gráficos em tempo real, ajudando os comerciantes a entender rapidamente o estado atual do mercado e os sinais de cada indicador.
Integração de gestão de fundosGerenciamento inteligente de fundos, evitando o risco excessivo, através da configuração do tamanho da posição com base no direito de participação da conta.
Sensibilidade do parâmetroEstratégia: Utilize vários parâmetros ajustáveis, a configuração inadequada de parâmetros pode levar a otimização excessiva ou falta de sinal. Método de Solução: Faça uma análise abrangente de sensibilidade de parâmetros, escolha de combinações de parâmetros que apresentem desempenho estável em várias condições de mercado.
Atrasos no sinalSolução: Considere definir diferentes combinações de parâmetros para diferentes períodos de tempo, ou adicionar um indicador de curto prazo mais sensível.
Mercado horizontal não funciona bemSolução: Adicionar um filtro que identifica especificamente o mercado horizontal, suspender a negociação quando é identificado o mercado horizontal ou mudar para uma estratégia projetada especificamente para o mercado horizontal.
Risco de perda fixaO uso de stop loss de porcentagem fixa pode não ser adequado para as características de flutuação de diferentes ativos. Solução: Ajustar a distância de stop loss de forma dinâmica com base no ATR ou na flutuação histórica.
Riscos de gestão de fundosO uso padrão de 100% dos fundos da conta pode levar a uma concentração excessiva de risco. Método de Solução: Ajustar o tamanho da posição de acordo com o estado do mercado e a dinâmica da intensidade do sinal, implementar estratégias de negociação descentralizadas.
Ajuste de parâmetros dinâmicos:
Adicionar filtro de ambiente de mercado:
Otimização do mecanismo de suspensão/paragem:
Classificação de intensidade do sinal:
Filtro de tempo:
A estratégia de negociação de consenso de múltiplos indicadores cria um robusto sistema de negociação através da integração de um supertrend ponderado pela liquidez, um sistema de sinalização de tendências e um oscilador de tendências de ondas intensificadas. Sua vantagem central é que o mecanismo de consenso de múltiplos indicadores aumenta significativamente a confiabilidade do sinal, enquanto o componente de ponderação de liquidez acrescenta à estratégia uma maior sensibilidade à profundidade do mercado.
No entanto, a estratégia ainda tem espaço para otimização, especialmente em termos de adaptabilidade dos parâmetros, identificação do estado do mercado e parada de perda dinâmica. A estratégia pode melhorar ainda mais a adaptabilidade e a estabilidade em várias condições de mercado através da implementação de orientações de otimização recomendadas, especialmente a criação de filtros de ambiente de mercado e um sistema de classificação de intensidade de sinal.
Em geral, é um sistema de negociação quantitativa bem projetado, adequado para traders experientes fazerem o feedback e a otimização de parâmetros antes do lançamento. O design modular da estratégia também facilita a modificação e expansão de acordo com as necessidades individuais.
/*backtest
start: 2024-03-25 00:00:00
end: 2025-03-24 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Multi-Indicator Consensus Strategy", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// =================== Input Parameters ===================
// Liquidity Weighted Supertrend
lwst_period = input.int(10, "LWST Period", minval=1, tooltip="Period for ATR calculation")
lwst_multiplier = input.float(3.0, "LWST Multiplier", minval=0.1, tooltip="Multiplier for ATR bands")
lwst_length = input.int(20, "Volume SMA Length", minval=1, tooltip="Length for volume SMA")
// Trend Signals
trend_length = input.int(14, "Trend Length", minval=1, tooltip="Length for EMA calculation")
trend_threshold = input.float(0.5, "Trend Threshold", minval=0.1, tooltip="Percentage threshold for trend signals")
// Enhanced Wavetrend
wt_channel_length = input.int(9, "WT Channel Length", minval=1, tooltip="Smoothing period for initial calculations")
wt_average_length = input.int(12, "WT Average Length", minval=1, tooltip="Smoothing period for final signal")
wt_ma_length = input.int(3, "WT MA Length", minval=1, tooltip="Moving average length for signal line")
wt_overbought = input.float(53, "WT Overbought", minval=0, tooltip="Level to identify overbought conditions")
wt_oversold = input.float(-53, "WT Oversold", minval=-100, tooltip="Level to identify oversold conditions")
// Risk Management
sl_percent = input.float(2.0, "Stop Loss %", minval=0.1, tooltip="Stop loss percentage from entry")
tp_percent = input.float(4.0, "Take Profit %", minval=0.1, tooltip="Take profit percentage from entry")
// =================== Indicator 1: Liquidity Weighted Supertrend ===================
// Volume-weighted component for dynamic sensitivity
vol_sma = ta.sma(volume, lwst_length)
vol_weight = volume / vol_sma
// ATR-based bands with volume weighting
atr = ta.atr(lwst_period)
upperBand = hl2 + lwst_multiplier * atr * vol_weight
lowerBand = hl2 - lwst_multiplier * atr * vol_weight
// Trend determination based on price action
var float lwst_trend = 0.0
lwst_trend := close > lwst_trend[1] ? 1 : close < lwst_trend[1] ? -1 : lwst_trend[1]
// =================== Indicator 2: Trend Signals ===================
// Dual EMA system for trend detection
fast_ema = ta.ema(close, trend_length)
slow_ema = ta.ema(close, trend_length * 2)
trend_diff = (fast_ema - slow_ema) / slow_ema * 100
trend_signal = trend_diff > trend_threshold ? 1 : trend_diff < -trend_threshold ? -1 : 0
// =================== Indicator 3: Enhanced Wavetrend ===================
// Calculate Wavetrend components
ap = hlc3 // Typical price
esa = ta.ema(ap, wt_channel_length) // Smoothed price
d = ta.ema(math.abs(ap - esa), wt_channel_length) // Average volatility
ci = (ap - esa) / (0.015 * d) // Base oscillator
tci = ta.ema(ci, wt_average_length) // Smoothed oscillator
// Generate main and signal lines
wt1 = tci
wt2 = ta.sma(wt1, wt_ma_length)
// Generate Wavetrend Signal based on overbought/oversold conditions
wt_signal = 0
wt_signal := wt1 > wt_overbought and wt2 > wt_overbought ? -1 :
wt1 < wt_oversold and wt2 < wt_oversold ? 1 :
wt_signal[1]
// =================== Consensus Signal Generation ===================
// Count bullish signals (1 point for each bullish indicator)
var int consensus_count = 0
consensus_count := (lwst_trend == 1 ? 1 : 0) +
(trend_signal == 1 ? 1 : 0) +
(wt_signal == 1 ? 1 : 0)
// Generate trading signals when majority (2+ indicators) agree
bool buy_signal = consensus_count >= 2
bool sell_signal = consensus_count <= -2
// =================== Trade Execution ===================
// Long position entry and exit with risk management
if (buy_signal and strategy.position_size <= 0)
strategy.entry("Long", strategy.long)
strategy.exit("Long TP/SL", "Long",
profit = close * tp_percent / 100,
loss = close * sl_percent / 100)
// Short position entry and exit with risk management
if (sell_signal and strategy.position_size >= 0)
strategy.entry("Short", strategy.short)
strategy.exit("Short TP/SL", "Short",
profit = close * tp_percent / 100,
loss = close * sl_percent / 100)
// =================== Visualization ===================
// Signal markers for entry points
plotshape(buy_signal ? low : na, "Buy Signal", shape.triangleup, location.belowbar, color.green, size=size.small)
plotshape(sell_signal ? high : na, "Sell Signal", shape.triangledown, location.abovebar, color.red, size=size.small)
// Indicator lines
plot(wt1, "Wavetrend 1", color.blue, linewidth=1)
plot(wt2, "Wavetrend 2", color.orange, linewidth=1)
plot(wt_overbought, "Overbought", color.red, linewidth=1)
plot(wt_oversold, "Oversold", color.green, linewidth=1)
plot(fast_ema, "Fast EMA", color.yellow, linewidth=1)
plot(slow_ema, "Slow EMA", color.white, linewidth=1)
plot(lwst_trend == 1 ? upperBand : na, "Upper Band", color.green, linewidth=2)
plot(lwst_trend == -1 ? lowerBand : na, "Lower Band", color.red, linewidth=2)
// =================== Information Table ===================
// Real-time display of indicator signals
var table info = table.new(position.top_right, 2, 4)
table.cell(info, 0, 0, "Indicator", bgcolor=color.gray, text_color=color.white)
table.cell(info, 1, 0, "Signal", bgcolor=color.gray, text_color=color.white)
table.cell(info, 0, 1, "LWST", text_color=color.white)
table.cell(info, 1, 1, str.tostring(lwst_trend), text_color=lwst_trend == 1 ? color.green : color.red)
table.cell(info, 0, 2, "Trend", text_color=color.white)
table.cell(info, 1, 2, str.tostring(trend_signal), text_color=trend_signal == 1 ? color.green : color.red)
table.cell(info, 0, 3, "Wavetrend", text_color=color.white)
table.cell(info, 1, 3, str.tostring(wt_signal), text_color=wt_signal == 1 ? color.green : color.red)