O recurso está a ser carregado... Carregamento...

O valor da posição em risco deve ser calculado de acordo com o método de cálculo da posição em risco.

Autora:ChaoZhang, Data: 2024-11-29 16:10:35
Tags:MARSISMASLTS

img

Resumo

Esta estratégia é um sistema de negociação quantitativo que combina o cruzamento da média móvel com o índice de força relativa (RSI), integrado com uma função de stop loss de trail. A estratégia utiliza duas médias móveis - 9 períodos e 21 períodos - como indicadores de tendência primários, juntamente com o RSI para confirmação de sinais comerciais, e implementa paradas de trail dinâmicas para proteção de lucros e controle de riscos.

Princípios de estratégia

A lógica central da estratégia baseia-se nos seguintes elementos-chave:

  1. Identificação de tendências: reconhece mudanças na tendência do mercado através de cruzamento de médias móveis rápidas (9 períodos) e lentas (21-período).
  2. Confirmação do sinal: utiliza o RSI como um filtro de sinal, aumentando a confiabilidade do sinal comercial através de configurações de limiar do RSI.
  3. Controle de Risco: Emprega um stop loss de 1% de trailing, ajustando dinamicamente as posições de stop para proteger os lucros.
  4. Mecanismo de Stop Loss: Combina paradas fixas e de trailing, fechando automaticamente as posições quando as violações de preço atingem níveis percentuais pré-definidos a partir dos pontos de entrada ou atingem os níveis de trailing stop.

Vantagens da estratégia

  1. Verificação de sinal multidimensional: Melhora a precisão do sinal de negociação através da confirmação dupla do cruzamento MA e RSI.
  2. Gerenciamento de riscos abrangente: implementa paradas de trailings dinâmicas tanto para proteção de lucros como para controlo de riscos.
  3. Mecanismo de entrada flexível: capta de forma eficaz os pontos de virada do mercado através da combinação de indicadores de tendência e dinâmica.
  4. Alto nível de automação: uma lógica estratégica clara facilita a implementação de negociações automatizadas.
  5. Forte adaptabilidade: pode ser adaptada a diferentes ambientes de mercado através do ajuste de parâmetros.

Riscos estratégicos

  1. Risco de mercado lateral: pode gerar frequentes sinais falsos de ruptura em mercados de gama.
  2. Risco de deslizamento: perdas potenciais de deslizamento durante a execução da parada de atraso.
  3. Sensitividade dos parâmetros: o desempenho da estratégia afetado significativamente pelo período de MA e pelas definições do limiar do RSI.
  4. Risco sistémico: em condições de mercado extremas, as perdas de parada podem não ser executadas em tempo útil.

Orientações para a otimização da estratégia

  1. Reforço do sinal: considerar a incorporação de indicadores de volume como condições adicionais de confirmação.
  2. Refinamento de Stop Loss: Implementar mecanismos dinâmicos de ajustamento de stop loss baseados na volatilidade.
  3. Gestão de posições: adicionar um sistema dinâmico de dimensionamento de posições baseado na avaliação do risco.
  4. Adaptabilidade ao mercado: Incluir um mecanismo de reconhecimento do ambiente de mercado para diferentes parâmetros de configuração em diferentes estados de mercado.
  5. Filtragem de sinais: adicionar filtros de tempo para evitar a negociação durante os períodos de abertura e fechamento voláteis do mercado.

Resumo

Esta estratégia constrói um sistema de negociação que combina características de tendência e impulso através de indicadores clássicos de análise técnica. Seus principais pontos fortes estão em mecanismos de confirmação de sinal multidimensionais e sistemas abrangentes de gerenciamento de riscos. Através de otimização e melhoria contínua, a estratégia mostra promessa para manter um desempenho estável em diferentes ambientes de mercado. Os traders são aconselhados a realizar um backtesting completo antes da implementação ao vivo e ajustar os parâmetros de acordo com as características específicas do instrumento de negociação.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("ojha's Intraday MA Crossover + RSI Strategy with Trailing Stop", overlay=true)

// Define Moving Averages
fastLength = 9
slowLength = 21
fastMA = ta.sma(close, fastLength)
slowMA = ta.sma(close, slowLength)

// Define RSI
rsiPeriod = 14
rsiValue = ta.rsi(close, rsiPeriod)

// Define Conditions for Long and Short
longCondition = ta.crossover(fastMA, slowMA) and rsiValue > 55
shortCondition = ta.crossunder(fastMA, slowMA) and rsiValue < 45

// Define the trailing stop distance (e.g., 1% trailing stop)
trailingStopPercent = 1.0

// Variables to store the entry candle high and low
var float longEntryLow = na
var float shortEntryHigh = na

// Variables for trailing stop levels
var float longTrailingStop = na
var float shortTrailingStop = na

// Exit conditions
exitLongCondition = rsiValue > 80
exitShortCondition = rsiValue < 22

// Stop-loss conditions (price drops below long entry candle low * 1% or exceeds short entry candle high * 1%)
longStopLoss = longEntryLow > 0 and close < longEntryLow * 0.99
shortStopLoss = shortEntryHigh > 0 and close > shortEntryHigh * 1.01

// Execute Buy Order and store the entry candle low for long stop-loss
if (longCondition)
    strategy.entry("Long", strategy.long)
    longEntryLow := low  // Store the low of the candle where long entry happened
    longTrailingStop := close * (1 - trailingStopPercent / 100)  // Initialize trailing stop at entry

// Execute Sell Order and store the entry candle high for short stop-loss
if (shortCondition)
    strategy.entry("Short", strategy.short)
    shortEntryHigh := high  // Store the high of the candle where short entry happened
    shortTrailingStop := close * (1 + trailingStopPercent / 100)  // Initialize trailing stop at entry

// Update trailing stop for long position
if (strategy.opentrades > 0 and strategy.position_size > 0)
    longTrailingStop := math.max(longTrailingStop, close * (1 - trailingStopPercent / 100))  // Update trailing stop as price moves up

// Update trailing stop for short position
if (strategy.opentrades > 0 and strategy.position_size < 0)
    shortTrailingStop := math.min(shortTrailingStop, close * (1 + trailingStopPercent / 100))  // Update trailing stop as price moves down

// Exit Buy Position when RSI is above 80, Stop-Loss triggers, or trailing stop is hit
if (exitLongCondition or longStopLoss or close < longTrailingStop)
    strategy.close("Long")
    longEntryLow := na  // Reset the entry low after the long position is closed
    longTrailingStop := na  // Reset the trailing stop

// Exit Sell Position when RSI is below 22, Stop-Loss triggers, or trailing stop is hit
if (exitShortCondition or shortStopLoss or close > shortTrailingStop)
    strategy.close("Short")
    shortEntryHigh := na  // Reset the entry high after the short position is closed
    shortTrailingStop := na  // Reset the trailing stop

// Plot Moving Averages on the Chart
plot(fastMA, color=color.green, title="9-period MA")
plot(slowMA, color=color.red, title="21-period MA")

// Plot RSI on a separate panel
rsiPlot = plot(rsiValue, color=color.blue, title="RSI")
hline(50, "RSI 50", color=color.gray)
hline(80, "RSI 80", color=color.red)
hline(22, "RSI 22", color=color.green)

// Plot Trailing Stop for Visualization
plot(longTrailingStop, title="Long Trailing Stop", color=color.red, linewidth=1, style=plot.style_line)
plot(shortTrailingStop, title="Short Trailing Stop", color=color.green, linewidth=1, style=plot.style_line)


Relacionados

Mais.