Stratégie de négociation de taux de change

Auteur:ChaoZhang est là., Date: le 28 septembre 2023 à 11 h 26 min 44 s
Les étiquettes:

Résumé

Cette stratégie calcule le taux de variation au fil du temps pour déterminer les signaux d'achat/vente.

La logique de la stratégie

La stratégie repose principalement sur les indicateurs suivants:

  1. Moyenne mobile simple rapide (par défaut 14 jours): pour mesurer la tendance à court terme
  2. Moyenne mobile simple lente (par défaut 100 jours): pour mesurer la tendance à long terme
  3. Moyenne mobile simple de référence (30 jours par défaut): pour déterminer la direction globale
  4. Taux de variation: calculé sur la base du prix le plus élevé/le plus bas au cours de la période d'observation (par défaut 12 barres) pour juger de l'ampleur de la fluctuation des prix

Règles spécifiques d'entrée:

  1. Prix inférieur à la SMA de référence
  2. ROC supérieur au seuil de ROC bas prédéfini (par défaut 2,3%)
  3. L'augmentation rapide de la SMA et la baisse lente de la SMA, indiquant un croisement potentiel

Règles spécifiques de sortie:

  1. Prix supérieur à la SMA de référence
  2. ROC supérieur au seuil de ROC élevé prédéfini (défaut 4,7%)
  3. 3 barres ascendantes consécutives
  4. Bénéfice courant > 0
  5. SMA rapide au-dessus de SMA lente

La taille de la position est le pourcentage (par défaut 96%) du capital total pour l'effet de levier.

Analyse des avantages

La stratégie présente les avantages suivants:

  1. L'utilisation de ROC pour détecter les oscillations permet de capturer les mouvements à la hausse/à la baisse pour des rendements plus élevés.

  2. La combinaison SMA rapide/lente permet d'identifier plus précisément les points bas/hauts.

  3. La SMA de référence fournit une direction générale pour éviter les distractions causées par le bruit à court terme.

  4. Le suivi des arrêts de perte bloque les bénéfices et réduit les risques à la baisse.

  5. L'effet de levier de la taille des positions amplifie les bénéfices.

Dans l'ensemble, la stratégie utilise efficacement ROC, SMA et d'autres outils pour capitaliser sur les fluctuations de prix.

Analyse des risques

La stratégie comporte également les risques suivants:

  1. Des paramètres incorrects de ROC et de SMA peuvent entraîner des signaux manqués ou de mauvais trades.

  2. La taille excessive des positions augmente le risque.

  3. Le pourcentage de stop loss peut être ajusté.

  4. Préoccupé par les fluctuations des marchés, il devrait intégrer des filtres de tendance et une gestion des risques.

  5. Le risque de suradaptabilité doit être vérifié par le biais de transactions en direct sur les marchés.

Les risques peuvent être gérés par l'optimisation des paramètres, la dimensionnement des positions, les ajustements de stop loss, les tests de robustesse, etc.

Directions d'optimisation

La stratégie peut être améliorée dans les domaines suivants:

  1. Ajoutez d'autres indicateurs techniques comme la volatilité, le volume pour améliorer la précision du signal.

  2. Optimiser le nombre de transactions en réduisant la fréquence des transactions afin de minimiser les effets de la scie.

  3. Incorporer des techniques de rupture autour des niveaux de prix clés.

  4. Utilisez l'apprentissage automatique pour optimiser les paramètres.

  5. Tester la robustesse sur différents marchés et délais.

  6. Ajustez les paramètres spécialisés pour différents produits comme les actions, le forex, etc.

  7. Améliorer continuellement les signaux et les contrôles des risques en fonction des résultats en direct.

Résumé

Cette stratégie identifie les opportunités de trading autour des oscillations à court terme en utilisant l'analyse ROC et SMA. Elle aide à capitaliser sur les oscillations rapides, mais nécessite également des contrôles de risque appropriés.


/*backtest
start: 2022-09-21 00:00:00
end: 2023-09-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=4
// Author: Sonny Parlin (highschool dropout)
// Best if run on 5m timeframe
strategy(shorttitle="ROC+Strategy", title="Rate of Change 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.023, "ROC Low (%)", minval=0, step=0.01)
highOffset = input(0.047, "ROC High (%)", minval=0, step=0.01)
orderStake = input(0.96, "Order Stake (%)", minval=0, step=0.01)
lookback = input(12, "Lookback Candles", minval=1, step=1) 

// SMA
smaFast = sma(close, ss)
smaSlow = sma(close, ff)
smaRef = sma(close, ref)
ROC = (max(close[lookback],close) - min(close[lookback],close)) / max(close[lookback],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 Reference line 
// Guard that the rate of change over the lookback period is greater than our 
// ROC lowOffset %, default is 0.023. (low < smaRef) and (ROC > 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 (ROC > lowOffset) and (rising(smaFast,1)) and (falling(smaSlow,1)) 

// The sell Strategy:
// Guard that close is higher than our SMA reference line and that the rate of 
// change over the lookback period is greater than our highOffset %, default
// is 0.047. (close > smaRef) and (ROC > 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 (ROC > 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 2.62 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=3.62) * 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