Cette stratégie de script Pine implémente une approche de moyenne quotidienne du coût en dollars sur la plate-forme TradingView, incorporant des signaux tactiles EMA pour déterminer les points d'entrée.
La stratégie comporte les éléments clés suivants:
Moyenne quotidienne du coût en dollars
EMA pour les signaux d'entrée
Résultats de l'analyse
Limite du nombre de transactions
Plus précisément, chaque jour, la stratégie investit un montant fixe et calcule les actions à acheter en fonction du prix de clôture. Si le prix de clôture dépasse l'une des EMA de 5, 10, 20 jours, etc., un signal d'achat est déclenché. Une fois que le nombre de transactions accumulé atteint la limite de 300, aucun achat supplémentaire ne se produira. De plus, si le prix se ferme en dessous de la SMA de 20 jours ou atteint la date de sortie prédéfinie, toutes les positions sont effacées. Le script trace également les EMA sur le graphique des prix pour une analyse visuelle.
Les avantages de cette stratégie sont les suivants:
Diversification des risques
La combinaison EMA évite les baisses
Législation relative à l'émission de gaz
Contrôle des limites commerciales Risques
Visualisation intuitive de l'EMA
Très personnalisable
La stratégie comporte également certains risques:
Des risques systémiques subsistent
Montant fixe de l'investissement
Les EMA ne peuvent pas réagir à des mouvements extrêmes
Limites commerciales pour le potentiel de profit
Le placement de Stop Loss nécessite des précautions
D'autres optimisations:
Montant d'investissement quotidien dynamique
Signaux d'entrée supplémentaires
Moyennes mobiles exponentielles
Limite de position dynamique
Perte de retard
En résumé, cette stratégie quotidienne de DCA combinée à l'EMA réalise le concept d'investissements périodiques à long terme, répartissant les risques sur plusieurs petites entrées par rapport aux gros achats ponctuels. Les EMA aident à éviter les risques de retrait à court terme dans une certaine mesure, tandis que le stop loss contrôle la perte maximale.
/*backtest start: 2024-01-08 00:00:00 end: 2024-01-15 00:00:00 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Daily DCA Strategy with Touching EMAs", overlay=true, pyramiding=10000) // Customizable Parameters daily_investment = input(50000, title="Daily Investment") start_year = input(2022, title="Start Year") start_month = input(1, title="Start Month") start_day = input(1, title="Start Day") end_year = input(2023, title="End Year") end_month = input(12, title="End Month") end_day = input(1, title="End Day") trade_count_limit = input(10000, title="Pyramiding Limit") enable_sell = input(true, title="Enable Sell") start_date = timestamp(start_year, start_month, start_day) var int trade_count = 0 // Calculate the number of shares to buy based on the current closing price shares_to_buy = daily_investment / close // Check if a new day has started and after the start date isNewDay = dayofmonth != dayofmonth[1] and time >= start_date // Buy conditions based on EMA crossovers ema5_cross_above = crossover(close, ema(close, 5)) ema10_cross_above = crossover(close, ema(close, 10)) ema20_cross_above = crossover(close, ema(close, 20)) ema50_cross_above = crossover(close, ema(close, 50)) ema100_cross_above = crossover(close, ema(close, 100)) ema200_cross_above = crossover(close, ema(close, 200)) if isNewDay and (ema5_cross_above or ema10_cross_above or ema20_cross_above or ema50_cross_above or ema100_cross_above or ema200_cross_above) and trade_count < trade_count_limit strategy.entry("Buy", strategy.long, qty=shares_to_buy) trade_count := trade_count + 1 // Dynamic sell conditions (optional) sell_condition = true if enable_sell and sell_condition strategy.close_all() // EMA Ribbon for visualization plot(ema(close, 5), color=color.red, title="EMA 5") plot(ema(close, 10), color=color.orange, title="EMA 10") plot(ema(close, 20), color=color.yellow, title="EMA 20") plot(ema(close, 50), color=color.green, title="EMA 50") plot(ema(close, 100), color=color.blue, title="EMA 100") plot(ema(close, 200), color=color.purple, title="EMA 200")