Cette stratégie utilise de manière exhaustive des indicateurs techniques tels que Ichimoku Kinko Hyo, Macd, Chaikin Money Flow et Tsi Oscillator pour juger avec précision de l'orientation des tendances du marché pour les transactions à court terme.
La stratégie utilise la ligne Tenkan-sen, la ligne Kijun-sen, les lignes Senkou Span A et Senkou Span B à Ichimoku pour juger des tendances des prix intraday. Dans le même temps, elle combine les signaux croisés des lignes moyennes mobiles rapides et lentes de Macd et l'indicateur de flux monétaire et l'indicateur d'oscillation pour déterminer l'afflux et l'afflux de fonds. Après le jugement complet de plusieurs indicateurs, les décisions d'achat et de vente sont prises.
Lorsque la ligne Tenkan-sen traverse au-dessus de la ligne Kijun-sen, le Chikou Span est au-dessus de l'axe 0, et le prix de clôture est au-dessus du nuage Ichimoku, c'est un signal haussier. Au contraire, lorsque la ligne Tenkan-sen traverse au-dessous de la ligne Kijun-sen, le Chikou Span est au-dessous de l'axe 0, et le prix de clôture est au-dessous du nuage, c'est un signal baissier. En même temps, la stratégie détecte si l'histogramme MACD est positif et si l'indicateur Chaikin Money Flow et l'oscillateur TSI sont positifs dans le même sens. Si les indicateurs sont haussiers dans le même sens, la position longue est ouverte en achetant, et si les indicateurs sont baissiers dans le même sens, la position courte est ouverte en vendant.
Lorsque l'indicateur émet un signal opposé à celui précédent, une transaction inverse est effectuée pour aplatir la position précédente.
L'utilisation d'une combinaison d'indicateurs multiples améliore la précision du jugement.
Les opérations à court terme suivent les fluctuations du marché en temps réel.
Pas d'intervention manuelle, trading algorithmique entièrement automatisé.
Le jugement combiné de plusieurs indicateurs étant en hausse ou en baisse en même temps présente un risque d'erreur de jugement.
Les opérations à court terme à haute fréquence comportent des commissions relativement élevées et il est difficile de détecter les tendances.
Aucun réglage de stop loss ne peut entraîner de plus grandes pertes.
Optimiser les combinaisons de paramètres, ajuster les paramètres de moyenne mobile pour les adapter aux différents cycles et variétés.
Augmenter le mécanisme de stop-loss et définir des lignes de stop-loss dynamiques associées à l'indicateur ATR.
Augmenter la gestion des positions, ajuster dynamiquement les proportions du volume des transactions.
Combiner la technologie d'apprentissage automatique pour optimiser les indicateurs et signaux.
Cette stratégie utilise de manière complète plusieurs indicateurs techniques pour déterminer les fluctuations de tendance en temps réel pour le trading à court terme à haute fréquence. Bien qu'il existe certains risques, elle peut être améliorée grâce à l'optimisation.
/*backtest start: 2023-10-01 00:00:00 end: 2023-10-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/ // © exlux99 //@version=4 strategy("Ichimoku with MACD/ CMF/ TSI", overlay=true, margin_long=0, margin_short=0) //Inputs ts_bars = input(10, minval=1, title="Tenkan-Sen Bars") ks_bars = input(30, minval=1, title="Kijun-Sen Bars") ssb_bars = input(52, minval=1, title="Senkou-Span B Bars") cs_offset = input(26, minval=1, title="Chikou-Span Offset") ss_offset = input(26, minval=1, title="Senkou-Span Offset") long_entry = input(true, title="Long Entry") short_entry = input(true, title="Short Entry") 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) 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 fast_length = input(title="Fast Length", type=input.integer, defval=17) slow_length = input(title="Slow Length", type=input.integer, defval=28) src = input(title="Source", type=input.source, defval=close) signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 5) sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=true) sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=true) // Calculating fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length) slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length) macd = fast_ma - slow_ma signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length) hist = macd - signal 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 //CMF lengthA = input(8, minval=1, title="CMF Length") ad = close==high and close==low or high==low ? 0 : ((2*close-low-high)/(high-low))*volume mf = sum(ad, lengthA) / sum(volume, lengthA) //TSI long = input(title="Long Length", type=input.integer, defval=8) short = input(title="Short Length", type=input.integer, defval=8) price = close double_smooth(src, long, short) => fist_smooth = ema(src, long) ema(fist_smooth, short) pc = change(price) double_smoothed_pc = double_smooth(pc, long, short) double_smoothed_abs_pc = double_smooth(abs(pc), long, short) tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc) bullish = tk_cross_bull and cs_cross_bull and price_above_kumo and hist > 0 and mf > 0.1 and tsi_value > 0 bearish = tk_cross_bear and cs_cross_bear and price_below_kumo and hist < 0 and mf < -0.1 and tsi_value < 0 strategy.entry("Long", strategy.long, when=bullish and long_entry) strategy.entry("Short", strategy.short, when=bearish and short_entry) strategy.close("Long", when=bearish and not short_entry) strategy.close("Short", when=bullish and not long_entry)