Suivre régulièrement la stratégie du prix moyen au creux


Date de création: 2024-01-17 17:57:58 Dernière modification: 2024-01-17 17:57:58
Copier: 4 Nombre de clics: 605
1
Suivre
1617
Abonnés

Suivre régulièrement la stratégie du prix moyen au creux

Aperçu

L’idée principale de la stratégie est de suivre périodiquement le cours moyen à la baisse après la fin d’une baisse à court terme. Plus précisément, la stratégie identifie le moment où la baisse à court terme se termine à la fin de chaque mois, et ajoute donc régulièrement des positions; tout en liquidant la position à la clôture de la dernière ligne K.

Principe de stratégie

  1. Signaux de suivi périodique déterminés: 24 par jour*Après 30 lignes K ((signifiant un mois), il est jugé qu’il a atteint le point de repérage périodique et a émis le premier signal.
  2. Détermination de la fin d’une baisse à court terme: utilisation de l’indicateur MACD pour juger de la tendance, considérant que la baisse à court terme est terminée lorsque le MACD se détourne et traverse la ligne de signal.
  3. Règles d’entrée: libérer le signal de suivi et ouvrir une position plus élevée lorsque le signal de suivi périodique et le signal de fin de baisse à court terme sont satisfaits.
  4. Règle de sortie: Lorsque la dernière ligne K est clôturée, la position est liquidée.

Voici le processus et les principes de base de la stratégie. Il est à noter que la stratégie utilise par défaut un suivi de fonds de 1000 \( par mois, qui sera étendu à 33 mois dans le backtest, soit un investissement total de 33 000 \).

Analyse des avantages

Le plus grand avantage de cette stratégie réside dans la possibilité de placer régulièrement des positions à des niveaux bas, d’obtenir des coûts d’achat plus avantageux à long terme et de générer des rendements plus élevés. En outre, l’utilisation de l’indicateur MACD pour identifier les points d’achat à court terme est également plus fiable et plus claire, sans tomber dans des impasses, ce qui peut également éviter les pertes dans une certaine mesure.

Dans l’ensemble, il s’agit d’une stratégie de coût-efficacité qui convient mieux aux détenteurs de lignes moyennes et longues qui achètent régulièrement en lots et obtiennent des rendements satisfaisants.

Les risques et les solutions

Le risque principal de la stratégie réside dans l’incapacité de déterminer avec précision le point d’achèvement d’une baisse à court terme. L’indicateur MACD peut avoir un retard dans le temps de détermination de la fin d’une baisse, ce qui entraîne une incapacité des coûts à acheter à l’optimisme.

Il est possible d’envisager d’ajouter d’autres indicateurs de tendance, tels que les lignes de Brin, les KDJ, etc., qui permettent de déterminer à l’avance le moment de la reprise. Il est également possible d’optimiser le montant de l’investissement mensuel pour réduire l’impact des coûts d’exploitation sur les résultats.

Direction d’optimisation

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

  1. Optimiser les périodes de suivi régulier, par exemple en les modifiant pour un suivi régulier tous les deux mois, afin de réduire les problèmes de transactions trop fréquentes.

  2. Le fait de combiner plus d’indicateurs pour déterminer le moment de la fin d’une baisse à court terme permet de rapprocher le point d’achat du point le plus bas.

  3. Optimiser le montant de l’investissement mensuel et trouver la meilleure configuration.

  4. Essayez d’inclure une stratégie de stop loss pour éviter les pertes causées par une chute trop profonde.

  5. Tester l’impact des différentes périodes de détention sur les gains et trouver le nombre optimal de jours de détention.

Résumer

Cette stratégie de suivi régulier des valeurs moyennes basses est une stratégie globale claire et compréhensible, qui permet d’obtenir des prix de revient plus avantageux grâce à des ajouts périodiques et à la combinaison de jugements à court terme. Les investisseurs qui détiennent la stratégie peuvent obtenir des rendements stables et conviennent aux investisseurs qui recherchent la valeur de l’investissement à long terme. Il existe également des directions d’optimisation qui permettent d’améliorer encore cette stratégie et d’améliorer son rendement.

Code source de la stratégie
/*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)