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

Estratégia de ruptura da média móvel de ponto único

Autora:ChaoZhang, Data: 2024-02-02 11:19:19
Tags:

img

Resumo

A estratégia de breakout de média móvel de ponto único é uma estratégia de negociação quantitativa baseada no oscilador de momento de Chande. Ele detecta quando o mercado está em uma fase de consolidação, calculando as mudanças de momento do preço. Quando a linha de momento de Chande cruza acima da linha de compra ou cai abaixo da linha de venda, as negociações longas ou curtas serão executadas de acordo.

Estratégia lógica

A estratégia calcula primeiro a variação do ímpeto de preçosmomm, em seguida, separa-lo em momento positivom1e impulso negativom2Em seguida, soma o ímpeto positivo e negativo durante um período de reflexão emsm1esm2Finalmente, o oscilador de momento ChandechandeMOO indicador oscila em torno da linha zero. Leituras acima de zero indicam um forte impulso ascendente, enquanto leituras abaixo de zero indicam um forte impulso descendente.

Quando a linha de Momentum de Chande cruza acima da linha de compra a partir de níveis mais baixos, ele sinaliza que o preço está saindo de uma tendência de queda e pronto para iniciar uma tendência de alta.

Análise das vantagens

  • A estratégia é capaz de identificar pontos de viragem da tendência de baixa para a consolidação para a tendência de alta, permitindo entradas a preços baixos e saídas a preços elevados.
  • O Oscilador de Momento Chande considera tanto a magnitude quanto a taxa de mudanças de preços, tornando-o muito eficaz para a detecção de tendências.
  • A lógica estratégica é simples e fácil de implementar.

Análise de riscos

  • O oscilador de momento de Chande é sensível aos parâmetros de entrada.
  • As configurações estáticas de linha de compra e venda também podem introduzir sinais falsos excessivos.
  • A ausência de stop loss significa que as negociações perdedoras podem acumular grandes perdas.

Algumas formas de melhorar incluem o uso de linhas dinâmicas de compra/venda, a filtragem de sinais com outros indicadores e a implementação de stop loss para controlar os riscos.

Orientações de otimização

  • Teste diferentes configurações de parâmetros para encontrar valores ideais
  • Adotar linhas dinâmicas de compra e venda
  • Adicionar filtros adicionais com outros indicadores
  • Incorporar uma lógica de stop loss para reduzir as perdas

Conclusão

A estratégia de breakout de média móvel de ponto único identifica pontos de virada de tendência de tendência de baixa para consolidação para tendência de alta usando o Oscilador de Momento Chande, permitindo a negociação de baixa compra e alta venda. Apesar de ser simples e intuitivo, melhorias no ajuste de parâmetros, filtragem de sinal e controle de risco podem melhorar ainda mais o desempenho.


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

//@version=4

//* Backtesting Period Selector | Component *//
//* https://www.tradingview.com/script/eCC1cvxQ-Backtesting-Period-Selector-Component *//
//* https://www.tradingview.com/u/pbergden/ *//
//* Modifications made *//
testStartYear = input(2021, "Backtest Start Year") 
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(10, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(999999, "Backtest Stop Year")
testStopMonth = input(9, "Backtest Stop Month")
testStopDay = input(26, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriod() => true
/////////////// END - Backtesting Period Selector | Component ///////////////
strategy(title="Chande Momentum Strat", shorttitle="ChandeMO Strat", format=format.price, precision=2)
length = input(9, minval=1)
src = input(close, "Price", type = input.source)
momm = change(src)
f1(m) => m >= 0.0 ? m : 0.0
f2(m) => m >= 0.0 ? 0.0 : -m
m1 = f1(momm)
m2 = f2(momm)
sm1 = sum(m1, length)
sm2 = sum(m2, length)
percent(nom, div) => 100 * nom / div
chandeMO = percent(sm1-sm2, sm1+sm2)
plot(chandeMO, "Chande MO", color=color.blue)
hline(0, color=#C0C0C0, linestyle=hline.style_dashed, title="Zero Line")
buyline= input(-80)
sellline= input(80)
hline(buyline, color=color.gray)
hline(sellline, color=color.gray)

if testPeriod()
    if crossover(chandeMO, buyline)
        strategy.entry("Long", strategy.long, alert_message="a=ABCD b=buy e=binanceus q=1.2 s=uniusd")
    //    strategy.exit(id="Long Stop Loss", stop=strategy.position_avg_price*0.8) //20% stop loss 
        
    if crossunder(chandeMO, sellline)
        strategy.entry("Short", strategy.short, alert_message="a=ABCD b=sell e=binanceus q=1.2 s=uniusd")
    //    strategy.exit(id="Short Stop Loss", stop=strategy.position_avg_price*1.2) //20% stop loss

//      remember to alert as    {{strategy.order.alert_message}}

Mais.