Stratégie de trading basée sur les écarts de volatilité SMA


Date de création: 2023-12-19 10:52:10 Dernière modification: 2023-12-19 10:52:10
Copier: 1 Nombre de clics: 786
1
Suivre
1621
Abonnés

Stratégie de trading basée sur les écarts de volatilité SMA

Stratégie de trading basée sur les écarts de volatilité SMA

Aperçu de la stratégie

La stratégie utilise une moyenne mobile simple et quelques calculs mathématiques pour déterminer le point d’achat/vente. Nous utilisons le SMA de 100 jours comme ligne de référence. Si le prix de clôture est inférieur à cette ligne, nous choisissons le point d’ouverture en fonction de la valeur inférieure à cette ligne, cette valeur (le “ faible décalage “) est un pourcentage configurable.

Principe de stratégie

La stratégie utilise trois lignes SMA: la ligne rapide ((14 jours par défaut), la ligne lente ((100 jours par défaut) et la ligne de référence ((30 jours par défaut).

Lorsque le prix de clôture est inférieur à la ligne de référence et que le bas décalage de la ligne lente par rapport à la ligne lente est supérieur au bas décalage de la configuration, et que la ligne rapide monte et la ligne lente descend, entrez dans le polygone. Lorsque ces conditions sont remplies, il est très probable que les lignes rapide et lente se croisent, donc un bon point d’entrée.

Lorsque le prix de clôture est supérieur à la ligne de référence et que le décalage élevé de la ligne lente par rapport au décalage élevé de la configuration, et que le prix de clôture a augmenté de 3 lignes K consécutives, a réalisé un profit, et que la ligne rapide est supérieure à la ligne lente, la position est plus simple. Si le prix continue à augmenter, le suivi du stop loss sera lancé.

Les positions de chaque transaction entrent en fonction d’un certain pourcentage de droits et intérêts, ce qui permet de contrôler la position.

Analyse des forces stratégiques

  1. Utiliser les avantages des SMA pour aplanir la courbe des prix et filtrer le bruit du marché.
  2. Le croisement SMA a une certaine capacité de prévision de la tendance.
  3. Le décalage par rapport à la ligne SMA est réglé pour éviter les fausses ruptures.
  4. L’accroissement de l’exactitude des décisions, combiné à des tendances et à des indicateurs croisés.
  5. Le suivi des pertes est utilisé pour bloquer les bénéfices et éviter les retraits.

Analyse stratégique des risques

  1. Le SMA est lui-même très rétrograde et risque de manquer un point de basculement.
  2. Un mauvais réglage de la déviation peut conduire à l’exagération ou à la prudence.
  3. Les paramètres de suivi de stop-loss sont mal réglés, ce qui peut entraîner un stop-loss prématuré ou excessif.
  4. Le marché est trop volatile pour être géré.

Les mesures d’optimisation correspondantes:

  1. En combinaison avec d’autres indicateurs précédents, le filtrage de l’admission.
  2. Optimisation des tests répétitifs de déviation.
  3. Les paramètres de l’arrêt de perte sont testés à plusieurs reprises pour trouver les paramètres optimaux.
  4. Réduire sa position pendant les périodes de forte volatilité.

Orientation de l’optimisation de la stratégie

  1. Test des SMA de différentes périodes pour trouver les paramètres optimaux
  2. Ajout d’autres indicateurs pour juger de la structure et des tendances du marché
  3. Optimiser le suivi des paramètres de stop-loss afin de dégager plus de profit
  4. Adaptation des positions en fonction des fluctuations du marché
  5. Appliqué simultanément à plusieurs variétés et combiné

Résumer

La stratégie de négociation de déviation SMA est simple à comprendre et facile à mettre en œuvre. Les meilleurs résultats peuvent être obtenus en optimisant les paramètres SMA, les paramètres de déviation et l’équilibre des pertes.

Code source de la stratégie
/*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)