Cet article présente principalement une stratégie de trading quantitative appelée
La logique de négociation de cette stratégie est très simple et claire.
Utilisez le croisement de la SMA à 14 périodes et de la SMA à 28 périodes comme signal pour long et court. Lorsque la SMA à 14 périodes dépasse la SMA à 28 périodes, allez long. Lorsque la SMA à 14 périodes dépasse la SMA à 28 périodes, allez court.
Calculez l'indicateur ATR et multipliez-le par un facteur pour obtenir la position de profit dynamique. Par exemple, définissez la longueur de l'ATR à 7, le multiplicateur à 1,5, puis la largeur du canal de profit dynamique est 1,5 fois l'ATR à 7 périodes.
Lorsque la direction de la position est longue, additionner le prix élevé et la largeur du canal de prise de profit dynamique pour obtenir la ligne de prise de profit longue. Lorsque la direction de la position est courte, soustraire la largeur du canal de prise de profit dynamique du prix bas pour obtenir la ligne de prise de profit courte.
Une fois que le prix dépasse cette ligne de prise de profit dynamique, prenez le profit pour sortir immédiatement.
Grâce aux étapes ci-dessus, cette stratégie réalise un effet simple mais efficace de suivi des bénéfices et de prise de profit rapide. Le canal ATR fournit la capacité d'ajustement dynamique pour la ligne de prise de profit, tandis que la condition de 1 bar nouvellement ajoutée garantit que la ligne de prise de profit n'est déclenchée que dans des conditions de marché soudaines favorables. Cela peut réduire efficacement la sortie prématurée due à la prise de profit.
La stratégie de négociation dynamique de retrait de bénéfices présente les avantages suivants:
L'idée est simple et claire, facile à comprendre et à mettre en œuvre, adaptée à l'apprentissage des débutants.
L'ATR dynamique de prise de profit peut suivre automatiquement les bénéfices et éviter de laisser les bénéfices sur la table.
L'ajout d'une condition haute/basse d'un bar empêche de tirer profit des mouvements plus petits.
La longueur et le multiplicateur de l'ATR peuvent être ajustés pour ajuster le degré de prise de profit.
Peut sortir rapidement pour capturer les mouvements de prix favorables.
La valeur de l'épargne est calculée en fonction de l'évolution de la valeur de l'épargne.
Cette stratégie comporte également certains risques:
L'expansion soudaine de l'ATR peut entraîner une sortie prématurée des bénéfices.
Ne peut pas filtrer efficacement le bruit du marché, sujette à de faux signaux.
S'appuyer uniquement sur le croisement SMA pour la prise de décision, inefficace pour des situations de marché complexes.
Aucun mécanisme de stop loss pour limiter efficacement les pertes.
Le paramètre par défaut peut ne pas convenir à tous les produits, une optimisation est nécessaire.
Pour réduire les risques susmentionnés, nous pouvons optimiser les aspects suivants:
Ajouter des règles de filtrage basées sur d'autres indicateurs pour éliminer les faux signaux.
Ajouter des stratégies de stop loss pour contrôler strictement les pertes par transaction.
Optimiser les paramètres à l'aide de l'analyse de marche vers l'avant.
Optimiser séparément les paramètres pour différents produits.
Augmenter les modèles d'apprentissage automatique pour des décisions plus intelligentes.
Sur la base de l'analyse des risques, les orientations d'optimisation comprennent principalement:
Ajouter un filtre de signal: Ajoutez des règles de filtrage basées sur des indicateurs tels que MACD, Bollinger Band, etc. après le signal pour éviter le bruit.
Ajouter la ligne stop-lossL'exposition au risque est calculée sur la base de l'exposition au risque.
Optimisation des paramètres: Optimiser des paramètres tels que la longueur ATR, le multiplicateur ATR en utilisant l'apprentissage automatique.
Réglage des risques: dimensionnement des positions, paramètres de risque basés sur différents produits.
Modèle de fusion: Combinez cette stratégie avec l'apprentissage automatique, les réseaux de neurones pour améliorer la précision.
Intervention manuelle: autoriser la suppression manuelle des niveaux de prise de profit/arrêt de perte à des moments critiques.
Avec l'optimisation dans les directions ci-dessus, la rentabilité et la stabilité de la stratégie peuvent être grandement améliorées.
En résumé, la
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Peter_O //@version=5 strategy("TrailingTakeProfit example", overlay=true, margin_long=100, margin_short=100, default_qty_value = 1, initial_capital = 100) longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28)) shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28)) if longCondition strategy.entry("Long", strategy.long, comment="long", alert_message="long") if shortCondition strategy.entry("Short", strategy.short, comment="short", alert_message="short") atr_length=input.int(7, title="ATR Length") atr_multiplier = input.float(1.5, title="ATR Multiplier") atr_multiplied = atr_multiplier * ta.atr(atr_length) ttp_top_bracket = strategy.position_size>0 ? high[1]+atr_multiplied : na ttp_bottom_bracket = strategy.position_size<0 ? low[1]-atr_multiplied : na plot(ttp_top_bracket, title="ttp_top_bracket", color=color.lime, style=plot.style_linebr, offset=1) plot(ttp_bottom_bracket, title="ttp_bottom_bracket", color=color.red, style=plot.style_linebr, offset=1) strategy.exit("closelong", from_entry="Long", limit=ttp_top_bracket, alert_message = "closelong") strategy.exit("closeshort", from_entry="Short", limit=ttp_bottom_bracket, alert_message = "closeshort") // var table alertsDisplayTable = table.new(position.top_right, 1, 5, color.black) // if barstate.islastconfirmedhistory // table.cell(alertsDisplayTable, 0, 0, "TradingConnector-compatible alerts sent", text_color=color.white) // table.cell(alertsDisplayTable, 0, 1, "at Long Entry: long", text_color=color.white) // table.cell(alertsDisplayTable, 0, 2, "at Short Entry: short", text_color=color.white) // table.cell(alertsDisplayTable, 0, 3, "at Long Exit: closelong", text_color=color.white) // table.cell(alertsDisplayTable, 0, 4, "at Short Exit: closeshort", text_color=color.white)