Cette stratégie utilise l'accord des indicateurs sur plusieurs délais pour suivre les tendances.
La stratégie évalue l'orientation de la tendance en utilisant quatre délais - quotidien, 10 jours, 15 jours et 30 jours. Lorsque les prix de clôture sont supérieurs aux prix d'ouverture sur les quatre délais, elle indique un signal haussier. Lorsque les prix de clôture sont inférieurs aux prix d'ouverture sur les quatre délais, elle indique un signal baissier.
Lorsque le signal est haussier, il va long. Lorsque le signal est baissier, il va court. Après l'entrée, le canal KC est utilisé pour le stop loss dynamique.
Plus précisément, la stratégie compare les prix d'ouverture et les prix de clôture à travers différents délais pour déterminer la direction de la tendance. Si le prix de clôture est supérieur au prix d'ouverture, le délai est considéré comme haussier et indiqué en vert. Si le prix de clôture est inférieur au prix d'ouverture, le délai est considéré comme baissier et indiqué en rouge.
Lorsque les quatre échéanciers s'accordent sur un signal haussier, la stratégie ouvrira une position longue. Lorsque les quatre échéanciers s'accordent sur un signal baissier, la stratégie ouvrira une position courte. Elle sortira lorsqu'elle atteindra le stop loss ou l'inversion de la tendance.
L'utilisation de plusieurs délais pour confirmer les tendances peut filtrer efficacement les fausses ruptures et déterminer la direction de la tendance.
Un stop loss dynamique peut maximiser la protection du capital.
Des critères d'entrée stricts réduisent les transactions inutiles et les coûts de dérapage.
La combinaison de plusieurs délais équilibre la vitesse et la stabilité des profits.
Les critères d'admission peuvent être trop stricts, manquant certaines opportunités.
Le paramètre de stop loss peut être trop agressif ou trop conservateur.
Les choix de délais inappropriés peuvent ne pas correspondre aux tendances à plus ou moins long terme.
Les événements soudains peuvent ne pas déclencher un stop loss.
Optimiser les sélections de délais pour équilibrer la vitesse et la stabilité des bénéfices.
Testez différents paramètres pour optimiser les niveaux de stop loss.
Ajouter des algorithmes d'apprentissage automatique pour aider à juger des points d'inversion.
Surveiller les événements importants afin d'éviter les pertes dues à des retours brusques.
Cette stratégie intègre des jugements sur plusieurs délais, avec des critères d'entrée stricts et des arrêts dynamiques, visant des rendements stables.
/*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)