
Cette stratégie utilise une combinaison d’indicateurs techniques tels que la table d’équilibre à vue, l’indicateur Macd, l’indicateur de flux d’argent Chaikin et l’indicateur de choc Tsi pour déterminer avec précision la direction des tendances du marché et effectuer des transactions à court terme.
La stratégie utilise des indicateurs tels que l’horizon, la ligne de référence et la ligne de tête du tableau d’équilibre à première vue pour déterminer la tendance des prix au cours de la journée. En combinaison avec le signal de croisement de la ligne moyenne rapide et lente de Macd, ainsi que l’indicateur de flux d’argent et l’indicateur de choc pour déterminer les flux d’argent.
Lorsque la ligne de référence traverse l’horizon, la ligne de préférence est au-dessus de l’axe 0 et le prix de clôture est au-dessus du nuage de l’équilibre au premier coup d’œil. Inversement, lorsque la ligne de référence traverse l’horizon et la ligne de préférence est en dessous de l’axe 0, le prix de clôture est en dessous du nuage. La stratégie détecte simultanément si le graphique vertical de Macd est positif et si l’indicateur de flux d’or de Chaikin et l’indicateur de choc sont positifs.
Lorsque l’indicateur émet un signal opposé à celui précédent, effectuez une transaction inversée avant de niveler la position.
L’utilisation d’une combinaison d’indicateurs permet d’améliorer l’exactitude des jugements.
Les opérations en ligne courte suivent les fluctuations du marché en temps réel.
Les transactions sont effectuées par des algorithmes entièrement automatisés, sans intervention humaine.
Les jugements de plusieurs indicateurs à la hausse ou à la baisse sont susceptibles d’entraîner un risque de jugement erroné. Des conditions de jugement partielles peuvent être assouplies de manière appropriée, ce qui réduit le taux d’erreur.
Les courts-circuits à haute fréquence ont des frais de transaction plus élevés et sont difficiles à suivre. Il est possible de prolonger le cycle de détention de la position de manière appropriée et de rechercher des gains supplémentaires pour compenser les coûts.
Les paramètres sans perte peuvent entraîner des pertes plus importantes. Les paramètres sans perte peuvent être combinés avec l’ATR pour définir un point de perte approprié ou un arrêt mobile.
Optimiser les combinaisons de paramètres. Adapter les paramètres de la ligne moyenne pour les différentes périodes et variétés.
Augmentation du mécanisme de stop-loss. Mise en place d’une ligne de stop-loss mobile en combinaison avec les indicateurs ATR.
Augmentation de la gestion des positions. Adaptation dynamique du volume des transactions.
Les indicateurs et les signaux sont optimisés en combinaison avec l’apprentissage automatique.
Cette stratégie utilise un ensemble d’indicateurs techniques pour évaluer les fluctuations de tendance en temps réel et effectuer des transactions sur des courts-circuits à haute fréquence. Bien qu’il existe un certain risque, il est possible de l’améliorer par l’optimisation. La stratégie mérite une étude plus approfondie et une vérification en laboratoire pour réduire le risque de transaction en augmentant les arrêts et la gestion des positions.
/*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)