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

Aproveite a estratégia de tendência

Autora:ChaoZhang, Data: 2023-09-26 11:22:04
Tags:

Resumo

A estratégia Take Profit on Trend visa detectar tendências de longo prazo e retrações de curto prazo, assumindo posições longas durante tendências de alta globais, enquanto captura quedas de curto prazo, com níveis razoáveis de stop loss e take profit definidos para seguir a tendência e obter lucros em tempo hábil.

Estratégia lógica

A estratégia usa principalmente a EMA e o RSI para determinar tendências de longo prazo e de curto prazo. Especificamente, usa a EMA de 50 dias e a EMA de 200 dias para julgar tendências de longo prazo e o RSI para medir a força da tendência. Quando o longo prazo está em uma tendência de alta (EMA de 200 dias subindo) e forte (RSI acima de 50), e o curto prazo vê um recuo (os últimos 2 velas fechando mais baixos), uma posição longa é tomada.

Após entrar em uma posição, a estratégia define condições de stop loss e take profit. Quando o preço sobe mais de 2x unidades BHD acima do preço de entrada, os lucros são tomados. Quando o preço cai mais de 3x unidades BHD abaixo do preço de entrada, a posição é parada. A unidade BHD é calculada com base na amplitude dos últimos 200 velas.

Desta forma, a estratégia considera plenamente as características da tendência a longo e curto prazo, aumentando os lucros enquanto controla os riscos, seguindo a tendência enquanto obtém lucros em tempo útil.

Análise das vantagens

A estratégia apresenta as seguintes vantagens:

  1. Considera as tendências de longo e curto prazo, combinadas com indicadores de força, evitando entradas às cegas em mercados variados.

  2. As entradas seguem a direcção da tendência, maior taxa de vitórias.

  3. Os pontos de take profit e stop loss permitem a tomada de lucro e o controle de riscos em tempo hábil.

  4. TP e SL são dinâmicas com base na volatilidade, relativamente razoáveis.

  5. Os backtests mostram bons retornos e estabilidade em todos os símbolos e prazos.

  6. Lógica simples e clara, fácil de entender e implementar para todos os níveis de habilidade.

Análise de riscos

A estratégia apresenta também alguns riscos:

  1. Erros de julgamento a longo/curto prazo que levam a direcções de entrada erradas.

  2. Crashes de mercado podem penetrar paradas.

  3. Configurações de parâmetros ruins afetam negativamente o desempenho.

  4. A pressão está muito apertada, pode sair prematuramente.

  5. Backtest ≠ desempenho ao vivo, necessária otimização contínua.

Soluções:

  1. Otimizar parâmetros, ajustar períodos de MA, adicionar indicadores de validação cruzada.

  2. Paradas mais largas, dimensionamento da posição, outros controles de risco.

  3. Extenso backtesting para avaliar parâmetros.

  4. Optimização dinâmica da TP com base nas condições do mercado.

  5. Revisão contínua, otimização, ajuste ao vivo.

Orientações de otimização

A estratégia pode ser melhorada através de:

  1. Ajuste de parâmetros, períodos de MA, períodos de unidade BHD, etc.

  2. Adicionar indicadores, MACD, KD etc. para melhor precisão a curto prazo.

  3. Otimizar TP/SL, tamanho dinâmico com base na volatilidade, etc.

  4. Adicionar dimensionamento de posições com base na força da tendência.

  5. Testando robustez em mais símbolos e prazos.

  6. Adicionar filtros como preço de fechamento > aberto para evitar armadilhas.

  7. Incorporar aprendizagem de máquina para mais automação e inteligência.

Estes podem melhorar a taxa de ganho, o rendimento, a estabilidade, a adaptabilidade, etc.

Conclusão

Em geral, a estratégia Take Profit on Trend tem as vantagens de considerar tendências longas/cortas, seguindo tendências, claro TP/SL. É uma abordagem de tendência estável e eficiente. Mas existem riscos, exigindo otimização contínua e ajuste ao vivo. A lógica é clara e fácil de implementar. Vale a pena estudar e aplicar para os traders. Com otimização adicional, pode se tornar uma estratégia de quantidade robusta.


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © BHD_Trade_Bot

// @version=5
strategy(
 shorttitle            = 'Take Profit On Trend',
 title                 = 'Take Profit On Trend (by BHD_Trade_Bot)',
 overlay               = true,
 calc_on_every_tick    = true,
 calc_on_order_fills   = true,
 use_bar_magnifier     = true,
 initial_capital       = 1000,
 default_qty_type      = strategy.percent_of_equity,
 default_qty_value     = 100,
 commission_type       = strategy.commission.percent,
 commission_value      = 0.1)



// Backtest Time Period
start_year   = input(title='Start year'   ,defval=2021)
start_month  = input(title='Start month'  ,defval=1)
start_day    = input(title='Start day'    ,defval=1)
start_time = timestamp(start_year, start_month, start_day, 00, 00)

end_year     = input(title='end year'     ,defval=2050)
end_month    = input(title='end month'    ,defval=1)
end_day      = input(title='end day'      ,defval=1)
end_time = timestamp(end_year, end_month, end_day, 23, 59)

is_back_test_time() => true



// EMA
ema50 = ta.ema(close, 50)
ema200 = ta.ema(close, 200)

// RSI
rsi200 = ta.rsi(close, 200)

// EMA_CD
emacd = ema50 - ema200
emacd_signal = ta.ema(emacd, 50)
hist = emacd - emacd_signal

// BHD Unit
bhd_unit = ta.rma(high - low, 200) * 2
bhd_upper = ema200 + bhd_unit
bhd_lower = ema200 - bhd_unit



// All n candles is going down
all_body_decrease(n) =>
    isValid = true
    for i = 0 to (n - 1)
        if (close[i] > close[i + 1])
            isValid := false
            break
    isValid



// ENTRY CONDITIONS

// Long-term uptrend
entry_condition1 = rsi200 > 51 and hist > 0

// Short-term downtrend
entry_condition2 = all_body_decrease(2)

ENTRY_CONDITIONS = entry_condition1 and entry_condition2

if ENTRY_CONDITIONS and is_back_test_time()
    strategy.entry('entry', strategy.long)


// CLOSE CONDITIONS

// Price increase 2 BHD unit
take_profit = close > strategy.position_avg_price + bhd_unit * 2

// Price decrease 3 BHD unit
stop_loss = close < strategy.position_avg_price - bhd_unit * 3

CLOSE_CONDITIONS = take_profit or stop_loss

if CLOSE_CONDITIONS
    strategy.close('entry')



// Draw
plot(ema50, color=color.orange, linewidth=2)
plot(ema200, color=color.purple, linewidth=2)
bhd_upper_line = plot(bhd_upper, color=color.teal)
bhd_lower_line = plot(bhd_lower, color=color.teal)
fill(bhd_upper_line, bhd_lower_line, color=color.new(color.teal, 90))


Mais.