La moyenne du coût en dollars après la stratégie de tendance à la baisse

Auteur:ChaoZhang est là., Date: le 17 janvier 2024 à 17h57
Les étiquettes:

img

Résumé

L'idée principale de cette stratégie est de suivre régulièrement les prix moyens bas après la fin des baisses à court terme. Plus précisément, la stratégie identifiera la fin d'une baisse à court terme à la fin de chaque mois, afin d'ajouter régulièrement des positions; en même temps, nettoyer les positions lorsque la dernière ligne K se ferme.

Principe de stratégie

  1. Détermination du signal de suivi régulier: après 24*30 lignes K (représentant un mois), il est déterminé que le point de suivi régulier a été atteint et le premier signal est émis.

  2. Fin du jugement de baisse à court terme: utiliser l'indicateur MACD pour déterminer la tendance.

  3. Règles d'entrée: lorsque le signal de suivi régulier et la fin du signal de baisse à court terme sont déclenchés en même temps, un signal de suivi est libéré et des positions longues sont ouvertes.

  4. Règles de sortie: lorsque la dernière ligne K se ferme, dégagez toutes les positions.

Ce qui précède est le flux de négociation de base et les principes de la stratégie. Il convient de noter que la stratégie par défaut pour suivre 1 000 $ par mois dans les backtests, qui sera étendu à 33 mois, c'est-à-dire un investissement total de 33 000.

Analyse des avantages

Le plus grand avantage de cette stratégie est qu'elle peut régulièrement construire des positions à des niveaux bas. D'un point de vue à long terme, elle peut obtenir un coût moyen relativement abordable pour générer des rendements élevés. En outre, l'utilisation de l'indicateur MACD pour identifier les points d'achat à court terme est également assez fiable et claire, ce qui peut éviter d'entrer dans une impasse dans une certaine mesure, et cela peut également éviter des pertes dans une certaine mesure.

En général, il s'agit d'une stratégie de moyenne des coûts qui convient mieux aux détenteurs à moyen et à long terme qui achètent régulièrement des lots pour obtenir des rendements satisfaisants.

Risques et solutions

Le principal risque de la stratégie est l'incapacité de déterminer avec précision la fin de la baisse à court terme. Le jugement de l'indicateur MACD de la fin de la baisse peut être retardé, ce qui conduira à l'échec de l'entrée au point optimal. En outre, l'investissement dispersé des fonds augmente également les coûts d'exploitation.

Considérez l'ajout de plus d'indicateurs pour déterminer les tendances, tels que les bandes de Bollinger, KDJ, etc. Ces indicateurs peuvent anticiper à l'avance le moment de l'inversion. En même temps, le montant des fonds investis chaque mois peut être optimisé pour réduire l'impact des coûts d'exploitation sur les rendements.

Directions d'optimisation

La stratégie peut être encore optimisée dans les directions suivantes:

  1. Optimiser le cycle de suivi régulier, par exemple une fois tous les deux mois, afin de réduire le problème des transactions trop fréquentes.

  2. Incorporer plus d'indicateurs pour déterminer la fin d'un déclin à court terme, rapprochant le point d'entrée du point le plus bas.

  3. Optimiser le montant des fonds investis chaque mois pour trouver la configuration optimale.

  4. Essayez d'intégrer des stratégies de stop loss pour éviter des pertes excessives lorsque les prix chutent trop bas.

  5. Testez l'impact des différentes périodes de détention sur les rendements pour trouver les jours de détention optimaux.

Résumé

L'idée générale de cette stratégie de moyenne de coût en dollars après une tendance à la baisse est claire et facile à comprendre. En combinant un réapprovisionnement régulier et un jugement à court terme, il peut obtenir un prix de coût moyen plus abordable. Les détentions à moyen et à long terme de cette stratégie peuvent générer des rendements stables et conviennent aux investisseurs qui recherchent une valeur d'investissement à long terme.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
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 v2',
 title                 = 'DCA After Downtrend v2 (by BHD_Trade_Bot)',
 overlay               = true,
 calc_on_every_tick    = false,
 calc_on_order_fills   = false,
 use_bar_magnifier     = false,
 pyramiding            = 1000,
 initial_capital       = 0,
 default_qty_type      = strategy.cash,
 default_qty_value     = 1000,
 commission_type       = strategy.commission.percent,
 commission_value      = 1.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() => time >= start_time and time <= end_time ? true : false
h1_last_bar = (math.min(end_time, timenow) - time)/1000/60/60 < 2



// 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

// BHD Unit
bhd_unit = ta.rma(high - low, 200) * 2
bhd_upper = ema200 + bhd_unit
bhd_upper2 = ema200 + bhd_unit * 2
bhd_upper3 = ema200 + bhd_unit * 3
bhd_upper4 = ema200 + bhd_unit * 4
bhd_upper5 = ema200 + bhd_unit * 5

bhd_lower = ema200 - bhd_unit
bhd_lower2 = ema200 - bhd_unit * 2
bhd_lower3 = ema200 - bhd_unit * 3
bhd_lower4 = ema200 - bhd_unit * 4
bhd_lower5 = ema200 - bhd_unit * 5

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



// ENTRY CONDITIONS

// 24 * 30 per month
entry_condition1 = nPastCandles > entryNumber * 24 * 30

// End of downtrend
entry_condition2 = emacd < 0 and hist < 0 and hist > hist[2]

ENTRY_CONDITIONS = entry_condition1 and entry_condition2


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

// CLOSE CONDITIONS

// Last bar
CLOSE_CONDITIONS = barstate.islast or h1_last_bar

if CLOSE_CONDITIONS
    strategy.close_all()



// Draw
colorRange(src) =>
    if src > bhd_upper5
        color.rgb(255,0,0)
    else if src > bhd_upper4
        color.rgb(255,150,0)
    else if src > bhd_upper3
        color.rgb(255,200,0)
    else if src > bhd_upper2
        color.rgb(100,255,0)
    else if src > bhd_upper
        color.rgb(0,255,100)
    else if src > ema200
        color.rgb(0,255,150)
    else if src > bhd_lower
        color.rgb(0,200,255)
    else if src > bhd_lower2
        color.rgb(0,150,255)
    else if src > bhd_lower3
        color.rgb(0,100,255)
    else if src > bhd_lower4
        color.rgb(0,50,255)
    else
        color.rgb(0,0,255)
        
bhd_upper_line = plot(bhd_upper, color=color.new(color.teal, 90))
bhd_upper_line2 = plot(bhd_upper2, color=color.new(color.teal, 90))
bhd_upper_line3 = plot(bhd_upper3, color=color.new(color.teal, 90))
bhd_upper_line4 = plot(bhd_upper4, color=color.new(color.teal, 90))
bhd_upper_line5 = plot(bhd_upper5, color=color.new(color.teal, 90))

bhd_lower_line = plot(bhd_lower, color=color.new(color.teal, 90))
bhd_lower_line2 = plot(bhd_lower2, color=color.new(color.teal, 90))
bhd_lower_line3 = plot(bhd_lower3, color=color.new(color.teal, 90))
bhd_lower_line4 = plot(bhd_lower4, color=color.new(color.teal, 90))
bhd_lower_line5 = plot(bhd_lower5, color=color.new(color.teal, 90))
// fill(bhd_upper_line5, bhd_lower_line5, color=color.new(color.teal, 95))

plot(ema50, color=color.orange, linewidth=3)
plot(ema200, color=color.teal, linewidth=3)
plot(close, color=color.teal, linewidth=1)
plot(close, color=colorRange(close), linewidth=3, style=plot.style_circles)


Plus de