Estratégia de negociação de ruptura de acumulação gradual

Autora:ChaoZhang, Data: 2023-10-25 17:34:41
Tags:

img

Resumo

A estratégia de negociação de ruptura gradual de acumulação visa identificar as possíveis fases de acumulação e distribuição no mercado, utilizando os princípios da análise de Wyckoff, complementada pela detecção de padrões de primavera e ascensão, para procurar possíveis oportunidades de compra e venda.

Estratégia lógica

  1. Usar cruzamento de médias móveis de diferentes comprimentos para identificar as fases de acumulação e distribuição. Quando o preço de fechamento cruza acima da MA do comprimento AccumulationLength, indica uma fase de acumulação. Quando o preço de fechamento cruza abaixo da MA do comprimento DistributionLength, indica uma fase de distribuição.

  2. Usar cruzes médias móveis de diferentes comprimentos para identificar padrões de mola e upthrust. Quando o preço baixo cruza acima da MA do comprimento SpringLength, ele indica uma mola. Quando o preço alto cruza abaixo da MA do comprimento UpthrustLength, ele indica um impulso.

  3. Ir longo quando uma mola é observada durante uma fase de acumulação.

  4. Defina níveis de stop loss. A stop loss longa é definida como close * (1 - Stop Percentage%). A stop loss curta é definida como close * (1 + Stop Percentage%).

  5. Traçar formas no gráfico para indicar padrões identificados de acumulação, distribuição, mola e empuxo ascendente para facilitar o reconhecimento visual.

Análise das vantagens

  1. Identificar as fases de acumulação e distribuição utilizando a análise Wyckoff melhora a confiabilidade dos sinais de negociação.

  2. A confirmação de sinais com padrões de mola e de impulso ascendente fornece uma validação adicional.

  3. O stop loss ajuda a controlar a perda de uma única negociação.

  4. As anotações do gráfico revelam claramente todo o processo de enrolamento dos preços.

  5. Os parâmetros ajustáveis tornam esta estratégia otimizável em todos os mercados e prazos.

Análise de riscos

  1. Whipsaws podem gerar sinais falsos durante a ação do preço agitado.

  2. A mola e o impulso ascendente podem falhar ocasionalmente.

  3. A eliminação de perdas de parada pode aumentar as perdas.

  4. Os parâmetros incompatíveis para diferentes mercados podem causar sinais incorretos.

  5. Os sistemas mecânicos carecem de controlo discricionário flexível.

Orientações de otimização

  1. Teste combinações de parâmetros ideais em todos os mercados e prazos.

  2. Considere incorporar o volume para confirmação do sinal.

  3. Estabelecer paradas dinâmicas com base na volatilidade do mercado.

  4. Incorporar fatores fundamentais para evitar sinais em eventos importantes.

  5. Aplicar aprendizado de máquina para otimizar dinamicamente parâmetros.

Resumo

A estratégia de negociação de ruptura de acumulação gradual integra análise de Wyckoff, médias móveis, reconhecimento de padrões e outras técnicas para identificar efetivamente a ação do preço de enrolamento e gerar sinais de negociação. Tem sinais confiáveis, riscos controlados, visuais claros e outras vantagens. Como um sistema mecânico, sua discrição e adaptabilidade precisam de melhoria.


/*backtest
start: 2023-09-24 00:00:00
end: 2023-10-24 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © deperp

//@version=5
strategy("Wyckoff Range Strategy",  overlay=true, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent)

// Input Variables
AccumulationLength = input(32, "Accumulation")
DistributionLength = input(35, "Distribution")
SpringLength = input(10, "Spring")
UpthrustLength = input(20, "Upthrust")
stopPercentage = input(10, "Stop Percentage")

// Accumulation Phase
isAccumulation = ta.crossover(close, ta.sma(close, AccumulationLength))

// Distribution Phase
isDistribution = ta.crossunder(close, ta.sma(close, DistributionLength))

// Spring and Upthrust
isSpring = ta.crossover(low, ta.sma(low, SpringLength))
isUpthrust = ta.crossunder(high, ta.sma(high, UpthrustLength))

// Strategy Conditions
enterLong = isAccumulation and isSpring
exitLong = isDistribution and isUpthrust

enterShort = isDistribution and isUpthrust
exitShort = isAccumulation and isSpring

// Entry and Exit Conditions
if (enterLong)
    strategy.entry("Long", strategy.long)
    
if (exitLong)
    strategy.close("Long")

if (enterShort)
    strategy.entry("Short", strategy.short)

if (exitShort)
    strategy.close("Short")

// Stop Loss
stopLossLevelLong = close * (1 - stopPercentage / 100)
stopLossLevelShort = close * (1 + stopPercentage / 100)
strategy.exit("Stop Loss Long", "Long", stop=stopLossLevelLong)
strategy.exit("Stop Loss Short", "Short", stop=stopLossLevelShort)

// Plotting Wyckoff Schematics
plotshape(isAccumulation, title="Accumulation Phase", location=location.belowbar, color=color.green, style=shape.labelup, text="Accumulation")
plotshape(isDistribution, title="Distribution Phase", location=location.abovebar, color=color.red, style=shape.labeldown, text="Distribution")
plotshape(isSpring, title="Spring", location=location.belowbar, color=color.blue, style=shape.triangleup)
plotshape(isUpthrust, title="Upthrust", location=location.abovebar, color=color.orange, style=shape.triangledown)

Mais.