Estratégia de negociação bidirecional de grande volatilidade: sistema de entrada longo e curto com base no limite de pontos

ATR SL TP
Data de criação: 2024-11-18 16:11:21 última modificação: 2024-11-18 16:11:21
cópia: 0 Cliques: 576
1
focar em
1617
Seguidores

Estratégia de negociação bidirecional de grande volatilidade: sistema de entrada longo e curto com base no limite de pontos

Visão geral

A estratégia é um sistema de negociação bidirecional baseado na linha K de 30 minutos para procurar oportunidades de negociação monitorando a amplitude da flutuação dos preços. O núcleo da estratégia é identificar flutuações significativas através da definição de um limiar de ponto e negociar na direção correspondente após a confirmação da ruptura. A estratégia inclui um rigoroso gerenciamento de tempo, stop loss e mecanismo de gerenciamento de negociação para realizar negociações automatizadas com risco controlado.

Princípio da estratégia

A estratégia usa um mecanismo de filtragem múltipla para identificar sinais de negociação eficazes. Primeiro, a estratégia calcula o alcance da flutuação da entidade a cada fechamento da linha K a cada 30 minutos. Quando a amplitude da flutuação excede o limiar predefinido, ela é marcada como uma oportunidade de negociação potencial. Para garantir a eficácia da negociação, a estratégia define um ponto de amortecimento adicional, que só aciona o sinal de negociação real quando o preço quebra essa zona de amortecimento.

Vantagens estratégicas

  1. Gerenciamento de tempo perfeito: limite a janela de tempo de negociação, evite falsos sinais de horários inativos
  2. Mecanismos de negociação bidireccional: Captação de oportunidades bidireccionais no mercado e melhoria da eficiência do uso de fundos
  3. Controle de risco perfeito: Stop loss de ponto fixo para facilitar a avaliação e gestão do risco
  4. Alto grau de automação: automação completa do reconhecimento de sinais à execução de transações, reduzindo a intervenção humana
  5. Definição flexível de parâmetros: os parâmetros-chave podem ser ajustados para adaptar-se a diferentes ambientes de mercado

Risco estratégico

  1. Risco de Falso Breakout: Falso Breakout pode ocorrer após uma forte oscilação, causando um Stop Loss
  2. Sensibilidade de parâmetros: configuração inadequada de limites pode levar a oportunidades perdidas ou a excessos de negociação
  3. Dependência do cenário de mercado: pode desencadear frequentemente um stop loss em um mercado turbulento
  4. Efeito de ponto de deslizamento: durante a alta volatilidade, o preço de transação real pode ter um grande desvio do preço de sinal
  5. Riscos de gestão de fundos: a ausência de mecanismos de gestão de posições pode levar a uma abertura de risco excessiva

Direção de otimização da estratégia

  1. Aumentar o filtro de tendências: Combinação de indicadores de tendências com períodos mais longos para melhorar a qualidade do sinal
  2. Optimização de parâmetros dinâmicos: ajuste automático de parâmetros de limiar e parada de perda de acordo com a volatilidade do mercado
  3. Introdução de confirmação de transação: aumento das condições de filtragem de transação e melhoria da confiabilidade de ruptura
  4. Optimizar o Stop Loss: Implementar o Stop Loss dinâmico para adaptar-se a diferentes cenários de mercado
  5. Adicionar gerenciamento de posição: ajuste de posição de forma dinâmica de acordo com a intensidade do sinal e a volatilidade do mercado

Resumir

Trata-se de uma estratégia de negociação automatizada concebida de forma completa e logicamente clara. A estratégia tem uma boa praticidade por meio de filtragem de condições e controle de risco rigorosos. No entanto, é necessário testar e otimizar adequadamente no mercado real, especialmente no que diz respeito à configuração de parâmetros e controle de risco.

Código-fonte da estratégia
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Big Candle Breakout Strategy Both Side", overlay=true)  

