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

A tendência segue a estratégia

Autora:ChaoZhang, Data: 2023-11-06 10:34:19
Tags:

img

Resumo

A estratégia de seguimento de tendências é uma estratégia de negociação de tendências baseada no cruzamento de médias móveis. Ela usa o cruzamento de uma média móvel exponencial (EMA) e uma média móvel Hull (HMA) para determinar a direção da tendência e gerar sinais de negociação em conformidade.

Estratégia lógica

A estratégia emprega duas médias móveis com parâmetros diferentes: uma EMA mais rápida e uma HMA mais lenta.

Quando a EMA mais rápida cruza acima da HMA mais lenta, ela é vista como o início de uma tendência de alta, e a estratégia colocará uma ordem longa no preço de mercado na próxima barra aberta.

Para otimizar o tempo de entrada, a estratégia incorpora uma opção Heikin-Ashi. Quando ativada, os sinais de compra e venda serão baseados em barras Heikin-Ashi em vez de velas normais.

A estratégia também emprega uma configuração de stop loss. Quando a perda da posição atinge a porcentagem de stop loss pré-definida, a posição será fechada ao preço de mercado, limitando a perda máxima por negociação.

Análise das vantagens

As vantagens desta estratégia incluem:

  1. A utilização do cruzamento entre a EMA e a HMA para determinar as tendências pode tirar partido de diferentes médias móveis de períodos e melhorar a precisão.

  2. A negociação baseada em tendências evita agitar oscilações menores e reduz os negócios desnecessários.

  3. A opção Heikin-Ashi otimiza o tempo de entrada filtrando sinais falsos.

  4. O stop loss móvel limita efetivamente a perda máxima por negociação.

  5. Os parâmetros personalizáveis permitem a otimização para diferentes produtos e prazos.

Análise de riscos

Os riscos desta estratégia incluem:

  1. Como um sistema que segue a tendência, apresenta um desempenho inferior durante os mercados de gama.

  2. Pode incorrer em grandes perdas quando ocorre uma inversão da tendência.

  3. A configuração inadequada de stop loss pode causar paradas desnecessárias ou aumentar as perdas.

  4. A má regulação dos parâmetros pode levar a excesso de negociação ou inatividade.

  5. Os períodos de EMA e HMA necessitam de otimização para diferentes produtos e prazos.

  6. Heikin-Ashi não pode evitar completamente o risco de falhas.

Orientações de otimização

A estratégia pode ser melhorada pelos seguintes aspectos:

  1. Utilize mais indicadores como MACD, KDJ para melhorar a precisão da tendência.

  2. Adicionar mais filtros, como volume, ATR para reduzir falhas.

  3. Otimizar os parâmetros das médias móveis com base em produtos e prazos.

  4. Ajustar a percentagem de stop loss para um melhor comportamento de stop loss.

  5. Considere as características de captação de lucro, como a parada de transferência de lucro e a captação parcial de lucro.

  6. Teste formas alternativas de calcular a base de custos de posição para otimização.

Resumo

A estratégia de seguimento de tendências identifica tendências usando cruzamento de médias móveis e otimiza o desempenho por meio de Heikin-Ashi e stop loss móvel. É adequado para negociação de tendências de médio a longo prazo e pode ser melhorado através de ajuste de parâmetros e expansão de recursos. Mas os usuários devem estar cientes dos riscos de reversões e stop loss inadequados.


/*backtest
start: 2022-10-30 00:00:00
end: 2023-11-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("𝐉𝐔𝐈𝐂𝐘 𝐓𝐑𝐄𝐍𝐃", overlay=true, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=15)

//Heikin Ashi Option
ha = input(true, title = "Heikin Ashi Source")
src = ha ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close, barmerge.gaps_off, barmerge.lookahead_off) : close
usestoploss = input(true, title="Stop Loss")

//EMA
len1 = input.int(9, minval=1, title="EMA Length")
ema = ta.ema(src, len1)
emaline = plot(ema, title="EMA", color=color.blue, linewidth=2)

//HMA
len2 = input.int(69, minval=1, title="HMA Length")
hma = ta.wma(2*ta.wma(src, len2/2)-ta.wma(src, len2), math.floor(math.sqrt(len2)))
hmaline = plot(hma, title="HMA", color=color.purple, linewidth=2)
fillcolor = hma < ema ? color.blue : color.purple
fill(emaline, hmaline, title="EMA Fill", color=color.new(fillcolor, 80), editable=true)

//Stop Loss Conditions
stoplosspercent = input.float(title="Stop Loss (%)", defval=-6.5, minval=-50, maxval=0, step=.1) / 100
stoploss = strategy.position_avg_price * (1 + stoplosspercent)
stop = stoploss > close and stoploss[1] < close[1] and strategy.position_size > 0 and usestoploss

//Buy Sell Conditions
buy = hma < ema
sell = hma > ema

//Trades and Alerts
if buy
	strategy.entry("Long Position", strategy.long, comment="BUY")
//	alert("{\n\"message_type\": \"bot\",\n\"bot_id\": 6477543,\n\"email_token\": \"9b842a1b-9cb4-48ac-9ed4-524c98557e5f\",\n\"delay_seconds\": 0\n}", alert.freq_once_per_bar)
if sell and strategy.openprofit > 0
	strategy.close("Long Position", comment="SELL")
//	alert("{\n\"action\": \"close_at_market_price\",\n\"message_type\": \"bot\",\n\"bot_id\": 6477543,\n\"email_token\": \"9b842a1b-9cb4-48ac-9ed4-524c98557e5f\",\n\"delay_seconds\": 0\n}", alert.freq_once_per_bar)
if stop
    strategy.close("Long Position", comment="STOP")
//    alert("{\n\"action\": \"close_at_market_price\",\n\"message_type\": \"bot\",\n\"bot_id\": 6477543,\n\"email_token\": \"9b842a1b-9cb4-48ac-9ed4-524c98557e5f\",\n\"delay_seconds\": 0\n}", alert.freq_once_per_bar)

//Alternate Labels
var pos = 0
if buy and pos <= 0
    pos := 1
if sell and pos >= 0
    pos := -1
buylabel  = pos ==  1 and (pos !=  1)[1]
selllabel = pos == -1 and (pos != -1)[1]

//Plot Labels
plotshape(buylabel,  style=shape.labelup,   location=location.belowbar, color=color.blue,   text="BUY",  textcolor=color.white, size=size.tiny)
plotshape(selllabel, style=shape.labeldown, location=location.abovebar, color=color.purple, text="SELL", textcolor=color.white, size=size.tiny)
plotshape(stop,      style=shape.labeldown, location=location.abovebar, color=color.yellow, text="STOP", textcolor=color.white, size=size.tiny)


Mais.