O recurso está a ser carregado... Carregamento...

Estratégias de negociação que ultrapassam o déficit de padrão adaptativo: sistemas de otimização multicíclica baseados em volatilidade dinâmica

Autora:ChaoZhang, Data: 2024-07-30 16:09:04
Tags:MASMADSTSLTP

自适应标准差突破交易策略:基于动态波动率的多周期优化系统

Resumo

Esta estratégia de negociação é baseada em um sistema de ruptura do diferencial padrão, que utiliza a relação do preço com a média móvel e o diferencial padrão para identificar oportunidades de compra potenciais. A estratégia se concentra principalmente nos sinais de compra quando o preço se desloca e gerencia o risco através da configuração de stop-loss e stop-loss. A ideia central da estratégia é negociar quando os preços apresentam variações anormais, enquanto se filtra os possíveis falsos sinais através da média móvel e do diferencial padrão.

Princípios estratégicos

  1. Computação da média móvel (MA): utiliza uma média móvel simples (SMA) para calcular a média de um determinado período.

  2. Diferença de padrão de cálculo: diferença de padrão baseada no preço calculado no mesmo ciclo.

  3. Construir uma órbita para cima e para baixo:

    • O que é MA + (diferença padrão * múltiplo)
    • Abaixo do trajeto = MA - (diferença padrão * fator)
  4. Geração de sinal de compra: quando o preço atravessa a linha inferior, o sinal de compra é desencadeado.

  5. Gerenciamento de riscos:

    • Configure o preço do stop-loss: preço de entrada * (1 + percentagem de stop-loss)
    • Preço de stop loss: preço de entrada * (1 - Percentagem de stop loss)
  6. Escala de tempo de retorno: a política permite que o usuário defina um tempo específico de retorno para terminar e executar transações apenas dentro do período de tempo especificado.

Vantagens estratégicas

  1. Forte adaptabilidade: através do uso de diferenças padrão, a estratégia pode ajustar automaticamente os intervalos de negociação de acordo com a volatilidade do mercado e adaptar-se a diferentes ambientes de mercado.

  2. Controle de risco perfeito: integra mecanismos de stop-loss e stop-loss para controlar efetivamente o risco de cada transação.

  3. Alta flexibilidade: permite que os usuários personalizem vários parâmetros, como o ciclo de desvio padrão, o fator de multiplicação, o parâmetro de stop loss, etc., que podem ser ajustados de acordo com diferentes mercados e preferências de risco individuais.

  4. Boa visualização: a estratégia traça as médias móveis, as trajectórias ascendentes e descendentes e os sinais de compra no gráfico para uma compreensão e análise intuitivas.

  5. Atividade de retrospecção: os utilizadores podem definir com precisão o intervalo de tempo de retrospecção para avaliar o desempenho da estratégia em um determinado ambiente de mercado.

Risco estratégico

  1. Risco de falha de ruptura: em mercados de alto padrão ou de baixa volatilidade, podem ocorrer frequentes falhas de ruptura, resultando em excesso de negociações e perdas de taxas de processamento desnecessárias.

  2. A tendência segue o atraso: uma estratégia baseada em médias móveis e padrões fracos pode perder algumas oportunidades de entrada precoces em mercados de forte tendência.

  3. Sensibilidade a parâmetros: o desempenho da estratégia é altamente dependente da configuração de parâmetros, diferentes combinações de parâmetros podem resultar em resultados radicalmente diferentes e exigem uma grande quantidade de retestes e otimizações.

  4. Restrição de negociação unidirecional: a estratégia atualmente é apenas uma lógica de fazer mais e pode perder oportunidades ou sofrer grandes perdas em mercados em queda.

  5. Dependência do ambiente do mercado: a estratégia pode funcionar melhor em mercados de criptomoedas com alta volatilidade e baixo volume de negociação, mas pode não funcionar da mesma forma em outros ambientes de mercado.

Estratégias de otimização

  1. Introdução de um mecanismo de caça-níqueis: Aumentar a lógica de caça-níqueis quando o preço atravessa a trajetória, permitindo que a estratégia seja lucrativa em mercados bidirecionais.

  2. Ajuste de parâmetros dinâmicos: permite ajustar automaticamente os parâmetros, tais como o coeficiente de desvio padrão, o índice de prejuízo, para melhorar a capacidade de adaptação da estratégia, de acordo com as condições do mercado.

  3. Análise de vários quadros de tempo: combinação de dados de ciclos de tempo mais longos e mais curtos para melhorar a confiabilidade do sinal e a precisão do tempo de entrada.

  4. Adicionar filtragem de transações: introduzir indicadores de transações, filtrar sinais falsos de ruptura em transações baixas e melhorar a qualidade das transações.

  5. Otimizar o mecanismo de stop loss: Realizar um stop loss dinâmico, como a introdução de stop loss de rastreamento ou de configurações de stop loss baseadas no ATR, para se adaptar melhor às flutuações do mercado.

  6. Condições de filtragem adicionais: em combinação com outros indicadores técnicos ou dados fundamentais, estabeleça condições de negociação adicionais para reduzir os falsos sinais.

  7. Realizar o gerenciamento de fundos: incorporar a lógica de gerenciamento de posições, ajustando a proporção de fundos por transação de acordo com o tamanho da conta e as dinâmicas de volatilidade do mercado.

