Estratégia avançada com volume e retorno de preço

Autora:ChaoZhang, Data: 2023-12-12 15:39:19
Tags:

img

Resumo

Esta estratégia combina cruzamento da média móvel, índice de força relativa (RSI) e volume de negociação significativamente amplificado para tomar posições longas / curtas após detectar uma certa porcentagem de retração no preço em picos de volume altos.

Princípios

O cruzamento de médias móveis rápidas e lentas fornece sinais iniciais de mudança de direção da tendência. O indicador RSI avalia as condições de sobrecompra / sobrevenda para evitar esses cenários para sinais de entrada mais robustos. Um aumento significativo sobre o volume médio sinaliza um movimento de preço potencial que chama a atenção do mercado. Esses picos de volume reforçam a força dos sinais de entrada. Após o aumento de volume e o aumento de preço, as ordens de entrada são desencadeadas quando o preço e o volume recuaram uma porcentagem especificada, indicando uma correção ou reversão potencial.

Os mesmos princípios aplicam-se aos sinais de entrada e saída de curto prazo.

Análise das vantagens

Principais vantagens desta estratégia:

  1. O cruzamento de MAs rápidas/lentas combinado com o RSI forma sinais de entrada robustos, evitando áreas de sobrecompra/supervenda para aumentar as probabilidades de vitória.

  2. Os picos de volume garantem que grandes oscilações de preços sejam capturadas para estabelecimento de posição, fortalecendo a força do sinal.

  3. O mecanismo de recuperação preço/volume aumenta a precisão do calendário de entrada para capturar oportunidades de reversão ou de crescimento.

  4. Os TP de três níveis utilizam a tendência de alta dos preços para obter lucros com base na tolerância ao risco.

  5. A suspensão opcional permite uma flexibilidade que permite a preservação do capital, mantendo simultaneamente a possibilidade de lucros mais elevados, dependendo da volatilidade do mercado.

  6. Aplicável tanto a negociações longas como curtas, os lucros podem ser realizados em mercados de tendência ascendente ou descendente, aumentando a utilidade.

Análise de riscos

Apesar de um planejamento cuidadoso, a negociação de qualquer produto financeiro acarreta riscos.

  1. Os cruzamentos de MA nem sempre determinam com precisão a tendência. Podem ocorrer sinais errados se forem utilizados parâmetros MA inadequados.

  2. A fixação inadequada do período do RSI pode conduzir à falha em evitar áreas de sobrecompra/supervenda.

  3. Os picos de volume não correspondem necessariamente perfeitamente a alterações significativas de preços.

  4. A redução excessiva ou inadequada dos preços/volumes afeta o calendário da entrada, fator que também necessita de ajustamento com base no mercado.

  5. Os níveis de tomada de lucro pré-estabelecidos não podem garantir a execução completa das ordens TP. Uma mudança súbita do mercado pode causar deslizamentos.

  6. O stop loss de trailing demasiado largo pode provocar uma saída prematura das posições, perdendo maiores lucros.

Estes riscos exigem otimização de código, ajuste de parâmetros e testes de retorno rigorosos para garantir a confiabilidade da estratégia.

Orientações de otimização

Outras melhorias:

  1. Adicionar outros indicadores como Bandas de Bollinger ou KD para ajudar as decisões de entrada, melhorando a precisão.

  2. Incorporar modelos de aprendizagem de máquina, como o LSTM, para estabelecer MAs dinâmicas que adaptem automaticamente os parâmetros às últimas condições de mercado, melhorando a captura de tendências.

  3. Construir em stop loss dinâmico / lucro baseado na volatilidade do mercado para ajustar automaticamente os níveis em conformidade.

  4. Utilizar a análise de cointegração para escolher de forma ideal o fator de retração por movimento de preços em todo o mercado versus correlações de ações individuais, obtendo o melhor momento de entrada.

  5. Empregar modelos multifatores com análise de sentimentos, mineração de regras de associação, etc. para selecionar ações com as mais altas correlações de mudança de preço/volume para implementar uma estratégia para um tremendo aumento do desempenho.

Conclusão

