Estratégia de negociação de crossover de média móvel de momentum Sakkoulas


Data de criação: 2024-02-21 15:14:19 última modificação: 2024-02-21 15:14:19
cópia: 0 Cliques: 553
1
focar em
1617
Seguidores

Estratégia de negociação de crossover de média móvel de momentum Sakkoulas

Visão geral

Esta estratégia de negociação combina vários indicadores técnicos, tais como cruzamentos de médias móveis (MACD), indicadores de força relativa (RSI), médias móveis simples (SMA), indicadores aleatórios (Stochastic) e bandas de Bollinger (Bollinger Bands), para identificar os pontos de entrada e saída do mercado. Faça mais quando o indicador mostra um sinal de múltiplos cabeças; Faça o que está em branco quando o indicador mostra um sinal de cabeças vazias.

Princípio da estratégia

Faça mais quando a linha DIF do MACD atravessa a linha DEA e entra em um estado múltiplo; ou quando o RSI é inferior a 30 e entra em um estado de sobrevenda; ou quando a linha% K e a linha% D do indicador aleatório são inferiores a 20 e entram em um estado de sobrevenda.

Em vez disso, quando a linha DIF do MACD atravessa a linha DEA e entra em um estado de vazio; ou quando o RSI é superior a 70 e entra em um estado de sobrecompra; ou quando a linha% K e a linha% D do indicador aleatório são superiores a 80 e entram em um estado de sobrecompra.

O stop loss é definido por um fator de multiplicação do ATR, e o stop loss é definido por uma taxa de retorno de risco.

Análise de vantagens

A estratégia combina vários indicadores para avaliar o estado do mercado, evitando a probabilidade de erros de avaliação de um único indicador, aumentando a precisão da decisão. Ao mesmo tempo, o risco de um único negócio é controlado de forma racional e eficaz com a configuração de stop loss e stop loss.

Análise de Riscos

Os indicadores técnicos são calculados com base em dados históricos, não podem prever os preços futuros e existem alguns atrasos. O uso de vários indicadores em combinação também pode apresentar alguns sinais falsos. Além disso, a configuração inadequada do ponto de parada também pode levar a maiores perdas.

Para problemas de atraso em indicadores técnicos, os parâmetros podem ser adequadamente ajustados, reduzindo o ciclo de cálculo. Para sinais falsos, outros indicadores auxiliares de julgamento podem ser adicionados para confirmação. Além disso, o ponto de parada deve ser configurado de forma mais relaxada e razoável.

Direção de otimização

A estratégia pode ser melhorada em alguns aspectos:

  1. Aumentar os indicadores de modelos estatísticos, combinados com tendências e julgamentos de correlação;
  2. Aumentar a confiabilidade de modelos de aprendizado de máquina para julgar sinais de indicadores;
  3. Otimizar a gestão de fundos para tornar o stop loss mais automático e inteligente.

Resumir

Esta estratégia, combinada com vários indicadores técnicos, pode aumentar efetivamente a precisão da tomada de decisão, e é uma estratégia de acompanhamento de tendências confiável através do controle do risco de stop loss. A introdução de métodos como estatística e aprendizagem de máquina, em seguida, espera-se que a estratégia de desempenho seja ainda mais aprimorada.

Código-fonte da estratégia
/*backtest
start: 2024-01-21 00:00:00
end: 2024-02-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Enhanced Moving Average Crossover sakkoulas with ATR and SAR", overlay=true)

// Παράμετροι MACD
fastLength = input.int(16, title="Fast Length")
slowLength = input.int(6, title="Slow Length")
signalSmoothing = input.int(5, title="Signal Smoothing")

// Παράμετροι RSI
rsiLength = input.int(6, title="RSI Length")
upperBound = input.int(70, title="Upper Bound")
lowerBound = input.int(30, title="Lower Bound")

// Παράμετροι SMA
smaPeriod = input.int(10, title="SMA Period")

// Παράμετροι Stochastic
stoLength = input.int(5, title="Stochastic Length")
stoSmoothK = input.int(3, title="Stochastic %K Smoothing")
stoSmoothD = input.int(10, title="Stochastic %D Smoothing")

// Παράμετροι Bollinger Bands
bbLength = input.int(20, title="Bollinger Bands Length")
bbStdDev = input.float(1, title="Bollinger Bands StdDev")

// Παράμετροι ATR
atrLength = input.int(14, title="ATR Length")
atrMultiplier = input.float(1.5, title="ATR Multiplier for Stop Loss")

// Παράμετροι Parabolic SAR
sarAcceleration = input.float(0.02, title="SAR Acceleration")
sarMaximum = input.float(0.2, title="SAR Maximum")

// Διαχείριση κινδύνου
riskRewardRatio = input.float(2.0, title="Risk/Reward Ratio")

// Υπολογισμοί δεικτών
[macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalSmoothing)
rsi = ta.rsi(close, rsiLength)
sma = ta.sma(close, smaPeriod)
atr = ta.atr(atrLength)

// Παράμετροι και κλήση του Parabolic SAR
sar = ta.sar(sarAcceleration, sarMaximum, 15) // Διορθωμένη κ
// Υπολογισμός Stop Loss με βάση το ATR
longStopLoss = close - atrMultiplier * atr 
shortStopLoss = close + atrMultiplier * atr

// Συνθήκες για είσοδο και έξοδο
longCondition = ta.crossover(macdLine, signalLine) and close > sar
shortCondition = ta.crossunder(macdLine, signalLine) and close < sar

// Εκτέλεση εντολών συναλλαγής με διαχείριση κινδύνου
if (longCondition)
    strategy.entry("Long Position", strategy.long)
    strategy.exit("Exit Long", "Long Position", stop=longStopLoss)
    
if (shortCondition)
    strategy.entry("Short Position", strategy.short)
    strategy.exit("Exit Short", "Short Position", stop=shortStopLoss)

// Συνθήκες για είσοδο και έξοδο
 
// Εμφάνιση βελών για σημεία εισόδου
plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small, title="Long Entry")
plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small, title="Short Entry")


// Εμφάνιση δεικτών
plot(macdLine, color=color.blue, title="MACD Line")
plot(signalLine, color=color.red, title="Signal Line")
plot(sma, color=color.orange, title="SMA")
plot(series=sar, color=color.fuchsia, style=plot.style_circles, title="Parabolic SAR")
hline(upperBound, "Upper Bound", color=color.red)
hline(lowerBound, "Lower Bound", color=color.green)