Stratégie de négociation des fluctuations de décaissement de SMA

Auteur:ChaoZhang est là., Date: 2023-12-19 à 10h52h10
Les étiquettes:

img

Vue d'ensemble de la stratégie

Cette stratégie utilise des moyennes mobiles simples (SMA) et quelques calculs mathématiques pour déterminer les points d'achat/vente. Nous gardons une ligne SMA de 100 jours comme base. Si le prix de clôture est en dessous de cette ligne, nous déterminons la position d'ouverture en fonction du pourcentage que le prix est en dessous de la ligne (faible décalage), ce qui est configurable. De même, nous définissons un pourcentage de décalage élevé au-dessus de la SMA de 100 jours avant de fermer des positions longues. Si nous essayons de fermer trop tôt alors que le prix est encore en hausse, le stop loss de trailing sera déclenché.

La logique de la stratégie

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

Il va long lorsque le prix de clôture est inférieur à la ligne de référence, le pourcentage en dessous de la ligne lente (décalage bas) est supérieur à la valeur configurée, la ligne rapide est en hausse et la ligne lente est en baisse.

Il ferme long lorsque le prix de clôture est au-dessus de la ligne de référence, le pourcentage au-dessus de la ligne lente (compensation élevée) est supérieur à la valeur configurée, le prix de clôture a augmenté pendant 3 bougies consécutives, nous avons des bénéfices ouverts et la ligne rapide est au-dessus de la ligne lente.

La taille de l'ordre est basée sur un pourcentage du capital total, ce qui contrôle la taille de notre position.

Analyse des avantages

  1. Utiliser l'avantage de la SMA qui est capable d'assouplir les fluctuations des prix et de filtrer le bruit du marché.
  2. Les croisements SMA ont une certaine capacité à prédire les changements de tendance.
  3. Le réglage des décalages évite les fausses ruptures des lignes SMA.
  4. La combinaison d'indicateurs de tendance et de croisement améliore la précision des signaux de négociation.
  5. Le suivi des arrêts de perte bloque les bénéfices et empêche les retraits.

Analyse des risques

  1. La SMA elle-même a un décalage et peut manquer les points tournants des prix.
  2. Un mauvais réglage de décalage peut rendre la stratégie trop agressive ou trop conservatrice.
  3. Un paramètre de stop loss incorrect peut provoquer un arrêt trop tôt ou un pourcentage de stop loss trop élevé.
  4. Incapable de faire face à des fluctuations violentes des prix.

Améliorations correspondantes:

  1. Ajouter d'autres indicateurs de pointe aux entrées filtrées.
  2. Tests arrière et optimisation des décalages.
  3. Faites des tests de retour et trouvez les paramètres optimaux de stop loss.
  4. Réduire la taille des positions pendant les périodes de forte volatilité.

Directions d'optimisation

  1. Testez les SMA de différentes périodes pour trouver les paramètres optimaux.
  2. Ajouter d'autres indicateurs pour déterminer la structure et la tendance du marché.
  3. Optimisez les paramètres de stop-loss pour obtenir plus de profits.
  4. Ajuster la taille des positions en fonction de la volatilité du marché.
  5. Appliquer la stratégie à plusieurs produits simultanément pour la diversification.

Conclusion

Le mécanisme de sortie définit un stop loss pour verrouiller les gains. Cette stratégie est simple à comprendre et à mettre en œuvre. En optimisant les paramètres tels que les périodes SMA, les offsets, les niveaux de stop loss, de meilleurs résultats peuvent être obtenus. Il convient aux investisseurs à moyen et long terme qui recherchent des profits stables.


/*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)

Plus de