Esta é uma excelente estratégia para os traders de médio a curto prazo após o aprimoramento. Com funções cada vez mais robustas e inteligentes construídas sobre otimização, ele tem grandes méritos práticos para a negociação ao vivo, enquanto se esforça para entregar retornos de mercado com riscos firmemente controlados. Como uma estratégia quantitativa progressivamente avançada, ele exemplifica a negociação estável e prudente.


/*backtest
start: 2023-11-11 00:00:00
end: 2023-12-11 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Advanced Strategy with Volume and Price Retracement and Multi-Take Profit (USDT)", overlay=true)

// Parametreler
fastLength = input(12, minval=1, title="Fast Moving Average")
slowLength = input(26, minval=1, title="Slow Moving Average")
rsiPeriod = input(14, minval=1, title="RSI Period")
volLength = input(20, minval=1, title="Volume MA Length")
volMultiplier = input(2.0, title="Volume Spike Multiplier")
trailOffset = input(1, title="Trailing Offset (%)")
usdtPerTrade = input(50000, title="USDT per Trade")
retraceFactor = input(0.8, title="Retracement Factor for Entry")
takeProfit1 = input(1, title="Take Profit 1 (%)")
takeProfit2 = input(2, title="Take Profit 2 (%)")
takeProfit3 = input(3, title="Take Profit 3 (%)")
trailForTP = input(true, title="Use Trailing Stop for Take Profits")

// Hesaplamalar
fastMA = sma(close, fastLength)
slowMA = sma(close, slowLength)
rsi = rsi(close, rsiPeriod)
volMA = sma(volume, volLength)
volumeSpike = volume > volMA * volMultiplier

// Durum Değişkenleri ve Saklanan Değerler
var float spikeVolume = na
var float spikePrice = na
var int direction = 0

// Alım/Satım Sinyalleri
longCondition = crossover(fastMA, slowMA) and rsi < 70
shortCondition = crossunder(fastMA, slowMA) and rsi > 30

// Hacim Spike ve Fiyat Hareketinin Saklanması
if (longCondition and volumeSpike)
    spikeVolume := volume
    spikePrice := close
    direction := 1
else if (shortCondition and volumeSpike)
    spikeVolume := volume
    spikePrice := close
    direction := -1

// Retracement Kontrolü ve Giriş Emirleri
if (direction == 1 and volume < spikeVolume * retraceFactor and close < spikePrice * (1 - trailOffset / 100))
    strategy.entry("Long", strategy.long, qty=usdtPerTrade / close)
    spikeVolume := na
    direction := 0
else if (direction == -1 and volume < spikeVolume * retraceFactor and close > spikePrice * (1 + trailOffset / 100))
    strategy.entry("Short", strategy.short, qty=usdtPerTrade / close)
    spikeVolume := na
    direction := 0

// Take Profit Emirleri
if strategy.position_size > 0
    strategy.exit("TP1", "Long", limit=strategy.position_avg_price * (1 + takeProfit1 / 100), qty_percent=33, trail_offset=trailForTP ? atr(14) / 2 : na)
    strategy.exit("TP2", "Long", limit=strategy.position_avg_price * (1 + takeProfit2 / 100), qty_percent=33, trail_offset=trailForTP ? atr(14) : na)
    strategy.exit("TP3", "Long", limit=strategy.position_avg_price * (1 + takeProfit3 / 100), qty_percent=34, trail_offset=trailForTP ? atr(14) * 1.5 : na)

if strategy.position_size < 0
    strategy.exit("TP1", "Short", limit=strategy.position_avg_price * (1 - takeProfit1 / 100), qty_percent=33, trail_offset=trailForTP ? atr(14) / 2 : na)
    strategy.exit("TP2", "Short", limit=strategy.position_avg_price * (1 - takeProfit2 / 100), qty_percent=33, trail_offset=trailForTP ? atr(14) : na)
    strategy.exit("TP3", "Short", limit=strategy.position_avg_price * (1 - takeProfit3 / 100), qty_percent=34, trail_offset=trailForTP ? atr(14) * 1.5 : na)

// Pozisyon çıkışları
strategy.close("Long", when=shortCondition)
strategy.close("Short", when=longCondition)


Mais.