
L’idée principale de cette stratégie est de négocier des retraits à court terme dans le sens d’une tendance à long terme. Plus précisément, utiliser la moyenne mobile simple à 200 jours pour déterminer la direction de la tendance à long terme et la moyenne mobile simple à 10 jours pour déterminer la direction de la tendance à court terme.
La stratégie utilise les moyennes mobiles simples à 200 jours et les moyennes mobiles simples à 10 jours pour déterminer la tendance du marché. Lorsque le prix franchit la ligne de 200 jours, il est considéré comme entrant dans le marché de la baisse. Dans le marché de la baisse, si le prix baisse vers la ligne de 10 jours, il est considéré comme entrant dans le marché de la baisse.
Plus précisément, lorsque les conditions suivantes sont remplies, il y a une entrée supplémentaire dans le jeu: le prix est supérieur à la ligne de 200 jours, le prix est inférieur à la ligne de 10 jours, il n’y a pas de position précédente. Lorsque les conditions suivantes sont remplies, le placement est fermé. Sortie du jeu: le prix est supérieur à la ligne de 10 jours, il y a une position à plusieurs têtes.
On peut voir que la logique de négociation de cette stratégie est principalement basée sur la fourche dorée de la courbe moyenne, avec des achats de retraite et des arrêts de suivi de tendance dans la direction de la tendance après la détermination de la courbe moyenne longue et courte, qui appartiennent à une stratégie de suivi de tendance typique.
Le plus grand avantage de cette stratégie est de suivre la tendance à faible coût de capital et de rechercher des gains supplémentaires. Les avantages spécifiques sont les suivants:
L’utilisation d’une combinaison de lignes moyennes longues et courtes pour déterminer la direction de la tendance des niveaux principaux et secondaires permet de localiser efficacement les opportunités de tendance des lignes moyennes et longues et d’éviter d’être induit en erreur par les tendances à court terme.
L’utilisation de la méthode de retrait à court terme permet de réduire au maximum le coût d’achat et d’obtenir ainsi une marge bénéficiaire plus élevée.
La mise en place d’un mécanisme de blocage FAILSAFE permet de contrôler efficacement les pertes individuelles et de protéger les fonds du compte.
Il permet de suivre les retraits de stop-loss, de tirer pleinement parti des opportunités de tendance de la ligne moyenne longue et d’obtenir un Alpha supplémentaire.
L’adoption d’une méthode de négociation purement mécanique, qui évite l’influence subjective des émotions, rend la stratégie plus facile à mettre en œuvre.
La stratégie présente principalement les risques suivants:
Risque de correspondance des données de retracement. Les conditions réelles du marché peuvent être différentes des données historiques, ce qui peut entraîner une distorsion de l’effet de la négociation sur le marché réel.
Risque de fausse rupture. La probabilité d’une inversion de la correction est élevée si le prix ne touche que la ligne moyenne, ce qui peut entraîner une accumulation de petites pertes.
Risque de renversement de tendance. Il est fréquent que la courbe moyenne et longue se renverse brusquement, ce qui peut entraîner de lourdes pertes.
Les mesures prises sont les suivantes:
Augmenter le nombre d’échantillons, en utilisant plus de données historiques pour la validation de la robustesse, afin de garantir la fiabilité des résultats.
Optimiser les paramètres, ajuster la combinaison des paramètres du système de régularisation pour assurer la qualité du signal de transaction.
Laissez une marge de manœuvre adéquate, laissez un peu de marge de manœuvre au prix et évitez les arrêts trop sensibles.
La stratégie peut être optimisée de la manière suivante:
L’ajout de conditions de filtrage, telles que le filtrage du volume des transactions, peut réduire efficacement les transactions inutiles déclenchées par les fausses percées.
La combinaison d’autres indicateurs, tels que KDJ, MACD, etc., peut améliorer la qualité des signaux de trading.
Test de différentes durées de tenue de position, optimisation des stratégies de stop-loss et de stop-loss, amélioration des indicateurs tels que le Sharp.
Les paramètres sont ajustés dynamiquement en fonction de la situation du marché, ce qui crée un mécanisme d’optimisation des paramètres adaptatifs, ce qui rend la stratégie plus robuste.
L’ajout d’un module de trading algorithmique, l’utilisation de méthodes telles que l’apprentissage automatique pour générer automatiquement des signaux de trading, réduit l’intervention humaine.
L’idée générale de cette stratégie est claire et facile à mettre en œuvre. Elle permet de suivre les tendances à long terme à faible coût et d’obtenir une stabilité Alpha. Cependant, il existe un risque de arbitrage avec une certaine probabilité, qui doit être optimisé pour améliorer la stabilité.
/*backtest
start: 2024-01-21 00:00:00
end: 2024-02-20 00:00:00
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/
// © irfanp056
// @version=5
strategy("Simple Pullback Strategy",
overlay=true,
initial_capital=100000,
default_qty_type=strategy.percent_of_equity,
default_qty_value=1000, // 100% of balance invested on each trade
commission_type=strategy.commission.cash_per_contract,
commission_value=0.005) // Interactive Brokers rate
// Get user input
i_ma1 = input.int(title="MA 1 Length", defval=200, step=10, group="Strategy Parameters", tooltip="Long-term MA")
i_ma2 = input.int(title="MA 2 Length", defval=10, step=10, group="Strategy Parameters", tooltip="Short-term MA")
i_stopPercent = input.float(title="Stop Loss Percent", defval=0.10, step=0.1, group="Strategy Parameters", tooltip="Failsafe Stop Loss Percent Decline")
i_lowerClose = input.bool(title="Exit On Lower Close", defval=false, group="Strategy Parameters", tooltip="Wait for a lower-close before exiting above MA2")
i_startTime = input(title="Start Filter", defval=timestamp("01 Jan 1995 13:30 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups")
i_endTime = input(title="End Filter", defval=timestamp("1 Jan 2099 19:30 +0000"), group="Time Filter", tooltip="End date & time to stop searching for setups")
// Get indicator values
ma1 = ta.sma(close, i_ma1)
ma2 = ta.sma(close, i_ma2)
// Check filter(s)
f_dateFilter = true
// Check buy/sell conditions
var float buyPrice = 0
buyCondition = close > ma1 and close < ma2 and strategy.position_size == 0 and f_dateFilter
sellCondition = close > ma2 and strategy.position_size > 0 and (not i_lowerClose or close < low[1])
stopDistance = strategy.position_size > 0 ? ((buyPrice - close) / close) : na
stopPrice = strategy.position_size > 0 ? buyPrice - (buyPrice * i_stopPercent) : na
stopCondition = strategy.position_size > 0 and stopDistance > i_stopPercent
// Enter positions
if buyCondition
strategy.entry(id="Long", direction=strategy.long)
if buyCondition[1]
buyPrice := open
// Exit positions
if sellCondition or stopCondition
strategy.close(id="Long", comment="Exit" + (stopCondition ? "SL=true" : ""))
buyPrice := na
// Draw pretty colors
plot(buyPrice, color=color.lime, style=plot.style_linebr)
plot(stopPrice, color=color.red, style=plot.style_linebr, offset=-1)
plot(ma1, color=color.blue)
plot(ma2, color=color.orange)