Estratégia de stop loss e buy stop direcional de baixa volatilidade


Data de criação: 2023-12-18 12:00:07 última modificação: 2023-12-18 12:00:07
cópia: 1 Cliques: 573
1
focar em
1621
Seguidores

Estratégia de stop loss e buy stop direcional de baixa volatilidade

Visão geral

Esta estratégia é chamada de estratégia de stop-loss de compra orientada para baixa volatilidade. Ela usa o cruzamento da média móvel como sinal de compra, combinado com o stop-loss para bloquear o lucro, e aplica-se a moedas em intervalos de baixa volatilidade.

Princípio da estratégia

A estratégia usa três médias móveis de diferentes períodos: 50 períodos, 100 períodos e 200 períodos. A lógica de compra é: quando 50 períodos atravessam 100 períodos e 200 períodos atravessam 100 períodos, faça mais entrada.

Este sinal indica que o mercado está saindo da zona de baixa volatilidade e começando a entrar em uma tendência. Um aumento rápido de 50 ciclos representa um aumento súbito de forças internas de curto prazo e começa a conduzir a linha média longa para cima; A linha de 100 ciclos também começa a subir, indicando que forças de médio prazo se juntam e estabilizam a tendência.

Após a entrada, a estratégia usa o modo de parada de parada para bloquear o lucro. O objetivo de parada é de 8% do preço de entrada e a linha de parada é de 4% do preço de entrada. A configuração do stop-loss é maior do que a parada, favorecendo o lucro sobre os prejuízos e garantindo a lucratividade geral da estratégia.

Análise de vantagens

A estratégia tem as seguintes vantagens:

  1. A partir de agora, os analistas podem identificar e avaliar as oportunidades de ruptura de tendências em zonas de baixa volatilidade.
  2. As médias móveis são fáceis de calcular e retroceder, e a lógica é simples e clara.
  3. A configuração de stop-loss é razoável e favorece a obtenção de ganhos estáveis.
  4. Parâmetros configuráveis são flexíveis e fáceis de otimizar.

Análise de Riscos

A estratégia também apresenta alguns riscos:

  1. Um sinal de ruptura errada pode causar prejuízos.
  2. O mercado está em uma reviravolta e não há como parar.
  3. A configuração inadequada do parâmetro Stop Loss pode afetar o lucro.

Resposta:

  1. Em combinação com outros indicadores, os sinais de filtragem garantem a eficácia da ruptura.
  2. Reduzir adequadamente o ciclo de stop loss para reduzir os prejuízos causados pela reversão.
  3. Teste diferentes proporções de stop loss para encontrar o parâmetro ideal.

Direção de otimização

A estratégia pode ser melhorada em:

  1. Teste diferentes parâmetros de média móvel para encontrar a melhor combinação.
  2. Adição de indicadores como volume de transações para confirmar a ruptura da tendência.
  3. Ajuste dinâmico da amplitude de perda de parada.
  4. Combinação de métodos de aprendizagem de máquina para prever a taxa de sucesso de uma ruptura.
  5. Ajuste de parâmetros para diferentes condições de mercado e moedas.

Resumindo, a estratégia opera de forma clara, com uma lógica de baixo risco, e pode ser aplicada de forma flexível para a quantificação de transações. A estratégia pode ser posteriormente otimizada em termos de sinais de entrada, de modo de parar, etc., e ajustar os parâmetros para obter o melhor efeito.

Código-fonte da estratégia
/*backtest
start: 2023-12-10 00:00:00
end: 2023-12-17 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(shorttitle='Low volatility Buy w/ TP & SL (by Coinrule)',title='Low volatility Buy w/ TP & SL', overlay=true, initial_capital = 1000, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 10,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2019, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false       // create function "within window of time"

//MA inputs and calculations
movingaverage_fast = sma(close, input(50))
movingaverage_slow = sma(close, input(200))
movingaverage_normal= sma(close, input(100))



//Entry 
strategy.entry(id="long", long = true, when = movingaverage_slow > movingaverage_normal and movingaverage_fast > movingaverage_normal)

//Exit
longStopPrice  = strategy.position_avg_price * (1 - 0.04)
longTakeProfit = strategy.position_avg_price * (1 + 0.08)

strategy.close("long", when = close < longStopPrice or close > longTakeProfit and window())

//PLOT

plot(movingaverage_fast, color=color.orange, linewidth=2)
plot(movingaverage_slow, color=color.purple, linewidth=3)
plot(movingaverage_normal, color=color.blue, linewidth=2)