Estratégia de adição de posição dinâmica com base no RSI


Data de criação: 2024-02-06 09:44:05 última modificação: 2024-02-06 09:44:05
cópia: 1 Cliques: 727
1
focar em
1617
Seguidores

Estratégia de adição de posição dinâmica com base no RSI

Visão geral

A estratégia combina o índice de força relativa (RSI) e o princípio da posição de Martingale. Quando o RSI está abaixo da linha de superaquecimento, a primeira compra é feita e a posição é aberta; depois, se o preço continuar a cair, a posição será aumentada em um índice de 2 para obter um limite de lucro.

Princípio da estratégia

  1. Usando o indicador RSI para determinar o mercado de superalimento, o RSI foi definido como 14, o limite de superalimento foi definido como 30.
  2. Quando o RSI é < 30, a primeira posição é feita com 5% do equity da conta.
  3. Se o preço cair 0,5% em relação ao preço de entrada inicial, faça mais uma posição de 2 vezes; se o preço continuar a cair, faça outra posição de 4 vezes.
  4. Cada aumento de 0,5% é compensado com um stop-loss de receita.
  5. Repetir os passos acima para fazer um ciclo de transações.

Análise de vantagens

  • O RSI pode ser usado para avaliar os pontos de superalimento do mercado e abrir posições em pontos relativamente baixos.
  • A adição de Martingale pode fazer com que o preço médio de abertura fique mais baixo.
  • Uma pequena paralisação pode gerar um lucro sustentável.
  • Aplica-se a transações em dinheiro com moedas de alto valor de mercado, com risco controlado.

Análise de Riscos

  • Se a tendência de baixa for prolongada, a perda de posições pode aumentar ainda mais.
  • Não há parâmetros de perda, não há limites de perda máxima.
  • O excesso de acumulação de ativos também aumenta os prejuízos.
  • O risco de uma queda contínua continua a ser grande para quem negocia em várias direções.

Otimização de Estratégia

  1. Pode-se definir um ponto de parada para limitar a perda máxima.
  2. Optimizar os parâmetros do RSI para encontrar os melhores sinais de venda e compra.
  3. Pode-se estabelecer um limite razoável para a taxa de flutuação de uma determinada moeda.
  4. Pode-se definir a margem de aumento de risco com base no total de ativos ou na proporção de posições individuais.

Resumir

A estratégia combina o indicador RSI e a teoria da posição de Martingale, fazendo uma posição apropriada quando se decide sobre o ponto de venda, para obter lucro com uma pequena parada. Pode obter ganhos estáveis e duradouros, mas também existe um certo risco. Pode ser otimizado ainda mais através da configuração de stop loss, ajuste de parâmetros, etc.

Código-fonte da estratégia
/*backtest
start: 2024-01-06 00:00:00
end: 2024-02-05 00:00:00
period: 1h
basePeriod: 15m
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/
// © Stavolt

//@version=5
strategy("RSI Martingale Strategy", overlay=true, default_qty_type=strategy.cash, currency=currency.USD)

// Inputs
rsiLength = input(14, title="RSI Length")
oversoldThreshold = input(30, title="Oversold Threshold") // Keeping RSI threshold
profitTargetPercent = input(0.5, title="Profit Target (%)") / 100
initialInvestmentPercent = input(5, title="Initial Investment % of Equity")

// Calculating RSI
rsiValue = ta.rsi(close, rsiLength)

// State variables for tracking the initial entry
var float initialEntryPrice = na
var int multiplier = 1

// Entry condition based on RSI
if (rsiValue < oversoldThreshold and na(initialEntryPrice))
    initialEntryPrice := close
    strategy.entry("Initial Buy", strategy.long, qty=(strategy.equity * initialInvestmentPercent / 100) / close)
    multiplier := 1

// Adjusting for errors and simplifying the Martingale logic
// Note: This section simplifies the aggressive position size adjustments without loops
if (not na(initialEntryPrice))
    if (close < initialEntryPrice * 0.995) // 0.5% drop from initial entry
        strategy.entry("Martingale Buy 1", strategy.long, qty=((strategy.equity * initialInvestmentPercent / 100) / close) * 2)
        multiplier := 2 // Adjusting multiplier for the next potential entry

    if (close < initialEntryPrice * 0.990) // Further drop
        strategy.entry("Martingale Buy 2", strategy.long, qty=((strategy.equity * initialInvestmentPercent / 100) / close) * 4)
        multiplier := 4

    // Additional conditional entries could follow the same pattern

// Checking for profit target to close positions
if (strategy.position_size > 0 and (close - strategy.position_avg_price) / strategy.position_avg_price >= profitTargetPercent)
    strategy.close_all(comment="Take Profit")
    initialEntryPrice := na // Reset for next cycle