Stratégie croisée zéro différence moyenne mobile

Auteur:ChaoZhang est là., Date: 2024-01-26 15h45:03
Les étiquettes:

img

Résumé

Principe de stratégie

  1. Calculer la différence entre le prix et la moyenne mobile actuelle
  2. Lorsque le diff est inférieur à 0, c'est un signal baissier. Lorsque le diff dépasse 0, c'est un signal de divergence inférieure, indiquant une hausse.
  3. Combinez la valeur numérique de diff pour comparer la baisse maximale au cours de la dernière semaine pour générer des signaux de trading

Analyse des avantages

  1. L'utilisation du système de moyenne mobile double peut filtrer efficacement les fausses percées
  2. Appliquer la théorie du prix minimum pour détecter les signaux de bas
  3. Comparaison numérique pour juger des conditions de survente et de surachat, en évitant de poursuivre les hauts et de tuer les bas

Analyse des risques

  1. Les stratégies de moyenne mobile doubles sont sujettes aux effets de la scie
  2. Un réglage raisonnable des paramètres des moyennes mobiles est essentiel

Directions d'optimisation

  1. Ajustez les paramètres de la moyenne mobile pour s'adapter aux différents cycles
  2. Combiner l'indicateur stochastique pour éviter les conditions de survente et de surachat

Résumé


/*backtest
start: 2023-01-19 00:00:00
end: 2024-01-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title = "Estratégia diferença menor preço de 8")

// Configuração da Média Móvel
emaPeriod = 8

ema= ema(close, emaPeriod)
ema1= ema(close[1], emaPeriod)
lowestEMA = lowest(ema, 8)

// Calcula a diferença entre o preço e a média móvel
diff = close - ema
diff1 = close[1] - ema1
diffLow = ema - lowestEMA

//Condições
diffZero = diff < 0
diffUnder = diff < diffLow
diffUm = diff > 0
Low0 = diffLow == 0




// Sinais de entrada
buy_signal = diffUnder and crossover(diff, diff1) 
sell_signal = diffUm and diffUnder and crossunder(diff, diff1)

// Executa as operações de compra/venda
if buy_signal
    strategy.entry("Buy", strategy.long)
if sell_signal
    strategy.exit("Buy")

// Plota as linhas
plot(0, title="Linha Zero", color=color.gray)
plot(diff, title="Diferença", color=color.blue, linewidth=2)

plot(diffLow, title="Diferença", color=color.red, linewidth=2)


Plus de