Système de négociation quantitative adaptative de volatilité et de momentum (AVMQTS)

ATR MACD SMA TP SL
Date de création: 2024-11-27 14:20:24 Dernière modification: 2024-11-27 14:20:24
Copier: 1 Nombre de clics: 459
1
Suivre
1617
Abonnés

Système de négociation quantitative adaptative de volatilité et de momentum (AVMQTS)

Aperçu

La stratégie est un système de trading auto-adaptatif combinant des indicateurs de volatilité et de dynamique pour capturer les tendances du marché grâce à une combinaison synchrone de plusieurs indicateurs techniques. La stratégie utilise l’indicateur ATR pour surveiller les fluctuations du marché, le MACD pour juger de la dynamique de la tendance, tout en combinant l’indicateur de dynamique des prix pour confirmer les signaux de négociation, et dispose d’un mécanisme d’arrêt et de perte flexible. Le système est très adaptable et peut ajuster automatiquement la fréquence des transactions et le contrôle des positions en fonction des conditions du marché.

Principe de stratégie

La stratégie s’appuie principalement sur un triple système d’indicateurs comme logique de négociation centrale: d’abord, l’ATR mesure l’état de la volatilité du marché, fournissant une référence volatile pour la prise de décision de négociation; ensuite, l’utilisation de la croix de la fourche de l’indicateur MACD pour capturer les points de basculement de la tendance, la croisée des lignes rapides et lentes MACD est utilisée comme principal signal de déclenchement de la négociation; troisième, la vérification de la validation utilise l’indicateur de dynamique des prix pour confirmer la force de la tendance en observant les changements de prix au cours d’une période relativement antérieure. Le système intègre également une moyenne de 50 jours comme filtre de tendance, et seulement les instruments sont autorisés à faire plus sur la moyenne des prix, au contraire.

Avantages stratégiques

  1. Vérification croisée multi-indicateurs: la fiabilité des signaux de négociation est considérablement améliorée grâce à la synergie des indicateurs dans les trois dimensions de la volatilité, de la tendance et de la dynamique.
  2. Adaptabilité: la stratégie peut s’adapter à la dynamique des fluctuations du marché et s’adapter à différents environnements.
  3. Contrôle des risques: pourcentage de stop-loss et de stop-loss pour une gestion efficace du risque de chaque transaction.
  4. La fréquence des transactions est contrôlable: les transactions excessives sont évitées par la mise en place d’intervalles de transactions minimaux et d’un mécanisme d’alternance des signaux.
  5. La structure du système est claire: le code est hautement modulaire, les limites des modules fonctionnels sont clairement définies, ce qui facilite la maintenance et l’optimisation.

Risque stratégique

  1. Risque de choc du marché: Dans un marché de choc horizontal, plusieurs faux signaux peuvent être générés, entraînant des pertes continues.
  2. Risque de glissement: pendant les périodes de forte volatilité, le prix de transaction réel peut être très éloigné du prix de déclenchement du signal.
  3. Sensibilité des paramètres: la stratégie utilise plusieurs indicateurs techniques et la rationalité des paramètres affecte directement la performance de la stratégie.
  4. Dépendance de l’environnement du marché: les stratégies fonctionnent mieux dans les marchés où la tendance est évidente, mais peuvent être moins efficaces dans d’autres conditions.

Orientation de l’optimisation de la stratégie

  1. Introduction d’un mécanisme d’identification des environnements de marché: il est possible d’ajouter des indicateurs de force de tendance, en utilisant différentes configurations de paramètres dans différents environnements de marché.
  2. Optimiser le mécanisme de stop-loss: il est possible d’envisager d’ajuster le ratio de stop-loss en fonction de la dynamique ATR pour mieux s’adapter aux fluctuations du marché.
  3. Augmentation de la gestion des positions: il est recommandé d’introduire un système de gestion des positions dynamique basé sur la volatilité, afin de réduire la taille des transactions pendant les périodes de forte volatilité.
  4. Ajout d’autres conditions de filtrage: on peut envisager d’augmenter les indicateurs de filtrage tels que le trafic, la volatilité et la qualité du signal.

