Estratégia de negociação avançada baseada em recuo de volume e preço e múltiplos take-profits


Data de criação: 2023-12-12 15:39:19 última modificação: 2023-12-12 15:39:19
cópia: 0 Cliques: 612
1
focar em
1621
Seguidores

Estratégia de negociação avançada baseada em recuo de volume e preço e múltiplos take-profits

Visão geral

A estratégia combina o cruzamento de médias móveis, o índice de força relativamente forte (RSI) e o julgamento de um grande aumento de volume de negociação, fazendo uma posição mais curta quando o preço retorna a uma certa proporção após o alto volume de negociação, e configura três stop orders progressivos para bloquear diferentes proporções de lucro. A estratégia também possui uma função de stop loss de rastreamento opcional para capturar oportunidades de mudanças favoráveis no preço.

Princípio da estratégia

O cruzamento entre a média móvel rápida e a média móvel lenta fornece um sinal precoce para o início de uma mudança de tendência. O RSI é usado para avaliar o estado de sobrecompra e sobrevenda, ajudando a evitar sinais de entrada para garantir a estabilidade do sinal. Quando o volume de negociação é significativamente superior à média, a atenção do mercado é atraída por uma mudança de preço potencial.

O princípio de captação e desbloqueio de sinais de vazio é semelhante ao de fazer mais, mas não será discutido aqui. É importante ressaltar que a estratégia possui a capacidade de fazer mais e de fazer mais.

Análise de vantagens

A estratégia tem as seguintes vantagens principais:

  1. O cruzamento de uma linha média rápida e lenta com o indicador RSI forma um bom julgamento de tempo de entrada no mercado, evitando a construção de uma posição em uma área de supercompra e supervenda, aumentando a probabilidade de lucro.

  2. Utilizando a explosão de volume de transação como critério auxiliar, certifique-se de escolher um intervalo de armazenamento com maior amplitude de flutuação de preços, aumentando a força indicativa do sinal.

  3. A estratégia de estabelecer posições com um certo percentual de queda de preços e volumes de negociação aumenta a precisão do tempo de entrada no mercado e aproveita as boas oportunidades de reversão ou aumento.

  4. O setor de três pedidos de suspensão progressivos, aproveitando o espaço de aumento das flutuações de preços para bloquear os lucros, os investidores podem optar por usar vários pedidos de suspensão de acordo com o risco que eles assumem.

  5. A função de stop loss de rastreamento opcional permite que os investidores escolham se acionam ou não, dependendo das flutuações do mercado, e, ao mesmo tempo, podem obter maiores ganhos com o seguro.

  6. Aplica-se também a negociação de ativos e passivos, que podem ser lucrativos quando o mercado sobe e desce, aumentando a praticidade da estratégia.

Análise de Riscos

Apesar de ser uma estratégia bem planejada, há riscos em qualquer produto financeiro que você possa negociar, e é importante ter em mente:

  1. O cruzamento de linhas médias rápidas e lentas nem sempre é preciso para avaliar a tendência do mercado. Se os parâmetros de linhas médias não forem usados corretamente, também haverá sinais errados.

  2. A configuração inadequada dos parâmetros do indicador RSI também pode levar a uma fuga para a área de supercompra e supervenda. Os parâmetros do ciclo RSI devem ser ajustados de acordo com o mercado.

  3. O aumento do volume de transações não é exatamente equivalente a uma mudança significativa nos preços, e os critérios de referência do volume de transações podem ser ajustados de acordo com o caso.

  4. O retorno dos preços e do volume de transações pode ser grande ou pequeno, o que pode afetar o tempo de entrada no mercado, o que também precisa ser ajustado ao mercado.

  5. A margem de parada estabelecida não garante a completa transação do pedido de parada, e uma mudança súbita no mercado pode causar um deslizamento.

  6. O tracking de stop loss também pode ser usado para evitar a perda prematura de mais lucros, se a quantidade de stop loss for muito grande.

Para os riscos acima, é necessário garantir a estabilidade e a confiabilidade da estratégia por meio de otimização de código, ajuste de parâmetros e rigorosas avaliações.

Direção de otimização

A estratégia ainda tem espaço para ser melhorada:

  1. A adição de outros indicadores para auxiliar a decisão de construção de posição, como a combinação de indicadores como a banda de Brin, KD e outros, pode melhorar ainda mais a precisão do sinal.

  2. A criação de médias móveis dinâmicas, combinadas com métodos de aprendizagem de máquina, como o LSTM, pode ajustar automaticamente os parâmetros da linha média de acordo com as condições recentes do mercado, melhorando a capacidade de julgamento de tendências.

  3. A adição de uma função de ajuste dinâmico de stop/stop loss com base na volatilidade do mercado, permitindo que a estratégia ajuste automaticamente a parada de queda com base na volatilidade do mercado atual.

  4. Utilize a aproximação dinâmica para otimizar o fator de retrocesso em tempo real de acordo com a correlação entre a queda e a queda do estoque geral e as ações individuais, para selecionar o melhor momento de criação de posição.

  5. O uso de modelos multifatoriais, combinados com a análise de sentimentos, análise de regras de correlação e outras opções para aplicar estratégias com a mais forte correlação de preços e mudanças de volume de transação, pode aumentar significativamente a eficácia da estratégia.

Resumir

Esta estratégia é, em geral, muito adequada para o uso de investidores de linha curta e média. A função da estratégia optimizada será mais perfeita e inteligente, com maior valor de aplicação em campo.

Código-fonte da estratégia
/*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)