Stratégie de réintégration dynamique

Auteur:ChaoZhang est là., Date: le 19 décembre 2023 13:56:55
Les étiquettes:

img

Résumé

Cette stratégie est un système de trading d'achat uniquement qui génère des signaux d'achat basés sur des croisements de moyennes mobiles et l'indice hebdomadaire du canal de marchandises (CCI) ou l'indice directionnel moyen hebdomadaire (ADX).

La stratégie permet également une réentrée dynamique, ce qui signifie qu'elle peut ouvrir de nouvelles positions longues si le prix dépasse les trois moyennes mobiles après une sortie.

Principe de stratégie

Le script définit les conditions pour générer des signaux d'achat. Il vérifie deux conditions pour un signal d'achat valide:

  • La moyenne mobile rapide dépasse la moyenne mobile lente
  • L'utilisateur peut choisir de filtrer les transactions en utilisant le CCI hebdomadaire ou l'ADX hebdomadaire

Rentrée dynamique:S'il n'y a pas de position longue active et que le prix est supérieur à toutes les trois moyennes mobiles, une nouvelle position longue est ouverte.

Condition de sortie:Si le prix de clôture tombe en dessous de la troisième moyenne mobile, le script ferme la position longue.

Analyse des avantages

Les avantages de cette stratégie sont les suivants:

  1. L'utilisation de plusieurs indicateurs techniques pour filtrer les signaux réduit les faux signaux
  2. Le mécanisme de réentrée dynamique maximise la capture des tendances
  3. Le fait d'être long-only évite les risques de shorting

Analyse des risques

Les risques de cette stratégie comprennent:

  1. Il y a un risque de fouets.
  2. Les temps de rétention prolongés peuvent être trop longs, nécessitant des arrêts
  3. Des paramètres mal réglés peuvent entraîner des transactions trop fréquentes

Les solutions:

  1. Utiliser de meilleures combinaisons de paramètres et d'indicateurs pour filtrer
  2. Définir des pertes d'arrêt raisonnables
  3. Ajustez les paramètres pour assurer la stabilité

Directions d'optimisation

Cette stratégie peut être optimisée par:

  1. Tester plus de combinaisons d'indicateurs techniques pour trouver un meilleur moment d'entrée
  2. Optimisation des paramètres pour trouver les meilleures combinaisons de paramètres
  3. Ajout de mécanismes de stop loss pour contrôler les pertes uniques
  4. Ajout d'un dimensionnement des positions à l'augmentation/diminution des positions en fonction des conditions du marché

Résumé

Cette stratégie dynamique de re-entry buy-only intègre plusieurs indicateurs techniques pour déterminer le moment de l'entrée et adopte une conception dynamique de re-entry pour suivre les tendances en temps réel.


/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Buy Only Strategy with Dynamic Re-Entry and Exit", overlay=true)

// Input Parameters
fast_length = input(20, title="Fast Moving Average Length")
slow_length = input(30, title="Slow Moving Average Length")
third_ma_length = input(100, title="Third Moving Average Length")
cci_period = input(14, title="CCI Period for Weekly CCI")
use_cci = input(true, title="Use CCI for Entry")
use_adx = input(true, title="Use ADX for Entry")
adx_length = input(14, title="ADX Length")
adx_threshold = input(25, title="ADX Threshold")

// Calculate Moving Averages
fast_ma = ta.sma(close, fast_length)
slow_ma = ta.sma(close, slow_length)
third_ma = ta.sma(close, third_ma_length)

// Weekly Commodity Channel Index (CCI) with user-defined period
weekly_cci = request.security(syminfo.tickerid, "W", ta.cci(close,  cci_period))

// Weekly Average Directional Index (ADX)
dirmov = hlc3
plus = ta.change(dirmov) > 0 ? ta.change(dirmov) : 0
minus = ta.change(dirmov) < 0 ? -ta.change(dirmov) : 0
trur = ta.rma(ta.tr, adx_length)
plusDI = ta.rma(plus, adx_length) / trur * 100
minusDI = ta.rma(minus, adx_length) / trur * 100
sum = plusDI + minusDI
DX = sum == 0 ? 0 : math.abs(plusDI - minusDI) / sum * 100
ADX = ta.rma(DX, adx_length)

// Entry Conditions (Buy Only and Weekly CCI > 100 and/or Weekly ADX > 25)
cci_condition = use_cci ? (weekly_cci > 100) : false
adx_condition = use_adx ? (ADX > adx_threshold) : false
long_condition = ta.crossover(fast_ma, slow_ma) and (cci_condition or adx_condition)

// Exit Condition and Dynamic Re-Entry
exit_condition = close < third_ma
re_entry_condition = close > fast_ma and close > slow_ma and close > third_ma and weekly_cci > 100

// Entry and Exit Signals
strategy.entry("Long", strategy.long, when=long_condition)
strategy.close("Long", when=exit_condition)

// Dynamic Re-Entry and Exit
if strategy.position_size == 0 and re_entry_condition
    strategy.entry("Long", strategy.long)

if strategy.position_size > 0 and close < third_ma
    strategy.close("Long")

// Plot Weekly CCI and ADX for reference
plot(weekly_cci, title="Weekly CCI", color=color.orange)
plot(ADX, title="Weekly ADX", color=color.blue)


Plus de