Stratégie mensuelle d'inversion des DCA

Auteur:ChaoZhang est là., Date: 2023-10-08 16:12:29 Je vous en prie.
Les étiquettes:

Résumé

L'objectif de cette stratégie est d'identifier les points d'inversion des tendances à la baisse à court terme des actifs et d'y investir une somme d'argent fixe.

Principaux

Cette stratégie fonctionne sur un calendrier mensuel. Il y a 240 barres d'une heure par mois, qui sont utilisées pour déterminer le moment des renversements de tendance.

Plus précisément, la stratégie calcule la différence entre l'EMA rapide et l'EMA lente (EMA_CD), ainsi que la ligne de signal de l'EMA_CD. Lorsque la ligne rapide traverse au-dessus de la ligne de signal, elle détermine la fin d'une tendance à la baisse à court terme et déclenche un signal d'achat.

Après le signal d'achat, la stratégie ferme toutes les positions à la fin du mois, puis le processus se répète le mois suivant, avec des achats et des détentions périodiques fixes pendant un mois.

Cela nous permet de pesquer le fond à la fin des baisses à court terme, et le prix moyen en dollars à intervalles fixes.

Les avantages

Le plus grand avantage de cette stratégie est qu'elle peut filtrer les marchés limités à la fourchette et acheter uniquement aux points d'inversion de tendance, ce qui permet de faire la moyenne du coût en dollars à des prix relativement meilleurs.

En outre, l'utilisation de l'EMA pour déterminer les points d'inversion peut être plus stable et plus précise que de simplement regarder les inversions de chandelier.

Enfin, le stop loss mensuel bloque le rendement de chaque mois d'investissement, limitant ainsi la perte maximale par mois.

Les risques

Le plus grand risque de cette stratégie est que les prix continuent à baisser après l'achat, ce qui conduit à un stop loss à la fin du mois.

Nous pouvons optimiser les paramètres de l'EMA pour améliorer l'identification, ou combiner d'autres indicateurs comme RSI pour confirmer les signaux d'inversion.

Un autre risque est le niveau de stop loss. Un stop loss trop serré peut facilement être arrêté par des fluctuations à court terme. Un stop loss trop large ne parvient pas à limiter les pertes. Le paramètre optimal doit être trouvé en testant différents niveaux de stop loss.

Des possibilités d'amélioration

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

  1. Optimiser les périodes EMA pour trouver la combinaison optimale de paramètres permettant d'identifier les retours.

  2. Ajoutez d'autres filtres comme RSI pour confirmer les signaux d'inversion.

  3. Testez différents niveaux d'arrêt de perte pour trouver le point optimal qui maximise la prévention de la perte sans être fouetté.

  4. Considérez l'ajout d'un arrêt de trailing en plus de l'arrêt de perte pour ajuster dynamiquement le niveau d'arrêt en fonction du prix.

  5. Testez différents délais comme quotidien ou hebdomadaire pour voir lequel fonctionne le mieux pour cette stratégie.

Conclusion

L'idée générale de cette stratégie est simple et claire - en utilisant l'EMA pour identifier les renversements de tendance à court terme et la moyenne du coût du dollar aux points de renversement mensuellement. Il peut filtrer efficacement les marchés agités et investir à des prix relativement bas. L'espace d'optimisation réside principalement dans le réglage des paramètres et les techniques de stop loss. Dans l'ensemble, il s'agit d'un excellent concept de stratégie pour l'allocation d'actifs fixes, qui mérite d'être testé et amélioré.


/*backtest
start: 2023-09-07 00:00:00
end: 2023-10-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © BHD_Trade_Bot

// @version=5
// strategy(
//  shorttitle            = 'DCA After Downtrend',
//  title                 = 'DCA After Downtrend (by BHD_Trade_Bot)',
//  overlay               = true,
//  calc_on_every_tick    = true,
//  calc_on_order_fills   = true,
//  use_bar_magnifier     = true,
//  pyramiding            = 100,
//  initial_capital       = 0,
//  default_qty_type      = strategy.cash,
//  default_qty_value     = 1000,
//  commission_type       = strategy.commission.percent,
//  commission_value      = 0.1)



// Backtest Time Period
start_year   = input(title='Start year'   ,defval=2017)
start_month  = input(title='Start month'  ,defval=1)
start_day    = input(title='Start day'    ,defval=1)
start_time   = timestamp(start_year, start_month, start_day, 00, 00)

end_year     = input(title='end year'     ,defval=2050)
end_month    = input(title='end month'    ,defval=1)
end_day      = input(title='end day'      ,defval=1)
end_time     = timestamp(end_year, end_month, end_day, 23, 59)

window() => true



// EMA
ema50 = ta.ema(close, 50)
ema200 = ta.ema(close, 200)

// EMA_CD
emacd = ema50 - ema200
emacd_signal = ta.ema(emacd, 20)
hist = emacd - emacd_signal

// Count n candles after x long entries
var int nPastCandles = 0
var int entryNumber = 0
nPastCandles := nPastCandles + 1



// ENTRY CONDITIONS

// 8 hours per day => 240 hours per month
entry_condition1 = nPastCandles > entryNumber * 240

// End of downtrend
entry_condition2 = ta.crossover(emacd, emacd_signal)

ENTRY_CONDITIONS = entry_condition1 and entry_condition2


if ENTRY_CONDITIONS and window()
    entryNumber := entryNumber + 1
    entryId = 'Long ' + str.tostring(entryNumber)
    strategy.entry(entryId, strategy.long)
    
    

// CLOSE CONDITIONS

// Last bar
CLOSE_CONDITIONS = barstate.islast

if CLOSE_CONDITIONS
    strategy.close_all()


    
// Draw
plot(ema50, color=color.orange, linewidth=3)
plot(ema200, color=entry_condition1 ? color.green : color.red, linewidth=3)


Plus de