Tendência do ADX do petróleo bruto seguindo a estratégia

Autora:ChaoZhang, Data: 2024-01-25 15:18:15
Tags:

img

Resumo

Esta estratégia é adaptada da estratégia de negociação de futuros de petróleo bruto livre de Kevin Davey. Utiliza o indicador ADX para determinar a tendência no mercado de petróleo bruto e, combinado com o princípio de quebra de preço, implementa uma estratégia de negociação automatizada simples e prática para o petróleo bruto.

Princípio da estratégia

  1. Calcular o indicador ADX de 14 períodos
  2. Quando o ADX> 10, considera-se que o mercado apresenta uma tendência
  3. Se o preço de fechamento for superior ao preço de fechamento há 65 bares, indica uma ruptura de preço e um sinal longo.
  4. Se o preço de fechamento for menor do que o preço de fechamento há 65 bares, indica uma ruptura de preço e um sinal curto.
  5. Configurar stop loss e take profit após a entrada na posição

A estratégia baseia-se principalmente no indicador ADX para determinar a tendência e gera sinais de negociação com base em quebras de preços de ciclo fixo sob condições de tendência.

Análise das vantagens

  • Usar o ADX para determinar tendências e evitar oportunidades de tendências perdidas
  • As rupturas de preços de ciclo fixo geram sinais com bons resultados de backtest
  • Código intuitivo e simples, fácil de entender e modificar
  • Kevin Davey's verificação de negociação ao vivo de vários anos, não curva ajustamento

Análise de riscos

  • Como indicador principal, o ADX é sensível à selecção de parâmetros e à selecção de ciclos de ruptura.
  • As rupturas de ciclo fixo podem perder algumas oportunidades
  • A definição incorrecta de stop loss e take profit pode aumentar as perdas
  • Pode haver diferenças entre os resultados de negociação ao vivo e de backtest

Orientações de otimização

  • Otimizar parâmetros ADX e ciclos de ruptura
  • Aumentar o ajustamento dinâmico do tamanho da posição
  • Modificar e melhorar continuamente a estratégia com base nos resultados dos backtests e na verificação das negociações em tempo real
  • Introduzir técnicas de aprendizagem de máquina e aprendizagem profunda para otimização de estratégias

Resumo

No geral, esta é uma estratégia de negociação de petróleo bruto muito prática. Ele usa o indicador ADX para determinar a tendência de forma muito razoável. O princípio de quebra de preço é simples e eficaz com bons resultados de backtest. Ao mesmo tempo, como estratégia pública livre de Kevin Davey, ele tem uma confiabilidade muito forte no combate real. Embora ainda haja espaço para melhoria na estratégia, é uma escolha muito adequada para iniciantes e pequenos comerciantes de capital para começar e praticar.


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

// Strategy idea coded from EasyLanguage to Pinescript
//@version=5
strategy("Kevin Davey Crude free crude oil strategy", shorttitle="CO Fut", format=format.price, precision=2, overlay = true, calc_on_every_tick = true)
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
dirmov(len) =>
	up = ta.change(high)
	down = -ta.change(low)
	plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
	minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
	truerange = ta.rma(ta.tr, len)
	plus = fixnan(100 * ta.rma(plusDM, len) / truerange)
	minus = fixnan(100 * ta.rma(minusDM, len) / truerange)
	[plus, minus]
adx(dilen, adxlen) =>
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)
plot(sig, color=color.red, title="ADX")

buy = sig > 10 and (close - close[65]) > 0 and (close - close[65])[1] < 0
sell = sig > 10 and (close - close[65]) < 0 and (close - close[65])[1] > 0

plotshape(buy, style = shape.arrowup, location = location.belowbar,size = size.huge)
plotshape(sell, style = shape.arrowdown, location = location.abovebar,size = size.huge)

if buy
	strategy.entry("long", strategy.long)
if sell
	strategy.entry("short", strategy.short)

if strategy.position_size != 0
	strategy.exit("long", profit = 450, loss = 300)
	strategy.exit("short", profit = 450, loss = 300)


// GetTickValue() returns the currency value of the instrument's
// smallest possible price movement.
GetTickValue() =>
    syminfo.mintick * syminfo.pointvalue

// On the last historical bar, make a label to display the
// instrument's tick value
if barstate.islastconfirmedhistory
    label.new(x=bar_index + 1, y=close, style=label.style_label_left,
         color=color.black, textcolor=color.white, size=size.large, 
         text=syminfo.ticker + " has a tick value of:\n" + 
             syminfo.currency + " " + str.tostring(GetTickValue()))

Mais.