Uma estratégia quantitativa que combina reversão média e acompanhamento de tendências


Data de criação: 2023-09-14 20:45:20 última modificação: 2023-09-14 20:45:20
cópia: 0 Cliques: 1109
1
focar em
1617
Seguidores

Este artigo descreve em detalhes uma estratégia de negociação quantitativa que utiliza a regressão de média e a técnica de acompanhamento de tendências. A estratégia visa a negociação inversa em condições de tendência e a negociação simultânea de tendências de seguimento.

Princípios estratégicos

A estratégia gera sinais de negociação principalmente através de médias móveis simples e indicadores RSI:

  1. Quando o preço está abaixo da média móvel de 200 ciclos, é considerado que está em fase descendente;

  2. Quando o RSI está abaixo de 20, execute uma retracção do valor médio em contraposição;

  3. Quando o preço está acima da média móvel de 200 ciclos, é considerado que está em fase de alta;

  4. Quando os preços atravessam a média móvel, execute uma operação de acompanhamento de tendência em movimento.

  5. A condição de parada é o RSI acima de 80 ou o preço abaixo da média móvel por uma certa amplitude.

  6. Posições de negociação com retorno de valor médio e seguimento de tendência podem ser configuradas separadamente.

A estratégia utiliza a regressão de média e a técnica de acompanhamento de tendências para realizar as operações apropriadas em diferentes fases.

A vantagem estratégica

A estratégia tem as seguintes vantagens:

  1. A combinação de duas técnicas diferentes pode aumentar a adaptabilidade da estratégia.

  2. O mercado de ações é um mercado de ações, onde as oportunidades de negociação podem ser encontradas em mercados de tendência e de turbulência.

  3. O risco pode ser controlado em diferentes modalidades através de ajustes de posição.

  4. A configuração dos parâmetros é simples e fácil de implementar.

C. Riscos potenciais

Mas a estratégia também traz os seguintes riscos:

  1. Indicadores como as médias móveis e o RSI são vulneráveis a falsas rupturas;

  2. A transição entre os dois tipos de transação pode estar atrasada;

  3. Os benefícios a longo prazo são obtidos através de uma certa retirada.

Quatro conteúdos, resumo

Este artigo detalha uma estratégia de negociação quantitativa que utiliza a regressão do valor médio e a tecnologia de acompanhamento de tendências. A estratégia pode ser negociada em diferentes fases do mercado, aumentando a adaptabilidade. Mas também precisa evitar o risco de falhas de indicadores e atrasos de mudança de modelo.

Código-fonte da estratégia
/*backtest
start: 2022-09-07 00:00:00
end: 2023-04-05 00:00:00
period: 1d
basePeriod: 1h
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/
// © I11L

//@version=5
strategy("Mean Reversion and Trendfollowing", overlay=true, pyramiding=1, default_qty_value=100000, initial_capital=100000, default_qty_type=strategy.cash, process_orders_on_close=false, calc_on_every_tick=false)

// Input for the starting date
start_date = input(timestamp("1 Feb 2000 12:00"), title="Starting Date")
enableMeanReversion = input.bool(true)
enableTrendfollowing = input.bool(true)
trendPositionFactor = input.float(1)
meanReversionPositionFactor = input.float(0.5)

// Convert the input string to a timestamp
start_ts = timestamp(year(start_date), month(start_date), dayofmonth(start_date), 0, 0)

// Check if the current bar's time is greater than or equal to the start timestamp
start_condition = time >= start_ts

var tradeOrigin = ""

sma200 = ta.sma(close,200)
rsi2 = ta.rsi(close,2)

isMeanReversionMode = close < sma200 or not(enableTrendfollowing)
isTrendfollowingMode = close > sma200 or not(enableMeanReversion)

isRsiBuy = rsi2 < 20 and enableMeanReversion
isRsiClose = rsi2 > 80 and enableMeanReversion

isSmaBuy = close > sma200 and enableTrendfollowing
isSmaClose = close < sma200 * 0.95 and enableTrendfollowing

isBuy = (isMeanReversionMode and isRsiBuy) or (isTrendfollowingMode and isSmaBuy)

positionSizeFactor = isSmaBuy ? trendPositionFactor : meanReversionPositionFactor

// Only execute the strategy after the starting date
if (start_condition)
    if (isBuy and strategy.opentrades == 0)
        tradeOrigin := isSmaBuy ? "SMA" : "RSI"
        strategy.entry("My Long Entry Id", strategy.long, qty=(strategy.equity / close) * positionSizeFactor, comment=str.tostring(positionSizeFactor))
    isClose = tradeOrigin == "SMA" ? isSmaClose : isRsiClose
    if (isClose)
        strategy.exit("Exit", limit = close)

plot(sma200)
plot(sma200 * 0.95, color=color.orange)