Stratégie de dynamique de la moyenne mobile à cinq jours

Auteur:ChaoZhang est là., Date: 2021-09-21 12:16:22 Les résultats sont les suivants:
Les étiquettes:

Résumé

Cette stratégie utilise des croisements MA de 5 jours et de 78 jours pour générer des signaux de poursuite de l'élan, visant à capturer les écarts de prix à court terme.

La logique de la stratégie

  1. Calculer les moyennes mobiles pondérées de 3 jours, 78 jours et 195 jours.

  2. 3 jours de croisement au-dessus de 195 jours déclencheurs de signal d'achat.

  3. Lorsque 3 jours se trouve au-dessus de 78 jours, et 78 jours au-dessus de 195 jours, considérer le canal de tendance haussière formée, déclenche également acheter.

  4. Mettez la ligne de prise de profit dynamique 6ATR, vendez lorsque le prix tombe en dessous de la ligne.

  5. Vendez le signal quand 3 jours revient en dessous de 195 jours.

Les avantages

  1. Plusieurs croisements de MA filtrent efficacement les fausses fuites.

  2. Une prise de profit dynamique évite les coups de fouet.

  3. Le backtest montre une durée de détention moyenne de 2 heures par transaction, adaptée aux transactions à court terme.

  4. Le tirage maximal est contrôlé autour de 20%.

Les risques

  1. Les paramètres fixes de l'AM ne s'adaptent pas à l'évolution des marchés.

  2. La période d'échantillonnage d'un an est limitée, il faut des données plus importantes pour vérifier la stratégie.

  3. Les paramètres de prise de profit et de stop loss doivent être optimisés pour contrôler les risques.

  4. Ne s'adapte pas aux écarts de prix.

  5. Des coûts de transaction élevés.

Améliorations

  1. Testez différentes combinaisons MA pour optimisation.

  2. Optimiser le bénéfice et le stop loss pour un équilibre risque-rendement.

  3. Réglez les filtres d'entrée pour réduire la probabilité d'être pris au piège.

  4. Optimisez la taille de la position, pyramide sur la force.

  5. Test sur différents produits et sur des délais plus longs.

  6. Simulation de Monte Carlo pour évaluer le tirage maximal.

Résumé

Cette stratégie identifie la tendance haussière avec des croisements MA et définit des règles dynamiques d'arrêt des bénéfices avec de bons résultats de backtest. Mais une période d'échantillonnage limitée, la stabilité des paramètres reste vérifiée et échoue sur les lacunes. Requiert un retour en arrière supplémentaire sur de plus grands ensembles de données, plus de filtres pour réduire les faux signaux, des paramètres d'arrêt des bénéfices optimisés, une évaluation des coûts de transaction. Si elle réussit des tests d'optimisation et de vérification complets, elle peut devenir un système de poursuite de l'élan à court terme robuste.


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

//@version=4
// © FinTasticTrading 2021/2/14
// This is a 5 day moving average crossing long strategy, used in short term momentum trading strategy.
// Momentum trading Strategy: When S&P 500 index is at up trend (or above 60 sma), buy 10+ stocks in top 20% stock RS ranking at equal weight using this MA5X_L strategy. Change stocks when any stock exited by algorithm.  
// Back test start since 2020/7/1, each long entry for condition 1 is $30000, condition 2 is $20000, with max of 2 long positions.
// Setup: 10 minutes chart
// Buy condition 1) 3 wma cross up 180 wma (5day) 2) 3wma > 60wma > 180wma UP Trend Arrangement (UTA)
// Exit condition 1) 3 wma cross under 180 wma 2) position profit > 20% and 3 wma cross under 6 ATRs line (green)
//@version=4

strategy("MA5X_L", overlay=true, pyramiding=2,default_qty_type=strategy.cash, default_qty_value=100000)
s_len = input( 3 )
m_len = input( 78 )  // 2 day moving average
l_len = input( 195)  // equal to 5 Day moving average
xl_len = input(390)  // 10 day moving average
//Draw WMAs
s_ma = wma(close,s_len)
m_ma = wma(close,m_len)
l_ma = wma(close,l_len)
xl_ma = sma(close,xl_len)
plot(s_ma, color=color.yellow, linewidth=2)
plot(m_ma, color=color.fuchsia, linewidth=2)
plot(l_ma, color=color.blue, linewidth=2)
plot(xl_ma, color = color.gray, linewidth=2)

//ATR Stop Profit , length = 40 or 1 day
Periods = input(title="ATR Period", type=input.integer, defval=40)
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=6.0)
sl=hl2-(Multiplier*atr(Periods))
sl1 = nz(sl[1], sl)
sl := s_ma[1] > sl1 ? max(sl, sl1) : sl
plot(strategy.position_size > 0 ? sl:na, title="Stop Loss", style=plot.style_linebr, linewidth=2, color=color.green)

//Backtest since
condition100 = time>=timestamp(2020, 07, 01, 00, 00) 

//Long Entry Condition 1 : s_ma Cross UP l_ma
if crossover(s_ma, l_ma) and condition100
    strategy.entry("X Up", strategy.long, qty = 30000/close, comment="X Up")

//Long Entry Condition 2 : s_ma > m_ma > l_ma
condition31 = s_ma>m_ma and m_ma>l_ma
condition32 = condition31[1]==false and condition31 == true and condition100
strategy.entry("UTA", strategy.long, qty = 20000/close, when = condition32, comment="UTA")

//Long Exit Condition 1 :  3 wma cross under 180 wma
condition50 = crossunder(s_ma, l_ma)
strategy.close_all(when = condition50, comment="X Dn")

//Long Exit Condition 2 : position profit > 20% and 3 wma cross under 6 ATRs line (green)
strategy.close_all(when = crossunder(close,sl) and strategy.openprofit>30000*0.2, comment="Stop")


Plus de