Estratégia de Momentum de Escala de Tempo Dupla

SMA
Data de criação: 2024-04-25 17:33:02 última modificação: 2024-04-25 17:33:02
cópia: 0 Cliques: 592
1
focar em
1617
Seguidores

Estratégia de Momentum de Escala de Tempo Dupla

Visão geral

A estratégia é uma estratégia de dinâmica em duas escalas de tempo. Ela determina a direção da tendência usando uma média móvel simples (SMA) no período de tempo de nível superior e um ponto de pivô (PivotLow e PivotHigh) no período de tempo de nível inferior para identificar o ponto de reversão.

Princípio da estratégia

O principal princípio da estratégia é que a direção da tendência do ciclo de tempo de nível superior afeta a tendência do ciclo de tempo de nível inferior. Quando o ciclo de tempo de nível superior apresenta uma tendência ascendente, a reversão do ciclo de tempo de nível inferior é mais provável que seja uma oportunidade de compra; Quando o ciclo de tempo de nível superior apresenta uma tendência descendente, a reversão do ciclo de tempo de nível inferior é mais provável que seja uma oportunidade de falta.

Vantagens estratégicas

  1. Análise de dupla escala de tempo, que utiliza o efeito do ciclo de tempo de nível superior sobre o ciclo de tempo de nível inferior, aumentando a probabilidade de sucesso da transação.
  2. O uso do SMA para determinar a direção da tendência é mais confiável, e o uso do ponto central para capturar o ponto de reversão é mais preciso.
  3. Os parâmetros são ajustáveis e adaptáveis. O usuário pode ajustar a escala de tempo alta ou baixa, o período do SMA, os parâmetros do ponto central, etc., de acordo com suas necessidades.
  4. A lógica é clara, fácil de entender e de implementar.

Risco estratégico

  1. Risco de ruptura de tendência. Se a tendência do ciclo de tempo de nível superior mudar de repente, o ciclo de tempo de nível inferior pode não ter reagido, resultando na falha da estratégia.
  2. Risco de configuração de parâmetros. A configuração inadequada de parâmetros pode causar um mau desempenho da estratégia. Por exemplo, a escolha de períodos de SMA muito curtos pode levar a negociações frequentes, a escolha de períodos muito longos pode atrasar o julgamento de tendências.
  3. Risco de situações extremas. Em situações extremas (como a queda de uma tempestade), a estratégia pode falhar. Em tais situações, o ciclo de tempo de nível inferior pode não seguir a tendência do ciclo de tempo de nível superior.

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

  1. Aumentar o julgamento de mudanças de tendência. Pode-se adicionar alguma lógica para julgar se a tendência do ciclo de tempo de nível superior está mudando, a fim de ajustar mais rapidamente a negociação do ciclo de tempo de nível inferior.
  2. Optimizar a seleção de parâmetros. Alguns métodos de otimização de parâmetros podem ser usados (como algoritmos genéticos, pesquisa de grades, etc.) para encontrar o melhor conjunto de parâmetros.
  3. Aumentar o controle de risco. Pode-se adicionar algumas medidas de controle de risco (como stop loss, gestão de posição, etc.) para reduzir os perdas em situações extremas.
  4. A integração de vários fatores pode ser considerada para integrar outros indicadores ou fatores (como volatilidade, volume de transação, etc.) na estratégia para aumentar a estabilidade da estratégia.

Resumir

A estratégia de dinâmica de duas escalas de tempo utiliza a ligação entre os períodos de tempo de alto e baixo nível, para alcançar a direção da tendência em períodos de tempo de alto nível, capturando os pontos de reversão em períodos de tempo de baixo nível, para alcançar o acompanhamento da tendência e a inversão de negociação. A lógica da estratégia é clara, as vantagens são evidentes, mas também há alguns riscos.

Código-fonte da estratégia
/*backtest
start: 2023-04-19 00:00:00
end: 2024-04-24 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/
// © Riester

//@version=5
strategy("Dual Timeframe Momentum", overlay=true, precision=6, pyramiding=0, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=25.0, commission_value=0.05)

n = input.int(20, "Moving Average Period", minval=1)
src = input.source(close, "Source")
high_tf = input.timeframe("240", "Resolution")
pivot_l = input.int(5, "Pivot Let Bars")
pivot_r = input.int(2, "Pivot Right Bars")

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
// Calculations
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------

// 1. Define low and high timeframe prices
low_src = src
high_src = request.security(syminfo.tickerid, high_tf, src)

// 2. Use simple moving average to determine trend of higher timeframe (up or down)
high_tf_ma = ta.sma(high_src, n)
plot(high_tf_ma,  color=color.yellow)
high_tf_trend = high_tf_ma > high_tf_ma[1] ? 1 : -1

// 3. Use pivots to identify reversals on the low timeframe
low_tf_pl = ta.pivotlow(high_src, pivot_l, pivot_r)
plot(low_tf_pl, style=plot.style_line, linewidth=3, color= color.green, offset=-pivot_r)

low_tf_ph = ta.pivothigh(high_src, pivot_l, pivot_r)
plot(low_tf_ph, style=plot.style_line, linewidth=3, color= color.red, offset=-pivot_r)

bool long = low_tf_pl and high_tf_trend == 1
bool short = low_tf_ph and high_tf_trend == -1

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
// Plots
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------

// this message is an alert that can be sent to a webhook, which allows for simple automation if you have a server that listens to alerts and trades programmatically.
enter_long_alert = '{"side": "Long", "order": "Enter", "price": ' + str.tostring(open) + ', "timestamp": ' + str.tostring(timenow) + '}'
exit_long_alert = '{"side": "Long", "order": "Exit", "price": ' + str.tostring(open) + ', "timestamp": ' + str.tostring(timenow) + '}'

if long
    strategy.entry(id="Long", direction=strategy.long, limit=open, alert_message=enter_long_alert)

if short
    strategy.close(id="Long", comment="Close Long", alert_message=exit_long_alert)