Estratégia de acompanhamento de tendências com base em sinais de cruzamento de OBV e MA

OBV MA SMA
Data de criação: 2024-04-29 13:48:58 última modificação: 2024-04-29 13:48:58
cópia: 0 Cliques: 802
1
focar em
1617
Seguidores

Estratégia de acompanhamento de tendências com base em sinais de cruzamento de OBV e MA

Visão geral

Esta estratégia é chamada de “estratégia de seguimento de tendências OBVious MA baseada em sinais de cruzamento OBV com MA”, e seu núcleo é o uso do indicador OBV (On Balance Volume) e o cruzamento da média móvel para gerar um sinal de negociação. OBV pode fornecer um sinal de tendência líder, esta estratégia usa OBV para quebrar a média móvel como entrada e saída condições para capturar a tendência.

Princípio da estratégia

  1. Calcule o valor do indicador OBV: se o preço de fechamento atual for maior que a linha K anterior, o OBV é adicionado ao volume de transação atual, caso contrário, o volume de transação é subtraído.
  2. Calcule as quatro médias móveis de OBV: MA de entrada com mais de um período longo, MA de saída com mais de um período longo, MA de entrada com menos de um período curto e MA de saída com menos de um período curto.
  3. Geração de sinais de transação:
    • Quando o OBV usa um longo ciclo para fazer mais entradas em MA e o filtro de direção não está em branco, abra mais posições
    • Quando o OBV faz mais MA em períodos longos, a posição é neutralizada.
    • Quando o OBV passa por um curto período de vazio na entrada do campo MA e o filtro de direção não está fazendo muito, o estoque é vazio
    • Quando o OBV passa por um curto período de MA de saída, o estoque é vazio
  4. Gerenciamento de transações: se houver um sinal de reversão, as posições serão eliminadas e novas posições serão abertas.

Vantagens estratégicas

  1. Aproveite os sinais de tendência liderados pelo OBV para construir um depósito no início da tendência.
  2. Separando o MA de entrada e saída, o tempo de entrada e saída pode ser otimizado independentemente.
  3. A lógica do código é simples e clara, fácil de entender e melhorar.
  4. A introdução de filtros de direção evita transações frequentes e reduz custos.

Risco estratégico

  1. A ausência de outros indicadores de confirmação pode gerar falsos sinais. Recomenda-se o uso em combinação com outros indicadores.
  2. Falta de gestão de stop loss e posições, com risco de aumento de perdas individuais. Pode ser adicionado a medidas razoáveis de stop loss e gestão de fundos.
  3. A escolha inadequada de parâmetros pode afetar o desempenho da estratégia. Os parâmetros precisam ser otimizados de acordo com as diferentes características e ciclos do mercado.

Direção de otimização da estratégia

  1. Pode-se tentar introduzir filtros de tendência, como direção MA, ATR, etc., para melhorar a qualidade do sinal.
  2. Pode-se usar diferentes tipos de MA em OBV, como EMA, WMA, etc., para capturar tendências de diferentes velocidades.
  3. Pode-se otimizar o gerenciamento de posições, como adotar estratégias de aumento e diminuição de posições, aumentando a posição quando a tendência aumenta e diminuindo a posição quando a tendência diminui.
  4. Pode ser combinado com outros indicadores de valor, como MVA, PVT, etc., para construir sinais conjuntos para aumentar a taxa de vitória.

Resumir

Esta estratégia apresenta um método simples de acompanhamento de tendências baseado em OBV e MA cruzados. A vantagem é a clareza lógica, a capacidade de capturar a tendência em tempo hábil, e a capacidade de controlar a posição de forma flexível através da separação da entrada e saída. A desvantagem é a falta de medidas de controle de risco e meios de confirmação de sinais.

Código-fonte da estratégia
/*backtest
start: 2023-04-23 00:00:00
end: 2024-04-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ThousandX_Trader

//@version=5
strategy(title="OBVious MA Strategy [1000X]", overlay=false, 
         initial_capital=10000, margin_long=0.1, margin_short=0.1,
         default_qty_type=strategy.percent_of_equity, default_qty_value=100,
         slippage=1, commission_type=strategy.commission.percent, commission_value=0.1)

// Direction Input ///
tradeDirection = input.string("long", title="Direction", options=["long", "short"], group = "Direction Filter")

    ///////////////////////////////////////
   //  1000X OBV MA INDICATOR           //
  ///////////////////////////////////////

// OBV Trend Length Inputs //
long_entry_length = input(190, title="Long Entry MA Length", group = "Moving Average Settings")
long_exit_length = input(202, title="Long Exit MA Length", group = "Moving Average Settings")
short_entry_length = input(395, title="Short MA Entry Length", group = "Moving Average Settings")
short_exit_length = input(300, title="Short Exit MA Length", group = "Moving Average Settings")

// OBV Calculation
obv = ta.cum(ta.change(close) >= 0 ? volume : -volume)

// Calculate OBV Moving Averages
obv_ma_long_entry = ta.sma(obv, long_entry_length)
obv_ma_long_exit = ta.sma(obv, long_exit_length)
obv_ma_short_entry = ta.sma(obv, short_entry_length)
obv_ma_short_exit = ta.sma(obv, short_exit_length)

   ///////////////////////////////////////
  //         STRATEGY RULES            //
 ///////////////////////////////////////

longCondition = ta.crossover(obv, obv_ma_long_entry) and tradeDirection != "short" and strategy.position_size <= 0
longExitCondition = ta.crossunder(obv, obv_ma_long_exit)
shortCondition = ta.crossunder(obv, obv_ma_short_entry) and tradeDirection != "long" and strategy.position_size >= 0
shortExitCondition = ta.crossover(obv, obv_ma_short_exit)

  ///////////////////////////////////////
 //         ORDER EXECUTION           //
///////////////////////////////////////

// Close opposite trades before entering new ones
if (longCondition and strategy.position_size < 0)
    strategy.close("Short Entry")

if (shortCondition and strategy.position_size > 0)
    strategy.close("Long Entry")

// Enter new trades
if (longCondition)
    strategy.entry("Long Entry", strategy.long)

if (shortCondition)
    strategy.entry("Short Entry", strategy.short)

// Exit conditions
if (longExitCondition)
    strategy.close("Long Entry")

if (shortExitCondition)
    strategy.close("Short Entry")

  ///////////////////////////////////////
 //            PLOTTING               //
///////////////////////////////////////

// Plot OBV line with specified color
plot(obv, title="OBV", color=color.new(#2962FF, 0), linewidth=1)

// Conditionally plot Long MAs with specified colors based on Direction Filter
plot(tradeDirection == "long" ? obv_ma_long_entry : na, title="Long Entry MA", color=color.new(color.rgb(2, 130, 228), 0), linewidth=1)
plot(tradeDirection == "long" ? obv_ma_long_exit : na, title="Long Exit MA", color=color.new(color.rgb(106, 168, 209), 0), linewidth=1)

// Conditionally plot Short MAs with specified colors based on Direction Filter
plot(tradeDirection == "short" ? obv_ma_short_entry : na, title="Short Entry MA", color=color.new(color.rgb(163, 2, 227), 0), linewidth=1)
plot(tradeDirection == "short" ? obv_ma_short_exit : na, title="Short Exit MA", color=color.new(color.rgb(192, 119, 205), 0), linewidth=1)