Basé sur une stratégie de suivi des tendances sur plusieurs périodes de temps


Date de création: 2024-02-19 11:13:22 Dernière modification: 2024-02-19 11:13:22
Copier: 1 Nombre de clics: 545
1
Suivre
1617
Abonnés

Basé sur une stratégie de suivi des tendances sur plusieurs périodes de temps

Aperçu

Cette stratégie est une stratégie de suivi de tendance qui utilise plusieurs indices de temps-cadre convenus. Elle ouvre des positions en hausse ou en baisse simultanément sur la ligne du jour, la ligne du 10, la ligne du 15 et la ligne du 30, et utilise la méthode de stop-loss dynamique.

Principe de stratégie

La stratégie utilise quatre périodes de temps: le jour, le 10, le 15 et le 30 pour déterminer la direction de la tendance. Elle est jugée haussière lorsque les prix de clôture des quatre périodes sont supérieurs au prix d’ouverture et baissière lorsque les prix de clôture des quatre périodes sont inférieurs au prix d’ouverture.

Si la position est positive, vous devez effectuer une entrée plus élevée; si la position est négative, vous devez effectuer une entrée plus courte. Utilisez le canal KC pour effectuer un arrêt dynamique après l’entrée.

Plus précisément, la stratégie juge la direction de la tendance en comparant les prix d’ouverture et de fermeture de différentes périodes. Si le prix d’ouverture est inférieur au prix de fermeture, la période est en hausse, indiquée en vert.

Quand les quatre périodes sont en hausse, la stratégie prend une position plus élevée; quand les quatre périodes sont en baisse, la stratégie prend une position vide. Les conditions de placement sont stop loss ou inversion de tendance.

Avantages stratégiques

  1. L’utilisation de plusieurs périodes pour juger des tendances permet de filtrer efficacement les fausses ruptures et de déterminer la direction de la tendance

  2. La méthode de stop-loss dynamique protège au maximum les fonds

  3. Les conditions d’entrée sont strictes, ce qui permet de réduire les transactions inutiles et d’éviter les coûts excessifs des points de glissement.

  4. La combinaison d’un cadre temporel multiple permet de trouver un équilibre entre la vitesse et la stabilité de la rentabilité

Risque stratégique

  1. Les conditions d’admission sont trop strictes et vous risquez de manquer certaines opportunités

  2. Un mauvais réglage du stop loss peut être trop radical ou conservateur

  3. Une mauvaise sélection des délais peut ne pas correspondre à des tendances à plus long terme ou à plus court terme

  4. Les événements soudains entraînent une inversion rapide et ne peuvent pas être arrêtés

Direction d’optimisation

  1. Optimiser le choix des délais, en équilibrant la vitesse et la stabilité des bénéfices

  2. Tester différents paramètres pour optimiser le stop loss

  3. Ajout d’algorithmes d’apprentissage automatique pour aider à déterminer les points de basculement des tendances

  4. Accroître l’attention sur les événements majeurs et éviter les pertes soudaines

Résumer

La stratégie intègre plusieurs cadres temporels pour juger de la direction de la tendance, des conditions d’entrée strictes combinées à des arrêts dynamiques, dans le but d’obtenir des gains stables. Il existe des opportunités potentiellement manquées ainsi que des problèmes de contrôle inadéquat des risques. La prochaine étape consiste à continuer à optimiser les paramètres pour améliorer la stabilité de la stratégie.

Code source de la stratégie
/*backtest
start: 2024-01-19 00:00:00
end: 2024-02-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("[RichG] Easy MTF Strategy v1.1", overlay=false)

TF_1_time = input("D", "Timeframe 1")
TF_2_time = input("10D", "Timeframe 2")
TF_3_time = input("15D", "Timeframe 3")
TF_4_time = input("30D", "Timeframe 4")
lengthKC=input(20, title="KC Length")
multKC = input(1.5, title="KC MultFactor")
lengthBB=input(20, title="BB Length")
transaction_size = input(1, "Contract/Share Amount")

src = close, len = 20


out = sma(src, len)
width = 5
upcolor = green
downcolor = red
neutralcolor = blue
linestyle = line


kc() =>
    ma = sma(close, lengthKC)
    range = tr
    rangema = sma(range, lengthKC)
    upperKC = ma + rangema * multKC
    lowerKC = ma - rangema * multKC
    [lowerKC, upperKC] 

 
bb() =>
    source = close 
    basis = sma(source, lengthBB)
    dev = multKC * stdev(source, lengthBB)
    upperBB = basis + dev
    lowerBB = basis - dev
    [upperBB, lowerBB]

TF_1 = request.security(syminfo.tickerid, TF_1_time, open) < request.security(syminfo.tickerid, TF_1_time, close) ? true:false
TF_1_color = TF_1 ? upcolor:downcolor

TF_2 = request.security(syminfo.tickerid, TF_2_time, open) < request.security(syminfo.tickerid, TF_2_time, close) ? true:false
TF_2_color = TF_2 ? upcolor:downcolor

TF_3 = request.security(syminfo.tickerid, TF_3_time, open) < request.security(syminfo.tickerid, TF_3_time, close) ? true:false
TF_3_color = TF_3 ? upcolor:downcolor


TF_4 = request.security(syminfo.tickerid, TF_4_time, open) < request.security(syminfo.tickerid, TF_4_time, close) ? true:false
TF_4_color = TF_4 ? upcolor:downcolor

TF_global = TF_1 and TF_2 and TF_3 and TF_4 
TF_global_bear = TF_1 == false and TF_2 == false and TF_3 == false and TF_4 == false
TF_global_color = TF_global ? green : TF_global_bear ? red : white
TF_trigger_width = TF_global ? 6 : width

plot(1, style=linestyle, linewidth=width, color=TF_1_color)
plot(5, style=linestyle, linewidth=width, color=TF_2_color)
plot(10, style=linestyle, linewidth=width, color=TF_3_color)
plot(15, style=linestyle, linewidth=width, color=TF_4_color)
plot(25, style=linestyle, linewidth=4, color=TF_global_color)    

exitCondition_Long = TF_global_bear 
exitCondition_Short = TF_global

longCondition = TF_global
if (longCondition)
    strategy.entry("MTF_Long", strategy.long, qty=transaction_size)

shortCondition = TF_global_bear
if (shortCondition)
    strategy.entry("MTF_Short", strategy.short, qty=transaction_size)

[kc_lower,kc_upper] = kc()

strategy.close("MTF_Long", when=close < kc_upper)
strategy.close("MTF_Short", when=close > kc_lower)