Estratégia de negociação de média móvel de tendência

Autora:ChaoZhang, Data: 2021-09-21 20:34:43
Tags:

Resumo

Esta estratégia usa uma combinação de médias móveis rápidas e lentas para determinar a direção da tendência e capturar as tendências de médio a longo prazo para a negociação de tendências.

Estratégia lógica

A estratégia baseia-se principalmente na cruz de ouro e na cruz de morte das médias móveis para determinar as tendências do mercado.

Quando o MA rápido cruza acima do MA lento, ele sinaliza uma tendência de alta no mercado, e a estratégia irá longo na abertura da próxima barra.

Além disso, o parâmetro bars é definido para filtrar falhas. O valor padrão é 2, o que significa que o MA rápido precisa fechar acima do MA lento por 2 bares consecutivos antes de desencadear um sinal longo. Isso evita falhas de forma eficaz.

Para a negociação de criptomoedas, a estratégia também incorpora uma lógica de valor extremo - somente quando os MAs rápidos e lentos atingirem áreas extremas, os sinais de negociação serão acionados. Isso evita ainda mais sinais falsos.

A regra de saída é simples e direta - posição de fechamento quando o stop loss é atingido.

Vantagens

  • O sistema dual MA permite acompanhar as tendências de forma eficaz
  • A MA rápida reage rapidamente às alterações da tendência
  • A MA lenta determina a direcção geral
  • O parâmetro bars filtra algumas falhas
  • Proteção de valor extremo evita falsos sinais esporádicos em torno de pontos críticos
  • Mover o stop loss gerencia os riscos

Riscos

  • Os sistemas de MA dupla tendem a perder em torno de inversões de tendência
  • O stop loss em movimento pode parar prematuramente
  • O filtro bars pode perder alguns sinais válidos
  • Os guardiões de valor extremo às vezes perdem boas entradas.
  • A estratégia funciona melhor em mercados de forte tendência

Os riscos podem ser reduzidos:

  • Otimização do parâmetro bars
  • Adicionando outros filtros como MACD
  • Ajuste dos níveis de stop loss para evitar o stop out prematuro
  • Considerando reentrada

Orientações de otimização

A estratégia pode ser melhorada pelos seguintes aspectos:

  1. Ajuste dos parâmetros MA

Testar mais combinações de MA para encontrar os parâmetros ideais para o mercado atual, por exemplo, MA rápida de 10 períodos e MA lenta de 50 períodos.

  1. Adição de outros indicadores

Teste adicionando MACD, KDJ e outros indicadores para estabelecer regras de entrada mais rigorosas e evitar falsos sinais.

  1. Otimização de entradas

A entrada de MA dupla simples atual pode ser reforçada:

  • Introduzir longo apenas se o MACDDIFF também cruzar acima de 0 quando o MA rápido cruzar acima do MA lento
  • Introduza longo apenas se a KDJ dar cruz de ouro quando o MA rápido cruzar acima do MA lento
  1. Optimização das paradas

Teste outros mecanismos de paragem, como paragem de tracção, para evitar paragem prematura.

  1. Adição de novas entradas

Permitir a reentrada após a paragem, para evitar a perda de tendências.

Resumo

Em resumo, esta estratégia básica de seguir tendências tem uma lógica simples e direta - usando MAs duplos para a direção da tendência e paradas móveis para gerenciamento de riscos. Os prós são fáceis de entender, podem lucrar com tendências e gerenciar riscos. Mas também existem limitações, como maus sinais durante consolidações, paradas prematuras, etc. É necessário ajuste e otimização ao vivo, como adicionar filtros, ajustar paradas, para torná-lo adaptável a diferentes ambientes de mercado. Como uma estratégia de negociação de tendências introdutória, é adequada para iniciantes aprenderem e aplicarem. Mas suas limitações devem ser notadas e estratégias mais avançadas devem ser exploradas. Somente através de melhorias contínuas é possível alcançar lucros sustentáveis em mercados em constante mudança.


/*backtest
start: 2023-08-21 00:00:00
end: 2023-09-20 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title = "Noro's Trend MAs Strategy v2.3", shorttitle = "Trend MAs str 2.3", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//Settings
needlong = input(true, "long")
needshort = input(true, "short")
needstops = input(false, "stops")
stoppercent = input(5, defval = 5, minval = 1, maxval = 50, title = "Stop, %")
usefastsma = input(true, "Use fast MA Filter")
fastlen = input(5, defval = 5, minval = 1, maxval = 50, title = "fast MA Period")
slowlen = input(21, defval = 20, minval = 2, maxval = 200, title = "slow MA Period")
bars = input(2, defval = 2, minval = 0, maxval = 3, title = "Bars Q")
needbg = input(false, defval = false, title = "Need trend Background?")
needex = input(true, defval = true, title = "Need extreme? (crypto/fiat only!!!)")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

src = close

//PriceChannel 1
lasthigh = highest(src, slowlen)
lastlow = lowest(src, slowlen)
center = (lasthigh + lastlow) / 2

//PriceChannel 2
lasthigh2 = highest(src, fastlen)
lastlow2 = lowest(src, fastlen)
center2 = (lasthigh2 + lastlow2) / 2

//Trend
trend = low > center and low[1] > center[1] ? 1 : high < center and high[1] < center[1] ? -1 : trend[1]

//Bars
bar = close > open ? 1 : close < open ? -1 : 0
redbars = bars == 0 ? 1 : bars == 1 and bar == -1 ? 1 : bars == 2 and bar == -1 and bar[1] == -1 ? 1 : bars == 3 and bar == -1 and bar[1] == -1 and bar[2] == -1 ? 1 : 0
greenbars = bars == 0 ? 1 : bars == 1 and bar == 1 ? 1 : bars == 2 and bar == 1 and bar[1] == 1 ? 1 : bars == 3 and bar == 1 and bar[1] == 1 and bar[2] == 1 ? 1 : 0

//Fast RSI
fastup = rma(max(change(close), 0), 2)
fastdown = rma(-min(change(close), 0), 2)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//CryptoBottom
mac = sma(close, 10)
len = abs(close - mac)
sma = sma(len, 100)
max = max(open, close)
min = min(open, close)

//Signals
up1 = trend == 1 and (low < center2 or usefastsma == false) and redbars == 1
dn1 = trend == -1 and (high > center2 or usefastsma == false) and greenbars == 1
up2 = high < center and high < center2 and bar == -1 and needex
dn2 = low > center and low > center2 and bar == 1 and needex
up3 = close < open and len > sma * 3 and min < min[1] and fastrsi < 10 ? 1 : 0

//Lines
plot(center2, color = red, linewidth = 3, transp = 0, title = "Fast MA")
plot(center, color = blue, linewidth = 3, transp = 0, title = "Slow MA")

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)

//Trading
stoplong = up1 == 1 and needstops == true ? close - (close / 100 * stoppercent) : stoplong[1]
stopshort = dn1 == 1 and needstops == true ? close + (close / 100 * stoppercent) : stopshort[1]

if up1 or up2 or up3
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    strategy.exit("Stop Long", "Long", stop = stoplong)

if dn1
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    strategy.exit("Stop Short", "Short", stop = stopshort)
    
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    

Mais.