Resumo

A estratégia de negociação de ruptura de diferença de padrão adaptativa é um sistema de negociação quantitativa baseado em princípios estatísticos que capta oportunidades de negociação de variações anormais do mercado por meio de canais de preços dinamicamente ajustados. A vantagem central da estratégia é sua capacidade de adaptação e gerenciamento de riscos, que permite manter um desempenho relativamente estável em diferentes ambientes de mercado. No entanto, a estratégia também enfrenta desafios como ruptura falsa e sensibilidade de parâmetros, que exigem que os traders sejam cuidadosamente utilizados e continuamente otimizados.

A estratégia promete melhorar ainda mais sua estabilidade e lucratividade através da introdução de mecanismos de desempenho, ajustes de parâmetros dinâmicos e análise de vários quadros de tempo. Para os traders quantitativos experientes, a estratégia oferece uma boa estrutura básica para personalização e otimização em profundidade para se adaptar a diferentes estilos de negociação e ambientes de mercado.

No geral, esta estratégia de negociação de ruptura de padrão de adaptação demonstra a essência da negociação quantitativa para capturar oportunidades de mercado por meio de modelos matemáticos e métodos estatísticos, enquanto controla rigorosamente o risco. É aplicável não apenas aos mercados de criptomoedas altamente voláteis, mas também a outros mercados financeiros com o ajuste apropriado, oferecendo aos traders uma ferramenta de negociação poderosa e flexível.


/*backtest
start: 2024-06-01 00:00:00
end: 2024-06-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("MikEy Scali 3 STD Dev Buy Strategy with TP and SL", overlay=true)

// Input parameters for the strategy
length = input.int(20, title="Standard Deviation Length", minval=1)
src = input(close, title="Source")
mult = input.float(3.0, title="Standard Deviation Multiplier", step=0.1)

// Input for the take profit and stop loss percentages
takeProfitPerc = input.float(1.0, title="Take Profit Percentage", step=0.1) / 100
stopLossPerc = input.float(0.5, title="Stop Loss Percentage", step=0.1) / 100

// Input parameters for the backtesting range
testStartYear = input.int(2023, title="Backtest Start Year", minval=2000)
testStartMonth = input.int(1, title="Backtest Start Month", minval=1, maxval=12)
testStartDay = input.int(1, title="Backtest Start Day", minval=1, maxval=31)

testEndYear = input.int(2024, title="Backtest End Year", minval=2000)
testEndMonth = input.int(12, title="Backtest End Month", minval=1, maxval=12)
testEndDay = input.int(31, title="Backtest End Day", minval=1, maxval=31)

// Define the backtesting range
testStartTime = timestamp(testStartYear, testStartMonth, testStartDay, 00, 00)
testEndTime = timestamp(testEndYear, testEndMonth, testEndDay, 23, 59)

// Determine if the current bar is within the backtesting range
inBacktestRange = (time >= testStartTime) and (time <= testEndTime)

// Calculate the moving average and standard deviation
ma = ta.sma(src, length)
std_dev = ta.stdev(src, length)

// Calculate upper and lower bands
upper_band = ma + (std_dev * mult)
lower_band = ma - (std_dev * mult)

// Buy condition within the backtesting range
buyCondition = inBacktestRange and ta.crossover(src, lower_band)

// Plot the buy signal on the chart
plotshape(series=buyCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")

// Execute buy orders based on the condition within the backtesting range
if (buyCondition)
    strategy.entry("Buy", strategy.long)

// Calculate the take profit and stop loss prices when a position is opened
entryPrice = na(strategy.opentrades.entry_price(0)) ? src : strategy.opentrades.entry_price(0)
takeProfitPrice = entryPrice * (1 + takeProfitPerc)
stopLossPrice = entryPrice * (1 - stopLossPerc)

// Take profit condition
takeProfitCondition = strategy.position_size > 0 and close >= takeProfitPrice

// Stop loss condition
stopLossCondition = strategy.position_size > 0 and close <= stopLossPrice

// Execute sell order when take profit condition is met within the backtesting range
if (takeProfitCondition and inBacktestRange)
    strategy.close("Buy", "Take Profit")

// Execute sell order when stop loss condition is met within the backtesting range
if (stopLossCondition and inBacktestRange)
    strategy.close("Buy", "Stop Loss")

// Plot the moving average and the bands
plot(ma, color=color.blue, title="Moving Average")
plot(upper_band, color=color.red, title="Upper Band (3 STD)")
plot(lower_band, color=color.green, title="Lower Band (3 STD)")

// Optional: Plot the source
plot(src, color=color.gray, title="Source")

// Add labels for clarity
bgcolor(buyCondition ? color.new(color.green, 90) : na, offset=-1, title="Buy Signal Background")

// Optional: Highlight the backtesting range on the chart
bgcolor(inBacktestRange ? color.new(color.blue, 90) : na, title="Backtest Range Background")

// Plot the take profit and stop loss levels if a position is open
plot(strategy.position_size > 0 ? takeProfitPrice : na, color=color.orange, title="Take Profit Level")
plot(strategy.position_size > 0 ? stopLossPrice : na, color=color.red, title="Stop Loss Level")

Relacionado

Mais informações