Stratégie d'investissement en actions basée sur les moyennes mobiles doubles et la volatilité


Date de création: 2023-12-20 14:54:41 Dernière modification: 2023-12-20 14:54:41
Copier: 0 Nombre de clics: 661
1
Suivre
1621
Abonnés

Stratégie d’investissement en actions basée sur les moyennes mobiles doubles et la volatilité

Aperçu

Cette stratégie est basée sur des indices bi-médianes et de force relative, associés à la volatilité historique des actions, permettant l’achat et la vente automatiques d’actions. L’avantage de la stratégie est la combinaison des lignes longues et courtes, permettant une gestion efficace des risques. Cependant, il existe une certaine marge d’amélioration, par exemple, l’ajout d’un mécanisme de stop-loss.

Principe de stratégie

La stratégie utilise un système de double équilibre composé d’une moyenne linéaire de 150 semaines et d’une moyenne rapide de 50 jours, ainsi que d’une moyenne la plus rapide de 20 jours. Lorsque le prix franchit la ligne de 150 semaines, le cours est considéré comme en hausse et lorsque le prix franchit la ligne de 50 jours, il est considéré comme en baisse.

En outre, la stratégie utilise le prix le plus élevé de la volatilité annuelle et l’indicateur de force relative pour déterminer le moment précis de l’achat. Un signal d’achat n’est émis que lorsque le prix de clôture dépasse le prix le plus élevé calculé par la volatilité annuelle et que l’indicateur de force relative est positif.

Avantages stratégiques

  1. Utilisation d’un système bi-linéaire permettant de détecter efficacement les variations des principales tendances et de suivre les baisses
  2. L’ajout d’indicateurs de volatilité et d’intensité permet d’éviter les courants ondulatoires dans des situations de choc
  3. L’ajout d’une ligne moyenne rapide de 20 jours pourrait accélérer la perte.

Risque stratégique

  1. Il y a un certain retard qui ne s’arrête pas rapidement.
  2. Il n’y a pas de stop loss, ce qui est susceptible d’entraîner des pertes plus importantes.
  3. Manque d’optimisation des paramètres, les paramètres sont plutôt subjectifs

Pour résoudre le risque, il est possible de définir un stop loss, ou d’utiliser le multiple de l’indicateur ATR comme amplitude de stop loss. En outre, il est possible d’optimiser les paramètres par un retour de test plus strict.

Orientation de l’optimisation de la stratégie

  1. Augmentation du mécanisme de prévention des pertes
  2. Trouver les paramètres optimaux en utilisant la méthode d’optimisation par paramètres
    1. Considérer d’ajouter d’autres indicateurs au filtrage des signaux, tels que les indicateurs de volume de transaction
  3. Il est possible d’envisager de construire une stratégie en tant que modèle multifactoriel, avec plus d’indicateurs.

Résumer

Cette stratégie est généralement une stratégie d’investissement en actions plus conservatrice. Elle utilise une double courbe pour juger des tendances principales et, combinée à la volatilité et à la force des indicateurs d’entrée, permet de filtrer efficacement les fausses ruptures. L’ajout d’une courbe rapide permet également de stopper les pertes plus rapidement.

Code source de la stratégie
/*backtest
start: 2023-12-12 00:00:00
end: 2023-12-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//Relative Strength
strategy("Stan my man", overlay=true)
comparativeTickerId = input("BTC_USDT:swap",  title="Comparative Symbol")
l = input(50, type=input.integer, minval=1, title="Period")
baseSymbol = security(syminfo.tickerid, timeframe.period, close)
comparativeSymbol = security(comparativeTickerId, timeframe.period, close)
hline(0, color=color.black, linestyle=hline.style_dotted)
res = baseSymbol / baseSymbol[l] /(comparativeSymbol / comparativeSymbol[l]) - 1
plot(res, title="RS", color=#1155CC)

//volume ma
vol1 = sma(volume,20)
// 30 week ma
ema1 = ema(close, 150)
//consolidation
h1 = highest(high[1],365)

fastPeriod = input(title="Fast MA", type=input.integer, defval=50)
slowPeriod = input(title="Slow MA", type=input.integer, defval=150)
fastestperiod = input(title="Fastest MA", type=input.integer, defval=20)

fastEMA = ema(close, fastPeriod)
slowEMA = ema(close, slowPeriod)
fastestEMA = ema(close, fastestperiod)

monitorStrategy = close < close[20]


// trade conditions
buytradecondition1 = close >ema1 and res>0 and volume> 1.5*vol1 and close > h1
buytradecondition2 = close > fastEMA  and volume> 1.5* vol1 
selltradecondition1  = close< 0.95 * fastEMA 
selltradecondition2  = close< 0.90 * open

if (buytradecondition1)
    strategy.entry("long",strategy.long,alert_message ="Seems ready to Buy")
    alert("Buy Alert Price (" + tostring(close) + ") crossed over Slow moving average",alert.freq_all)
    
if (buytradecondition2)
    strategy.entry("long",strategy.long,alert_message ="Seems ready to Buy")
    alert("Buy Alert Price (" + tostring(close) + ") crossed over fast moving average",alert.freq_all)
    
if (selltradecondition1)
    strategy.close("long",alert_message ="Seems ready to Sell")
    alert("Sell Alert Price (" + tostring(close) + ") crossed down fast moving average",alert.freq_all)
    
if (selltradecondition2)
    strategy.close("long",alert_message ="Seems ready to Sell")
    alert("Sell Alert Price (" + tostring(close) + ") crossed down 10% below open price  ",alert.freq_all)

//alertcondition(buytradecondition1,title ="BuySignal", message ="Price Crossed Slow Moving EMA ")

plot(fastEMA, color=color.navy)
plot(slowEMA, color=color.fuchsia)
plot(fastestEMA, color=color.green)