
Visão geral
A estratégia baseia-se na inclinação de uma média móvel simples (SMA) para identificar tendências ascendentes e abrir posições adicionais quando determinadas condições são atendidas. Ao mesmo tempo, é introduzido um mecanismo de tracking opcional de stop loss para proteger os lucros através do ajuste dinâmico do preço de stop loss. Além disso, a estratégia também estabelece condições de reentrada após o stop loss para evitar a reinstalação de posições quando o preço for muito alto.
Princípio da estratégia
- Calcular o SMA de um determinado período e julgar se a sua inclinação é maior do que o mínimo de inclinação para determinar a tendência ascendente.
- Quando a inclinação SMA é positiva e o preço atual é superior ao SMA, a estratégia de abrir uma posição é fazer mais.
- Se o tracking stop for ativado, o tracking stop será calculado com base no preço de mercado atual e na porcentagem de tracking stop indicada. O tracking stop será ajustado com o aumento do preço, protegendo os lucros.
- A estratégia de liquidação é usada quando o preço é abaixo do SMA ou quando o tracking stop é acionado.
- Após o desencadeamento de uma parada de perda, se o preço for superior ao SMA em uma porcentagem especificada, a estratégia não voltará a entrar em jogo, para evitar a compra quando o preço estiver muito alto.
Vantagens estratégicas
- Seguimento de tendências: Determine a tendência ascendente através da inclinação do SMA e capte as oportunidades de tendências de forma eficaz.
- Gerenciamento de riscos: a opção de tracking stop loss permite proteger os lucros de forma dinâmica e limitar as perdas potenciais.
- Disciplinar a reentrada: as condições de reentrada após a paralisação impedem a compra quando o preço é muito alto, garantindo a disciplina de negociação.
- Flexibilidade de parâmetros: oferece vários parâmetros ajustáveis, como comprimento SMA, mínima inclinação, percentual de stop loss de rastreamento, etc., que podem ser ajustados de acordo com diferentes mercados e estilos de negociação.
Risco estratégico
- Sensibilidade de parâmetros: a performance da estratégia é sensível à seleção de parâmetros, e configurações de parâmetros inadequadas podem levar a resultados sub-otimizados.
- Mercado de turbulência: Em condições de mercado de turbulência, a frequência de transações pode levar a custos elevados de transação e a perdas potenciais.
- Eventos inesperados: Eventos inesperados e oscilações anormais no mercado podem levar a falhas ou perdas inesperadas.
Direção de otimização da estratégia
- Optimização de parâmetros dinâmicos: introdução de mecanismos de adaptação, ajustando o comprimento do SMA, a mínima inclinação e outros parâmetros de acordo com a dinâmica da situação do mercado, para se adaptar a diferentes ambientes de mercado.
- Aumento do controle de risco: Combinação com outras técnicas de gestão de risco, como o ajustamento de posição baseado na volatilidade, o stop loss dinâmico, etc., para controlar ainda mais a abertura de risco.
- A estratégia de expansão para apoiar a negociação aéreas pode também ser lucrativa em uma tendência descendente.
- Confirmação de múltiplos quadros: combinação de sinais de múltiplos quadros, aumentando a confiabilidade e a robustez do julgamento de tendências.
Resumir
A estratégia utiliza mecanismos como o rastreamento de tendências SMA, o rastreamento de paradas e a reentrada disciplinar para controlar o risco enquanto se capta a tendência ascendente. A adaptabilidade e robustez da estratégia podem ser melhoradas ainda mais por meio de métodos como otimizar a configuração de parâmetros, aumentar o gerenciamento de risco, apoiar a negociação bidirecional e a confirmação de múltiplos prazos.
Código-fonte da estratégia
/*backtest
start: 2023-05-28 00:00:00
end: 2024-06-02 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("MA Incline Strategy with Optional Trailing Stop-Loss", overlay=true, calc_on_every_tick=true)
// Input parameters
windowSize = input.int(20, title="Window Size")
maLength = input.int(150, title="Moving Average Length")
minSlope = input.float(0.1, title="Minimum Slope")
useTrailingStop = input.bool(true, title="Use Trailing Stop-Loss")
trailingStopPercentage = input.float(2.8, title="Trailing Stop Percentage (%)") / 100
// Calculate the moving average
ma = ta.sma(close, maLength)
// Calculate the slope of the moving average over the window size
previousMa = ta.sma(close[windowSize], maLength)
slopeMa = (ma - previousMa) / windowSize
// Check conditions
isAboveMinSlope = slopeMa > minSlope
isAboveMa = close > ma
// Buy condition
buyCondition = isAboveMinSlope and isAboveMa
// Execute strategy
if (buyCondition and strategy.opentrades == 0)
strategy.entry("Long", strategy.long)
// Trailing stop-loss (optional)
if (strategy.opentrades == 1 and useTrailingStop and isAboveMa)
// Calculate the trailing stop price
trailPrice = close * (1 - trailingStopPercentage)
// Use the built-in strategy.exit function with the trailing stop
strategy.exit("Trail Stop", "Long", stop=trailPrice)
// Exit condition
sellCondition = ta.crossover(ma, close)
if (sellCondition and strategy.opentrades == 1)
strategy.close("Long")