// Input for the point move threshold
point_move_in = input.int(100, title="Point Move Threshold")
point_target = input.int(100, title="Point Target")
point_stoploss = input.int(100, title="Point Stop Loss")
point_buffer = input.int(5, title="Point Buffer")

point_move = point_buffer + point_move_in

// Define the start and end times for trading
start_hour = 9
start_minute = 15
end_hour = 14
end_minute = 30

// Function to check if the current time is within the allowed trading window
in_time_range = (hour(time('30')) > start_hour or (hour(time('30')) == start_hour and minute(time('30')) >= start_minute)) and (hour(time('30')) < end_hour or (hour(time('30')) == end_hour and minute(time('30')) <= end_minute))

// Retrieve the open, high, low, and close prices of 30-minute candles
open_30m = request.security(syminfo.tickerid, "30", open)
high_30m = request.security(syminfo.tickerid, "30", high)
low_30m = request.security(syminfo.tickerid, "30", low)
close_30m = request.security(syminfo.tickerid, "30", close)

// Calculate the range of the candle
candle_range_long = (close_30m - open_30m)
candle_range_short = (open_30m - close_30m)

// Determine if the candle meets the criteria to be marked
big_candle_long = candle_range_long >= point_move_in
big_candle_short = candle_range_short >= point_move_in

// Variables to store the state of the trade
var float long_entry_price = na
var float long_target_price = na
var float long_stop_loss_price = na

var float short_entry_price = na
var float short_target_price = na
var float short_stop_loss_price = na

// Check if there are no active trades
no_active_trades = (strategy.opentrades == 0)

// Long entry condition
if (big_candle_long and na(long_entry_price) and in_time_range and no_active_trades)
    long_entry_price := high_30m+point_buffer
    long_target_price := long_entry_price + point_target
    long_stop_loss_price := long_entry_price - point_stoploss
    strategy.entry("Buy", strategy.long, stop=long_entry_price, limit=long_target_price)

plot(long_entry_price, style=plot.style_linebr, color=color.blue, linewidth=2, title="Entry Price")
plot(long_target_price, style=plot.style_linebr, color=color.green, linewidth=2, title="Target Price")
plot(long_stop_loss_price, style=plot.style_linebr, color=color.red, linewidth=2, title="Stop Loss Price")

// Short entry condition
if (big_candle_short and na(short_entry_price) and in_time_range and no_active_trades)
    short_entry_price := low_30m - point_buffer
    short_target_price := short_entry_price - point_target
    short_stop_loss_price := short_entry_price + point_stoploss
    strategy.entry("Sell", strategy.short, stop=short_entry_price, limit=short_target_price)

plot(short_entry_price, style=plot.style_linebr, color=color.blue, linewidth=2, title="Short Entry Price")
plot(short_target_price, style=plot.style_linebr, color=color.green, linewidth=2, title="Short Target Price")
plot(short_stop_loss_price, style=plot.style_linebr, color=color.red, linewidth=2, title="Short Stop Loss Price") 

// Long exit conditions
if (not na(long_entry_price))
    strategy.exit("Long Exit", from_entry="Buy", limit=long_target_price, stop=long_stop_loss_price)
   
// Short exit conditions
if (not na(short_entry_price))
    strategy.exit("Short Exit", from_entry="Sell", limit=short_target_price, stop=short_stop_loss_price)

// Reset trade status
if (strategy.position_size == 0)
    long_entry_price := na
    long_target_price := na
    long_stop_loss_price := na

    short_entry_price := na
    short_target_price := na
    short_stop_loss_price := na

// Plot the big candle and entry/exit levels
plotshape(series=big_candle_long, location=location.abovebar, style=shape.circle, color=color.green)
plotshape(series=big_candle_short, location=location.abovebar, style=shape.circle, color=color.red)

//plot(long_entry_price, style=plot.style_stepline, color=color.blue, linewidth=2, title="Entry Price")
//plot(long_target_price, style=plot.style_stepline, color=color.green, linewidth=2, title="Target Price")
//plot(long_stop_loss_price, style=plot.style_stepline, color=color.red, linewidth=2, title="Stop Loss Price")