Estratégia de Breakout de Barras N


Data de criação: 2024-04-12 16:57:15 última modificação: 2024-04-12 16:57:15
cópia: 0 Cliques: 572
1
focar em
1617
Seguidores

Estratégia de Breakout de Barras N

Visão geral

A estratégia de N Bars Breakout é uma estratégia de negociação quantitativa baseada em breakouts de preços. A principal idéia da estratégia é abrir uma posição de alta quando o preço de fechamento supera o preço mais alto dos últimos N dias de negociação e abrir uma posição de baixa quando o preço de fechamento cai no preço mais baixo dos últimos N dias de negociação.

Princípio da estratégia

  1. Calcule o preço mais alto (highest) e o preço mais baixo (lowest) nos últimos N dias de negociação.
  2. Se o preço de fechamento atual for superior a “highest”, então você pode abrir uma posição mais longa.
  3. Se o preço de fechamento atual estiver abaixo do lowest, a posição é “short”.
  4. Pode-se optar por usar o preço de fechamento (close) ou o preço alto/baixo (high/low) como fonte de sinal (source).
  5. O preço máximo e o preço mínimo são calculados usando ta.highest e ta.lowest, dependendo da fonte do sinal.
  6. Use ta.crossover e ta.crossunder para determinar a ruptura de preços.

Vantagens estratégicas

  1. A lógica é simples, clara, fácil de implementar e de otimizar.
  2. A capacidade de capturar e monitorar tendências é muito forte.
  3. Os parâmetros podem ser ajustados de acordo com diferentes variedades e períodos.
  4. É amplamente aplicável e tem bom desempenho para a maioria das variedades e ciclos.
  5. A flexibilidade na escolha da fonte de sinais aumenta a adaptabilidade da estratégia.

Risco estratégico

  1. A tendência é de que os mercados de ativos sejam mais propensos a se deslocarem para mercados de baixa volatilidade e de baixa volatilidade, e que a abertura frequente de posições fechadas resulte em custos de transação mais elevados.
  2. A escolha incorreta dos parâmetros pode levar a um risco de sobre-conformidade.
  3. A tendência pode virar para uma retracção maior.
  4. Uma única fonte de sinal pode estar em risco de falha.

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

  1. Aumentar as condições de filtragem de tendências, como a direção da tendência ma, adx, etc., reduzindo a negociação em situações de choque.
  2. Optimizar a escolha de parâmetros, como N-valores, fontes de sinais, etc., para aumentar a estabilidade da estratégia e a rentabilidade.
  3. Aumentar o stop loss e mover a lógica de stop loss, controlando o risco de uma única transação.
  4. A combinação de várias fontes de sinal aumenta a confiabilidade do sinal, como considerar simultaneamente o preço de fechamento e a ruptura de preços altos e baixos.
  5. Optimizar parâmetros e lógica de acordo com diferentes variedades e ciclos.

Resumir

A estratégia de ruptura de N Bars é uma estratégia de negociação quantitativa simples e prática, que atinge melhores efeitos de acompanhamento de tendências por meio da captura de situações de ruptura de preços. A estratégia é lógica clara, com grande espaço de otimização e ampla aplicabilidade. É uma estratégia quantitativa que merece mais pesquisa e otimização.

Código-fonte da estratégia
/*backtest
start: 2023-04-06 00:00:00
end: 2024-04-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Breakout", overlay=true, precision=6, pyramiding=0, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=25.0, commission_value=0.05)

n = input.int(5, "N Bars", minval=1)
src_input = input.string("Close", "Source", ["Close", "High/Low"])

bull_src = switch src_input
	"Close" => close
	"High/Low" => high
	=>
		runtime.error("Invalid source input")
		na

bear_src = switch src_input
	"Close" => close
	"High/Low" => low
	=>
		runtime.error("Invalid source input")
		na

highest = ta.highest(bull_src[1], n)
lowest = ta.lowest(bear_src[1], n)

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
// Plots
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------

bool long = ta.crossover(bull_src, highest)
bool short = ta.crossunder(bear_src, lowest)

//Plots
lowest_plot  = plot(lowest,  color=color.red, title="Lowest")
highest_plot  = plot(highest,  color=color.green, title="Highest")
bull_src_plot = plot(bull_src, color=color.blue, title="Bull")
bear_src_plot = plot(bear_src, color=color.orange, title="Bear")

// this message is an alert that can be sent to a webhook, which allows for simple automation if you have a server that listens to alerts and trades programmatically.
enter_long_alert = '{"side": "Long", "order": "Enter", "price": ' + str.tostring(open) + ', "timestamp": ' + str.tostring(timenow) + '}'
exit_long_alert = '{"side": "Long", "order": "Exit", "price": ' + str.tostring(open) + ', "timestamp": ' + str.tostring(timenow) + '}'

if long
    strategy.entry(id="Long", direction=strategy.long, limit=open, alert_message=enter_long_alert)

if short
    strategy.close(id="Long", comment="Close Long", alert_message=exit_long_alert)