La stratégie de tendance d'équilibrage est une stratégie de suivi de tendance qui utilise l'indicateur Ichimoku Kinko Hyo. Elle identifie les directions de tendance en combinant plusieurs indicateurs, va long sur un marché haussier et court sur un marché baissier, pour atteindre une appréciation du capital à long terme.
Le noyau de cette stratégie est basé sur l'indicateur Ichimoku Kinko Hyo, qui se compose du Tenkan-Sen (ligne de conversion), Kijun-Sen (ligne de base), Senkou Span A (ligne de conversion A), Senkou Span B (ligne de conversion B) et Chikou Span (ligne de décalage).
Les signaux de négociation sont générés sur la base de la combinaison des conditions suivantes:
Il va long quand toutes les conditions haussières sont remplies et court quand toutes les conditions baissières sont remplies.
Cette stratégie combine des indicateurs de tendance suivie et de surachat-survente pour identifier efficacement les tendances.
Quelques risques à noter pour cette stratégie:
Solution correspondante:
La stratégie peut être améliorée dans les domaines suivants:
Dans l'ensemble, cette stratégie d'équilibrage des tendances est un système de suivi des tendances fiable et robuste. Elle répond au défi clé du trading de tendances - équilibrer l'exactitude de l'identification des tendances et la fréquence de génération des transactions.
/*backtest start: 2023-11-16 00:00:00 end: 2023-11-20 08:00:00 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Ichimoku Kinko Hyo: ETH 3h Strategy by tobuno", overlay=true) //Inputs ts_bars = input(22, minval=1, title="Tenkan-Sen Bars") ks_bars = input(60, minval=1, title="Kijun-Sen Bars") ssb_bars = input(120, minval=1, title="Senkou-Span B Bars") cs_offset = input(30, minval=1, title="Chikou-Span Offset") ss_offset = input(30, minval=1, title="Senkou-Span Offset") long_entry = input(true, title="Long Entry") short_entry = input(true, title="Short Entry") //Volatility vollength = input(defval=2, title="VolLength") voltarget = input(defval=0.2, type=float, step=0.1, title="Volatility Target") Difference = abs((close - open)/((close + open)/2) * 100) MovingAverage = sma(Difference, vollength) highvolatility = MovingAverage > voltarget //////////////////////////////////////////////////////////////////////////////// // BACKTESTING RANGE // From Date Inputs fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) fromYear = input(defval = 2019, title = "From Year", minval = 1970) // To Date Inputs toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31) toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12) toYear = input(defval = 2020, title = "To Year", minval = 1970) // Calculate start/end date and time condition startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00) finishDate = timestamp(toYear, toMonth, toDay, 00, 00) time_cond = true //////////////////////////////////////////////////////////////////////////////// middle(len) => avg(lowest(len), highest(len)) // Ichimoku Components tenkan = middle(ts_bars) kijun = middle(ks_bars) senkouA = avg(tenkan, kijun) senkouB = middle(ssb_bars) //RSI change = change(close) gain = change >= 0 ? change : 0.0 loss = change < 0 ? (-1) * change : 0.0 avgGain = rma(gain, 14) avgLoss = rma(loss, 14) rs = avgGain / avgLoss rsi = 100 - (100 / (1 + rs)) // Plot Ichimoku Kinko Hyo plot(tenkan, color=#0496ff, title="Tenkan-Sen") plot(kijun, color=#991515, title="Kijun-Sen") plot(close, offset=-cs_offset+1, color=#459915, title="Chikou-Span") sa=plot(senkouA, offset=ss_offset-1, color=green, title="Senkou-Span A") sb=plot(senkouB, offset=ss_offset-1, color=red, title="Senkou-Span B") fill(sa, sb, color = senkouA > senkouB ? green : red, title="Cloud color") ss_high = max(senkouA[ss_offset-1], senkouB[ss_offset-1]) ss_low = min(senkouA[ss_offset-1], senkouB[ss_offset-1]) // Entry/Exit Signals tk_cross_bull = tenkan > kijun tk_cross_bear = tenkan < kijun cs_cross_bull = mom(close, cs_offset-1) > 0 cs_cross_bear = mom(close, cs_offset-1) < 0 price_above_kumo = close > ss_high price_below_kumo = close < ss_low rsi_bullish = rsi > 50 rsi_bearish = rs < 50 bullish = tk_cross_bull and cs_cross_bull and price_above_kumo and rsi_bullish and highvolatility bearish = tk_cross_bear and cs_cross_bear and price_below_kumo and rsi_bearish and highvolatility strategy.entry("Long", strategy.long, when=bullish and long_entry and time_cond) strategy.entry("Short", strategy.short, when=bearish and short_entry and time_cond) strategy.close("Long", when=bearish and not short_entry and time_cond) strategy.close("Short", when=bullish and not long_entry and time_cond)