Cette stratégie de trading quantitatif, appelée “stratégie de super-indicateurs 7 en 1”, utilise une synthèse de 7 indicateurs techniques populaires, y compris les indices de force relative (RSI), les moyennes mobiles convergentes (MACD), les indices aléatoires (Stochastic), les bandes de Bollinger (SMA), les moyennes mobiles simples (SMA), les moyennes mobiles indicielles (EMA) et le volume (Volume). En intégrant les signaux de ces indicateurs ensemble, la stratégie vise à identifier les conditions de survente et de survente du marché afin de trouver les meilleures opportunités de vente.
Le principe central de cette stratégie est l’utilisation combinée de plusieurs indicateurs techniques pour obtenir un signal de trading plus complet et fiable. Chaque indicateur a sa propre méthode de calcul et son propre angle d’interprétation des mouvements du marché. Par exemple, le RSI mesure la vitesse et la force des variations de prix; le MACD juge les tendances en fonction de la croisée des moyennes mobiles; l’indicateur aléatoire détermine le niveau de survente en comparant les cours de clôture et de clôture avec la fourchette de prix sur une certaine période; les bandes de Brill s’arrêtent en fonction de la volatilité des prix.
La stratégie juge l’intensité du signal de plusieurs indicateurs en définissant des seuils. Un signal d’achat ou de vente est généré lorsque l’indicateur atteint certaines conditions de combinaison. La stratégie prend également en compte d’autres informations du marché, telles que le volume de transactions, pour confirmer la tendance des prix.
Le principal avantage de cette stratégie de super-indicateurs 7 en 1 réside dans sa globalité et sa flexibilité. En prenant en compte plusieurs indicateurs, la stratégie est capable de vérifier les signaux du marché sous différents angles et d’améliorer la probabilité de générer des opportunités de trading fiables.
En outre, la stratégie offre une large gamme d’options de paramètres que l’utilisateur peut ajuster en fonction de ses préférences et de son style de trading. Différentes combinaisons de paramètres permettent de générer différentes sensibilités et fréquences de signaux, adaptées à différentes conditions de marché. La stratégie intègre également des outils de gestion des risques tels que le stop loss et le filtrage des périodes de négociation, ce qui améliore encore sa praticité et sa contrôlabilité.
Bien que cette stratégie présente de nombreux avantages, elle présente également des risques potentiels. Premièrement, la performance de la stratégie dépend en grande partie de la rationalité des paramètres choisis. Une configuration inappropriée des paramètres peut entraîner une distorsion du signal, entraînant de mauvaises décisions de négociation.
En outre, dans des situations extrêmes, plusieurs indicateurs peuvent être défaillants en même temps, ce qui conduit à des erreurs de jugement de la stratégie. La stratégie peut également produire des signaux contradictoires fréquents dans des marchés en crise, ce qui conduit à une survente des transactions et à une épuisement rapide des fonds.
Afin d’améliorer encore la robustesse et le potentiel de revenus de la stratégie, l’optimisation peut être réalisée dans les domaines suivants:
Grâce à ces optimisations, la stratégie devrait être en mesure d’améliorer encore sa capacité à faire face à des environnements de marché complexes tout en conservant son avantage et en générant des bénéfices plus solides pour les utilisateurs.
Dans l’ensemble, la Stratégie des Super Indicateurs 7 en 1 est une stratégie de trading quantitative robuste et entièrement conçue. Elle combine habilement 7 indicateurs techniques couramment utilisés, capte le pouls du marché sous plusieurs angles et fournit aux traders des signaux de vente et d’achat fiables.
Cependant, la performance de la stratégie est toujours influencée par des facteurs tels que le choix des paramètres, l’environnement du marché, etc. Les traders doivent l’ajuster en fonction de leur propre expérience et des résultats de la rétroanalyse. En introduisant plus de dimensions d’indicateurs, en optimisant la logique de stop-loss et en affinant le filtrage des périodes de négociation, la stratégie devrait améliorer encore sa résistance au risque et son potentiel de profit.
/*backtest
start: 2024-04-22 00:00:00
end: 2024-05-22 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title='Super Indicator 7 in 1', shorttitle='Super Indicator 7 in 1', overlay=true, initial_capital=100, pyramiding=0, default_qty_value=10000, default_qty_type=strategy.cash)
// Defining indicator parameters
show_plots = input(false, title="Show Plots", group="Visibility")
show_indicators = input(false, title="Show Indicators", group="Visibility")
show_trades = input(true, title="Show Trades", group="Visibility")
show_labels = input(false, title="Show Labels", group="Visibility")
start_hour = input.int(0, title="Start Hour (24h format)", group="Time-Based Filter", minval=0, maxval=24)
end_hour = input.int(24, title="End Hour (24h format)", group="Time-Based Filter", minval=0, maxval=24)
stop_trading = input(false, "Stop Trading", group="Time-Based Filter")
trade_time = (hour >= start_hour and hour <= end_hour)
bgcolor(trade_time and (start_hour != 0 or end_hour != 24) ? color.new(color.blue, 90) : na)
volume_length = input.int(1, title="Volume SMA Length", group="Volume", minval=1, step=1)
sma_period = input.int(50, title="SMA Period", group="Moving Averages")
ema_period = input.int(50, title="EMA Period", group="Moving Averages")
bb_length = input.int(20, title='Bollinger Bands Length', group="Bollinger Bands")
mult = input.float(2.0, title='Bollinger Bands MultFactor', group="Bollinger Bands")
src = input(close, title='Bollinger Bands Source', group="Bollinger Bands")
rsi_length = input.int(14, title='RSI Length', group="RSI")
macd_fast_length = input.int(12, title='MACD Fast Length', group="MACD")
macd_slow_length = input.int(26, title='MACD Slow Length', group="MACD")
macd_signal_length = input.int(9, title='MACD Signal Smoothing', group="MACD")
stoch_length = input.int(14, title='Stochastic Length', group="Stochastic")
smoothK = input.int(3, title='Stochastic %K Smoothing', group="Stochastic")
smoothD = input.int(3, title='Stochastic %D Smoothing', group="Stochastic")
tp_percent = input.float(0.14, title="Take Profit (%)", group="Trade Settings", minval=0.01, step=0.01) / 100
sl_percent = input.float(0.25, title="Stop Loss (%)", group="Trade Settings", minval=0.01, step=0.01) / 100
// Calculating indicators
dev = mult * ta.stdev(src, bb_length)
upper = ta.sma(src, bb_length) + dev
lower = ta.sma(src, bb_length) - dev
rsi_value = ta.rsi(close, rsi_length)
stoch_value = ta.stoch(close, high, low, stoch_length)
[macd_line, signal_line, _] = ta.macd(close, macd_fast_length, macd_slow_length, macd_signal_length)
k = ta.sma(stoch_value, smoothK)
d = ta.sma(k, smoothD)
sma = ta.sma(close, sma_period)
ema = ta.ema(close, ema_period)
volume_ma = ta.sma(volume, volume_length)
volume_condition = volume >= volume_ma
// Signal definitions(-10%, Normal, +10% and ! failed indicator)
min_buy_signal = rsi_value < 33 and rsi_value > 30 and stoch_value < 22 and stoch_value > 20 and low < lower and macd_line < 0 and volume_condition
min_sell_signal = rsi_value > 63 and rsi_value < 70 and stoch_value > 72 and stoch_value < 80 and high > upper and macd_line > 0 and volume_condition
buy_signal = rsi_value < 30 and stoch_value < 20 and low < lower and macd_line < 0 and volume_condition
sell_signal = rsi_value > 70 and stoch_value > 80 and high > upper and macd_line > 0 and volume_condition
max_buy_signal = rsi_value < 27 and stoch_value < 18 and low < lower and macd_line < 0 and volume_condition
max_sell_signal = rsi_value > 77 and stoch_value > 80 and high > upper and macd_line > 0 and volume_condition
buy_condition = (rsi_value < 30 ? 1 : 0) + (stoch_value < 20 ? 1 : 0) + (macd_line < 0 ? 1 : 0) + (low < lower ? 1 : 0) + (volume_condition ? 1 : 0) == 4
sell_condition = (rsi_value > 70 ? 1 : 0) + (stoch_value > 80 ? 1 : 0) + (macd_line > 0 ? 1 : 0) + (high > upper ? 1 : 0) + (volume_condition ? 1 : 0) == 4
// Plotting buy and sell signals
plotshape(show_plots and min_buy_signal, style=shape.triangleup, location=location.belowbar, color=#00ffb7, size=size.small, title="Min Buy Signal")
plotshape(show_plots and min_sell_signal, style=shape.triangledown, location=location.abovebar, color=#efa803, size=size.small, title="Min Sell Signal")
plotshape(show_plots and buy_signal and not max_buy_signal, style=shape.triangleup, location=location.belowbar, color=#004cff, size=size.small, title="Buy Signal")
plotshape(show_plots and sell_signal and not max_sell_signal, style=shape.triangledown, location=location.abovebar, color=#ffff00, size=size.small, title="Sell Signal")
plotshape(show_plots and max_buy_signal, style=shape.triangleup, location=location.belowbar, color=#1eff00, size=size.small, title="Max Buy Signal")
plotshape(show_plots and max_sell_signal, style=shape.triangledown, location=location.abovebar, color=#ff0000, size=size.small, title="Max Sell Signal")
plotshape(show_plots and buy_condition and not min_buy_signal and not buy_signal and not max_buy_signal, style=shape.triangleup, location=location.belowbar, color=#ffffff, size=size.small, title="Buy Condition")
plotshape(show_plots and sell_condition and not min_sell_signal and not sell_signal and not max_sell_signal, style=shape.triangledown, location=location.abovebar, color=#ffffff, size=size.small, title="Sell Condition")
// Plotting moving averages
plot(show_indicators ? sma : na, color=#fc0000, linewidth=2, title="SMA")
plot(show_indicators ? ema : na, color=#00aaff, linewidth=2, title="EMA")
// Crossover labels for moving averages
BullCross = ta.crossover(ema, sma)
BearCross = ta.crossunder(ema, sma)
if (show_labels)
if (BullCross)
label.new(bar_index, sma, color=color.green, textcolor=color.white, style=label.style_cross, size=size.huge)
if (BearCross)
label.new(bar_index, sma, color=color.red, textcolor=color.white, style=label.style_cross, size=size.huge)
// Calculating take profit and stop loss
long_take_profit = close * (1 + tp_percent)
long_stop_loss = close * (1 - sl_percent)
short_take_profit = close * (1 - tp_percent)
short_stop_loss = close * (1 + sl_percent)
// Opening long and short orders based on signals
if (show_trades and trade_time and not stop_trading)
if (min_buy_signal or buy_signal or max_buy_signal or buy_condition)
strategy.entry("Open Long", strategy.long)
strategy.exit("TP/SL Long", limit=long_take_profit, stop=long_stop_loss)
if (min_sell_signal or sell_signal or max_sell_signal or sell_condition)
strategy.entry("Open Short", strategy.short)
strategy.exit("TP/SL Short", limit=short_take_profit, stop=short_stop_loss)