
Esta estratégia de negociação é um sistema baseado em rupturas de diferença padrão, que utiliza a relação entre o preço e a média móvel e o desvio padrão para identificar potenciais oportunidades de compra. A estratégia se concentra principalmente nos sinais de compra quando o preço se desvia do trilho e gerencia o risco através da criação de paradas e paradas.
Calcule a média móvel (MA): use a média móvel simples (SMA) para calcular a média do período especificado.
Diferença padrão calculada: diferença padrão de preço calculada com base no mesmo período.
Construção de trajectórias ascendentes e descendentes:
Geração de um sinal de compra: quando o preço passa de baixo para baixo, o sinal de compra é acionado.
Gestão de Riscos:
Tempo de retorno: a estratégia permite que o usuário defina um tempo de retorno específico e execute a transação apenas dentro do tempo especificado.
Adaptabilidade: Usando o desvio padrão, a estratégia é capaz de ajustar automaticamente os intervalos de negociação de acordo com a volatilidade do mercado, adaptando-se a diferentes condições de mercado.
Controle de risco perfeito: mecanismos integrados de parada e parada de perdas para controlar efetivamente o risco de cada transação.
Alta flexibilidade: permite que o usuário personalize vários parâmetros, como o período de diferença padrão, o múltiplo, a proporção de stop loss, etc., que podem ser ajustados de acordo com diferentes mercados e preferências de risco pessoais.
Boa visualização: A estratégia traça a média móvel, a trajetória ascendente e descendente e os sinais de compra em um gráfico para facilitar a compreensão e análise.
Funcionalidade de feedback forte: o usuário pode definir exatamente o período de tempo de feedback, o que é útil para avaliar o desempenho da estratégia em um determinado cenário de mercado.
Risco de Falso Breakout: Em mercados de baixa volatilidade, pode haver frequentes falsos breakouts, resultando em excesso de negociação e perda de comissões desnecessárias.
Atraso de acompanhamento de tendências: Uma estratégia baseada em médias móveis e padrão de diferença pode perder algumas oportunidades de entrada mais cedo em mercados de forte tendência.
Sensibilidade de parâmetros: o desempenho da estratégia é altamente dependente da configuração de parâmetros, e diferentes combinações de parâmetros podem levar a resultados muito diferentes, exigindo muita avaliação e otimização.
Limitação de negociação unidirecional: a estratégia só é implementada atualmente para fazer mais lógica, podendo perder oportunidades ou sofrer maiores perdas em mercados de baixa.
Dependência do cenário de mercado: a estratégia pode funcionar melhor em mercados de criptomoedas de alta volatilidade e baixo volume de transações, mas a eficácia pode ser diferente em outros cenários de mercado.
Introdução de mecanismos de short-term: aumento da lógica de short-term quando o preço se desloca para cima, permitindo que a estratégia seja lucrativa em mercados bidirecionais.
Ajustamento de parâmetros dinâmicos: função de ajustar automaticamente os parâmetros, como o múltiplo de diferença padrão e a proporção de stop-loss, de acordo com a situação do mercado, aumentando a capacidade de adaptação da estratégia.
Análise de múltiplos períodos de tempo: combina dados de períodos de tempo mais longos e mais curtos para aumentar a confiabilidade do sinal e a precisão do tempo de entrada.
Adição de filtro de volume de transação: introdução de indicadores de volume de transação, filtrando os falsos sinais de ruptura quando o volume de transação é baixo, melhorando a qualidade das transações.
Otimização do mecanismo de stop-loss: Implementar stop-loss dinâmico, como a introdução de stop-loss de rastreamento ou de stop-loss baseado em ATR, para se adaptar melhor às flutuações do mercado.
Aumentar as condições de filtragem: em combinação com outros indicadores técnicos ou dados fundamentais, definir condições de negociação adicionais para reduzir os falsos sinais.
Implementar o gerenciamento de fundos: Adicionar 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 a dinâmica de volatilidade do mercado.
A estratégia de negociação de ruptura de desvios padrão auto-adaptável é um sistema de negociação quantitativa baseado em princípios estatísticos para capturar oportunidades de negociação trazidas por variações anormais no mercado por meio de canais de preço ajustados dinamicamente. O principal benefício da estratégia reside na sua capacidade de adaptação e gestão de risco, que permite manter um desempenho relativamente estável em diferentes ambientes de mercado. No entanto, a estratégia também enfrenta desafios, como falsas rupturas e sensibilidade a parâmetros, que exigem o uso cuidadoso e a otimização contínua dos comerciantes.
A estratégia promete aumentar ainda mais a sua estabilidade e rentabilidade através da introdução de medidas de otimização, tais como mecanismos de tomada de posição, ajustes de parâmetros dinâmicos e análise de múltiplos quadros temporais. Para os comerciantes de quantificação experientes, a estratégia fornece um bom quadro básico, com base no qual pode ser feita uma profunda personalização e otimização para se adaptar a diferentes estilos de negociação e ambientes de mercado.
Em geral, esta estratégia de negociação de ruptura de padrão adaptável mostra a essência da negociação quantitativa para capturar oportunidades de mercado por meio de modelos matemáticos e métodos estatísticos, além de controlar rigorosamente o risco. Não se aplica apenas ao mercado de criptomoedas altamente volátil, mas também pode ser aplicado a outros mercados financeiros com ajustes adequados, fornecendo aos comerciantes uma ferramenta de negociação robusta 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")