Stratégie de moyenne des coûts en dollars

Auteur:ChaoZhang est là., Date: 15 septembre 2023 à 16h52:06
Les étiquettes:

Cette stratégie s'appelle la stratégie de moyenne de coût en dollars. Elle vise à accumuler une taille de position cible par des achats périodiques à montant fixe, permettant des détentions à long terme.

Comment ça marche:

  1. Fixez un montant d'achat et une fréquence d'achat fixes.
  2. Faire des achats périodiques de l'actif à intervalles fixes selon le montant fixé.
  3. Vendre lorsque la taille de la position accumulée atteint un seuil.
  4. Répétez pour continuer à accumuler des positions périodiquement.

Flux de travail typique:

  1. Achetez périodiquement une quantité fixe d'actifs (par exemple 200 $ par mois).
  2. Vendre toutes les positions lorsque la taille de la position cumulée dépasse un seuil (par exemple 200 actions).
  3. Relancer les achats périodiques pour continuer à accumuler des positions.

Avantages de cette stratégie:

  1. Coût moyen inférieur grâce à des participations à long terme.
  2. Réduit les risques de retrait, évite d'acheter à prix élevé.
  3. Facile à exécuter de manière cohérente sans surveillance fréquente du marché.

Les risques de cette stratégie:

  1. Requiert de longues périodes de détention, ne peut pas s'adapter aux fluctuations de prix à court terme.
  2. Peut faire face à des pertes lors de tendances à la baisse prolongées.
  3. Un moment de sortie sous-optimale peut manquer le meilleur point de vente.

En résumé, la stratégie de moyenne de coût en dollars accumule des actifs grâce à des achats par lots, ce qui est favorable aux investisseurs à long terme.


/*backtest
start: 2022-09-08 00:00:00
end: 2023-09-14 00:00:00
period: 1d
basePeriod: 1h
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/
// © tanoshimooo

//@version=5
strategy ("DCA", initial_capital=44700, overlay=true)

// To start script at a given date
tz = 0 //timezone
timeadj = time + tz * 60 * 60 * 1000 //adjust the time (unix)
t1 = timeadj >= timestamp(2003, 03, 01, 0, 0) ? 1 : 0 //get the starting time

// Variables
var float lastRef = na
if barstate.isfirst
    lastRef := close
var float cash = 50000 // available money
var float sell_contracts = na
var bool first_trade_done = false

// Parameters
var float sell_min = 200 //200 sell more than sell_min or sell all
var float buy_dollars = 200

var int bi = 90

// LONGS
// if bar_index < bi
strategy.order("Long", strategy.long, int(buy_dollars/close))
cash := cash - int(buy_dollars/close)*close
// label.new(bar_index, na, na, xloc.bar_index, yloc.abovebar, color.blue, label.style_triangleup, color.blue, size.tiny)

//plot(cash)

// SHORTS
// if longExit  
//     if (strategy.position_size*sf*close > sell_min) and (strategy.position_size*sf >= 1)
//         strategy.order ("Long", strategy.short, strategy.position_size*sf)
//         cash := cash + strategy.position_size*sf*close
//     else 
//         strategy.order ("Long", strategy.short, strategy.position_size)
//         cash := cash + strategy.position_size*close
//     lastRef := close
//     label.new(bar_index, na, na, xloc.bar_index, yloc.belowbar, color.red, label.style_triangledown, color.red, size.tiny)

if bar_index == last_bar_index - 2 // bi
    strategy.order ("Long", strategy.short, strategy.position_size)

Plus de