Este artigo explica em detalhes uma estratégia de negociação quantitativa que combina a reversão média e as técnicas de tendência.
I. Lógica da estratégia
A estratégia usa principalmente a média móvel simples e o indicador RSI para gerar sinais de negociação:
Quando o preço está abaixo da SMA de 200 períodos, julga o mercado atual como tendência de queda.
Quando o RSI está abaixo de 20, é preciso uma reversão da média da tendência.
Quando o preço está acima da SMA de 200 períodos, julga o mercado atual como tendência de alta.
Quando o preço cruza acima da SMA, é preciso seguir a tendência.
As saídas são desencadeadas quando o RSI excede 80 ou o preço cai abaixo da SMA em uma certa porcentagem.
O dimensionamento das posições para a reversão média e para a tendência pode ser ajustado separadamente.
A estratégia combina técnicas de reversão média e de tendência e aplica-as em diferentes fases do mercado.
II. Vantagens da Estratégia
As principais vantagens são:
A combinação de duas técnicas melhora a adaptabilidade da estratégia.
Pode encontrar oportunidades de negociação em tendências e mercados variados.
Os riscos podem ser controlados ajustando o tamanho das posições.
Configurações de parâmetros simples facilitam a sua implementação.
III. Riscos potenciais
No entanto, os riscos são:
Indicadores como SMA e RSI são suscetíveis a falhas.
A comutação entre dois modos pode ter atrasos.
Certas reduções têm de ser suportadas para obter ganhos a longo prazo.
IV. Resumo
Em resumo, este artigo explicou uma estratégia quantitativa utilizando técnicas de reversão média e tendência. Pode negociar em diferentes estágios do mercado para melhorar a adaptabilidade. Mas riscos como falha do indicador e mudança de modo atrasada precisam ser gerenciados.
/*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)