Estratégia de negociação de desvio de volatilidade SMA


Data de criação: 2023-12-19 10:52:10 última modificação: 2023-12-19 10:52:10
cópia: 1 Cliques: 786
1
focar em
1621
Seguidores

Estratégia de negociação de desvio de volatilidade SMA

Estratégia de negociação de desvio de volatilidade SMA

Visão geral da estratégia

A estratégia usa uma média móvel simples e alguns cálculos matemáticos para determinar o ponto de compra/venda. Usamos a SMA de 100 dias como linha de referência. Se o preço de fechamento estiver abaixo da linha, escolhemos o ponto de abertura de acordo com o grau de baixa da linha, este valor (<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Princípio da estratégia

A estratégia usa três linhas SMA: linha rápida (default 14 dias), linha lenta (default 100 dias) e linha de referência (default 30 dias).

Quando o preço de fechamento está abaixo da linha de referência e o desvio baixo da linha lenta é maior do que o desvio baixo da configuração, e a linha rápida sobe e a linha lenta desce, entre em polinomios. Quando essas condições são satisfeitas, a linha rápida e a linha lenta têm uma grande probabilidade de se cruzar, sendo, portanto, um bom ponto de entrada.

Quando o preço de fechamento está acima da linha de referência e o desvio alto da linha lenta é maior do que o desvio alto da configuração, e o preço de fechamento aumentou em 3 linhas K consecutivas, realizando lucro, e a linha rápida está acima da linha lenta, o posicionamento é simples. Se o preço continuar a subir, o tracking stop loss será iniciado.

A posição de cada transação entra de acordo com uma certa proporção de direitos e interesses, controlando assim a posição.

Análise de vantagens estratégicas

  1. Aproveite o SMA para suavizar a curva de preços e filtrar o ruído do mercado.
  2. O SMA cruzado possui uma certa capacidade de previsão de tendências.
  3. O deslocamento de configuração em relação à linha SMA evita falsas rupturas.
  4. Combinação de tendências e indicadores cruzados para melhorar a precisão da tomada de decisão.
  5. A utilização de tracking de stop loss para bloquear o lucro e evitar a retirada.

Análise de risco estratégico

  1. O SMA é um forte atraso em si e pode ter perdido o ponto de viragem.
  2. A configuração errada do deslocamento pode levar a excessos radicais ou excessiva cautela.
  3. A configuração inadequada dos parâmetros de stop loss pode traçar um stop loss prematuro ou muito grande.
  4. O mercado não consegue lidar com a forte volatilidade dos preços.

Correspondência de melhorias:

  1. Filtragem de entrada em combinação com outros indicadores de antecedência.
  2. Optimização de testes repetitivos de desvio.
  3. Os parâmetros de estenose são testados repetidamente para encontrar o parâmetro ideal.
  4. Baixar posições em períodos de alta volatilidade.

Direção de otimização da estratégia

  1. Teste de SMAs de diferentes períodos para encontrar o parâmetro ideal
  2. Adição de outros indicadores para determinar a estrutura e tendências do mercado
  3. Optimizar o rastreamento de parâmetros de stop loss para bloquear mais lucros
  4. Ajustar posições de acordo com a volatilidade do mercado
  5. Aplicação simultânea em várias variedades e combinações

Resumir

A estratégia de negociação de desvio de movimentos de SMA procura o melhor momento de entrada, definindo os desvios com referência a diferentes médias de SMA. Ao mesmo tempo, o mecanismo de saída define um tracking stop loss para bloquear os ganhos. A estratégia é simples de entender e fácil de implementar.

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

// @version=4
// Author: Sonny Parlin (highschool dropout)
strategy(shorttitle="SMA+Strategy", title="SMA Offset Strategy",
                                      overlay=true,  currency=currency.USD,
                                      initial_capital=10000)

// Inputs and variables
ss = input(14, minval=10, maxval=50, title="SMA Fast (days)")
ff = input(100, minval=55, maxval=200, title="SMA Slow (days)")
ref = input(30, minval=20, maxval=50, title="SMA Reference (days)")
lowOffset = input(0.001, "Low Offset (%)", minval=0, step=0.001)
highOffset = input(0.0164, "High Offset (%)", minval=0, step=0.0001)
orderStake = input(0.96, "Order Stake (%)", minval=0, step=0.01)

// SMA
smaFast = sma(close, ss)
smaSlow = sma(close, ff)
smaRef = sma(close, ref)
distanceLow = (close - smaSlow) / close
distanceHigh = (close - smaSlow) / close

// Set up SMA plot but don't show by default
plot(smaFast, "smaFast", color=#00ff00, display = 0)
plot(smaSlow, "smaSlow", color=#ff0000, display = 0)
plot(smaRef, "smaRef", color=#ffffff, display = 0)

// The buy stratey:
// guard that the low is under our sma low reference line by our lowOffset %, 
// default is 0.001. (low < smaRef) and (distanceLow > lowOffset)
// SMA fast is on the rise and SMA slow is falling and they are very likely
// to cross. (rising(smaFast,1)) and (falling(smaSlow, 1)) 
enterLong = (low < smaRef) and (distanceLow > lowOffset) and (rising(smaFast,1)) and (falling(smaSlow, 1)) 

// The sell Strategy:
// Guard that close is higher than our sma high reference line by our 
// highOffset %, default is 0.0164. (close > smaRef) and (distanceHigh > highOffset)
// Guard that close has risen by 3 candles in a row (rising(close,3)) 
// Guard that we currently have profit (strategy.openprofit > 0)
// Guard that SMA fast is higher than smaSlow (smaFast > smaSlow)
// If it keeps going up past our close position the trailing stoploss will kick in!
enterShort = (close > smaRef) and (distanceHigh > highOffset) and (rising(close,3)) and (strategy.openprofit > 0) and (smaFast > smaSlow)

// Order size is based on total equity
// Example 1:
// startingEquity = 2000
// close = 47434.93
// orderStake = 0.45
// (2,000 × orderStake) / close = orderSize = 0.0189733599 = approx $900

// Example 2:
// startingEquity = 2000
// close = 1.272
// orderStake = 0.45
// (startingEquity × orderStake) / close = orderSize = 707.5471698113 = approx $900
orderSize = (strategy.equity * orderStake) / close

// Trailing Stoploss
// I'm using 1.35 as my default value, play with this for different results.
longTrailPerc = input(title="Trailing Stoploss (%)",
     type=input.float, minval=0.0, step=0.1, defval=1.35) * 0.01
     
longStopPrice = 0.0

longStopPrice := if (strategy.position_size > 0)
    stopValue = close * (1 - longTrailPerc)
    max(stopValue, longStopPrice[1])
else
    0

if (enterLong)
    strategy.entry("Open Long Position", strategy.long, orderSize, when=strategy.position_size <= 0)
    
if (enterShort)
    strategy.exit(id="Close Long Position", stop=longStopPrice)


//plot(strategy.equity)