Résumer

La stratégie est un système de trading quantifié, rationnel et logiquement rigoureux, conçu pour capturer efficacement les tendances du marché grâce à l’utilisation combinée de multiples indicateurs techniques. Le système est soigneusement étudié en termes de contrôle des risques et d’exécution des transactions et présente une bonne utilité. Bien qu’il existe des risques potentiels, la stabilité et la rentabilité de la stratégie devraient être encore améliorées grâce à l’orientation optimisée proposée.

Code source de la stratégie
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("[ETH] Volatility & Momentum Adaptive Strategy", shorttitle="Definitive 1 day Ethereum Signal", overlay=true, initial_capital=10000, currency=currency.USD)

// === Input Parameters === //
trade_size = input.float(5, title="Trade Size (ETH)")
atr_length = input.int(8, minval=1, title="ATR Length")
macd_fast = input.int(8, minval=1, title="MACD Fast Length")
macd_slow = input.int(7, minval=1, title="MACD Slow Length")
macd_signal = input.int(9, minval=1, title="MACD Signal Length")
momentum_length = input.int(37, title="Momentum Length")
stop_loss_percent = input.float(9.9, title="Stop Loss Percentage (%)")
take_profit_percent = input.float(9.0, title="Take Profit Percentage (%)")
alternate_signal = input.bool(true, title="Alternate Buy/Sell Signals")

// === Indicators === //
// ATR to measure volatility
atr = ta.atr(atr_length)

// MACD for trend momentum
[macd_line, signal_line, _] = ta.macd(close, macd_fast, macd_slow, macd_signal)
macd_cross_up = ta.crossover(macd_line, signal_line)
macd_cross_down = ta.crossunder(macd_line, signal_line)

// Momentum
momentum = ta.mom(close, momentum_length)

// === Signal Control Variables === //
var bool last_signal_long = na
var int last_trade_bar = na
min_bars_between_trades = 5 // Adjust for minimal trade frequency control
time_elapsed = na(last_trade_bar) or (bar_index - last_trade_bar) >= min_bars_between_trades

// === Buy and Sell Conditions === //
// Buy when:
buy_signal = (macd_cross_up and momentum > 0 and close > ta.sma(close, 50) and time_elapsed)

// Sell when:
sell_signal = (macd_cross_down and momentum < 0 and close < ta.sma(close, 50) and time_elapsed)

// Enforce alternate signals if selected
if alternate_signal
    buy_signal := buy_signal and (na(last_signal_long) or not last_signal_long)
    sell_signal := sell_signal and (not na(last_signal_long) and last_signal_long)

// === Trade Execution === //
// Buy Position
if (buy_signal)
    if strategy.position_size < 0
        strategy.close("Short")
    strategy.entry("Long", strategy.long, qty=trade_size)
    last_signal_long := true
    last_trade_bar := bar_index

// Sell Position
if (sell_signal)
    if strategy.position_size > 0
        strategy.close("Long")
    strategy.entry("Short", strategy.short, qty=trade_size)
    last_signal_long := false
    last_trade_bar := bar_index

// === Stop Loss and Take Profit === //
if strategy.position_size > 0
    long_take_profit = strategy.position_avg_price * (1 + take_profit_percent / 100)
    long_stop_loss = strategy.position_avg_price * (1 - stop_loss_percent / 100)
    strategy.exit("TP/SL Long", from_entry="Long", limit=long_take_profit, stop=long_stop_loss)

if strategy.position_size < 0
    short_take_profit = strategy.position_avg_price * (1 - take_profit_percent / 100)
    short_stop_loss = strategy.position_avg_price * (1 + stop_loss_percent / 100)
    strategy.exit("TP/SL Short", from_entry="Short", limit=short_take_profit, stop=short_stop_loss)

// === Visual Signals === //
plotshape(series=buy_signal and time_elapsed, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=sell_signal and time_elapsed, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")