Stratégie de trading cyclique basée sur les tendances


Date de création: 2023-11-17 17:05:11 Dernière modification: 2023-11-17 17:05:11
Copier: 0 Nombre de clics: 551
1
Suivre
1617
Abonnés

Stratégie de trading cyclique basée sur les tendances

Aperçu

La stratégie de trading circulaire basée sur la tendance est une stratégie de trading quantitative basée sur des moyennes mobiles simples de 200 jours pour juger de la direction de la tendance. La stratégie offre deux modes “suivre la tendance à la hausse” et “suivre la tendance à la baisse” qui peuvent être choisis en fonction des préférences du trader. La stratégie permet au trader de personnaliser les points d’arrêt et d’arrêt, offrant une plus grande flexibilité.

Principe de stratégie

L’indicateur central de la stratégie est la moyenne mobile simple à 200 jours. La stratégie est divisée en deux modes:

  1. Suivre les tendances haussières: faire plus lorsque la clôture est supérieure à la moyenne mobile à 200 jours; faire moins lorsque le stop ou le stop déclenche.

  2. Suivre les tendances à la baisse: faire plus lorsque la clôture est inférieure à la moyenne mobile à 200 jours; faire moins lorsque le stop loss ou le stop-loss est déclenché.

Plus de conditions à l’adoptionlongConditionDéfinition de la variable, basée sur la relation entre le prix de clôture et la moyenne mobile à 200 jours.closeConditionDéfinition de la variable, basée sur la relation entre le stop loss, le stop loss et la moyenne mobile.

En particulier, si les conditions de la pluralité sont remplies, l’adoptionstrategy.entryLes conditions de clôture sont remplies et la transaction est acceptée.strategy.exitJe ne suis pas d’accord.

Avantages stratégiques

Cette stratégie présente les avantages suivants:

  1. La logique de transaction est simple et claire, facile à comprendre et à mettre en œuvre.

  2. Deux modèles sont proposés, permettant de choisir le modèle approprié en fonction des différents environnements de marché.

  3. Caractéristiques de risque-bénéfice qui peuvent être ajustées par des stratégies personnalisées de stop-loss et de stop-loss.

  4. L’indicateur technique bien connu, la moyenne mobile à 200 jours, a été utilisé pour déterminer la direction de la tendance.

  5. La génération automatique de signaux de négociation, sans intervention humaine, réduit le risque opérationnel.

Risque stratégique

La stratégie présente également les risques suivants:

  1. Le fait de dépendre trop d’un seul indicateur technique est susceptible de générer des signaux erronés. Vous pouvez envisager d’ajouter d’autres indicateurs à la vérification, tels que MACD, KDJ, etc.

  2. Les arrêts et arrêts sont trop petits et sont susceptibles d’être bloqués par les fluctuations du marché. S’ils sont trop importants, ils risquent de manquer le point de sortie idéal. Les paramètres doivent être testés et optimisés de manière appropriée.

  3. Si le signal est évalué en fonction du cours de clôture, il y a un écart de hausse/baisse. Il peut être envisagé de le modifier en fonction de la ligne K ou de la confirmation de la ligne K suivante après la génération du signal.

  4. L’impact des frais de transaction n’est pas pris en compte.

Optimisation de la stratégie

Cette stratégie peut être optimisée dans les directions suivantes:

  1. Ajouter des signaux de vérification d’autres indicateurs techniques pour éviter les signaux erronés. Par exemple, les indicateurs MACD.

  2. Optimiser les paramètres d’arrêt de perte pour trouver la meilleure combinaison de paramètres. Les paramètres de plusieurs groupes peuvent être comparés en faisant des tests de retour.

  3. Ajout de filtres de tendance, qui permettent de négocier uniquement lorsque la tendance est claire. Par exemple, l’introduction de l’indicateur ADX.

  4. Modifier le mode d’accès, en tenant compte des relations entre les entités de la ligne K ou en ajoutant un mécanisme de confirmation.

  5. L’impact du volume des transactions est pris en compte. La fiabilité du signal est vérifiée lors d’un grand nombre de transactions.

  6. Testez différents paramètres de moyenne mobile pour trouver le paramètre optimal.

Résumer

En résumé, l’idée générale de la stratégie est claire et compréhensible et présente une certaine valeur pratique. Cependant, il existe une certaine zone aveugle en s’appuyant uniquement sur un seul indicateur. Il est nécessaire d’ajouter plus de critères de jugement pour la vérification et d’optimiser les paramètres de test afin d’obtenir de meilleurs résultats dans le monde réel.

Code source de la stratégie
/*backtest
start: 2022-11-10 00:00:00
end: 2023-11-16 00:00:00
period: 1d
basePeriod: 1h
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/
// © I11L

//@version=5
strategy("Cycle Position Trading", overlay=true, pyramiding=1, default_qty_value=100000, initial_capital=100000, default_qty_type=strategy.cash, process_orders_on_close=false, calc_on_every_tick=false)

// Input for selecting the mode
mode = input.string("Buy Uptrend", options = ["Buy Uptrend", "Buy Downtrend"])

// Input for customizing stop loss and take profit levels
stopLoss = input.float(0.9, title="Stop Loss (SL) level", step=0.01)
takeProfit = input.float(1.1, title="Take Profit (TP) level", step=0.01)

// Calculate the 200-day Simple Moving Average (SMA)
sma = ta.sma(close, 200)

// Plot the SMA on the chart
plot(sma)

// Define the conditions for entering a long position based on the selected mode
longCondition = mode == "Buy Uptrend" ? close > sma and close[5] > sma : close < sma

// Define the conditions for closing a position based on the selected mode
closeCondition = mode == "Buy Uptrend" ? (strategy.position_avg_price * stopLoss > close or strategy.position_avg_price * takeProfit < close or close < sma * 0.95) : (strategy.position_avg_price * stopLoss > close or strategy.position_avg_price * takeProfit < close or close > sma * 1.05)

// Execute a long position if the longCondition is met
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

// Close the position if the closeCondition is met
if (closeCondition)
    strategy.exit("Exit", limit = close)