Stratégie combinée d'indicateur directionnel et de moyenne mobile de coque


Date de création: 2024-01-04 17:23:06 Dernière modification: 2024-01-04 17:23:06
Copier: 0 Nombre de clics: 688
1
Suivre
1621
Abonnés

Stratégie combinée d’indicateur directionnel et de moyenne mobile de coque

Aperçu

La stratégie utilise une combinaison d’indicateurs dynamiques (DMI) et de moyennes mobiles de Hull (HMA) pour déterminer la direction du marché, l’HMA pour confirmer la force de la tendance et réaliser des transactions sans gestion du risque.

Principe de stratégie

  1. Calculer la portée réelle (TRUE RANGE), l’indicateur de mouvement à plusieurs têtes (DIPlus), l’indicateur de mouvement à vide (DIMinus) et l’indicateur de direction moyen (ADX).

  2. Calculer la moyenne des coques rapides et lentes.

  3. Le déclenchement est multiconditionnel: DIMinus sur DIPlus et slowhull sur fasthull.

  4. Les conditions de déclenchement sont: DIMinus passe par DIPlus et fasthull passe par slowhull。

  5. Les signaux de plus et de moins sont émis après avoir satisfait aux conditions de plus et de moins.

Analyse des avantages

Cette stratégie, combinée à la double confirmation des indicateurs de jugement de tendance DMI et Hull Equilibrium, permet d’identifier efficacement la direction de la tendance du marché et d’éviter la répétition des marchés à capitaux multiples et à capitaux vides. La gestion sans risque réduit la fréquence des transactions et le niveau de rentabilité global est bon à long terme.

Analyse des risques

Le plus grand risque de cette stratégie réside dans le fait qu’elle est définie sans perte et qu’elle ne permet pas de contrôler efficacement les pertes en cas de forte volatilité. En outre, l’espace d’optimisation des paramètres est limité et le manque de ciblage est également un inconvénient majeur.

Le risque peut être réduit par l’ajout d’un stop mobile et d’une combinaison de paramètres d’optimisation.

Direction d’optimisation

  1. Ajout d’un arrêt ATR pour un arrêt de trailing en utilisant l’amplitude réelle.

  2. Optimiser les paramètres du cycle de Hull pour trouver la combinaison optimale.

  3. Le paramètre d’ajustement dynamique est le seuil de la plus grande marge de vide.

  4. L’ajout de filtres tels que les indicateurs de quantité d’énergie assure la continuité de la tendance.

Résumer

La stratégie combinée de DMI et HMA est précise, simple et efficace, adaptée aux opérations sur les lignes moyennes et longues. Ajoutée à un arrêt approprié et à l’optimisation des paramètres, elle peut devenir un excellent système de suivi des tendances.

Code source de la stratégie
/*backtest
start: 2022-12-28 00:00:00
end: 2024-01-03 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/
// © Tuned_Official
//@version=4
strategy(title="DMI + HMA - No Risk Management", overlay = false, pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.025)

//Inputs
hullLen1 = input(title="Hull 1 length", type=input.integer, defval=29)
hullLen2 = input(title="Hull 2 length", type=input.integer, defval=2)
len = input(title="Length for DI", type=input.integer, defval=76)

//Calculations
TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0

SmoothedTrueRange = 0.0
SmoothedTrueRange := nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/len) + TrueRange
SmoothedDirectionalMovementPlus = 0.0
SmoothedDirectionalMovementPlus := nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/len) + DirectionalMovementPlus
SmoothedDirectionalMovementMinus = 0.0
SmoothedDirectionalMovementMinus := nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/len) + DirectionalMovementMinus

//Indicators
fasthull = hma(close, hullLen1)
slowhull = hma(close, hullLen2)
DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DX = abs(DIPlus-DIMinus) / (DIPlus+DIMinus)*100
ADX = sma(DX, len)

//Plots
plot(DIPlus, color=color.green, title="DI+")
plot(DIMinus, color=color.red, title="DI-")
plot(ADX, color=color.black, title="ADX")

//conditions
go_long = crossover(DIPlus, DIMinus) and fasthull > slowhull //crossover(fasthull, slowhull) and DIPlus > DIMinus
go_short = crossover(DIMinus, DIPlus) and fasthull < slowhull //crossunder(fasthull, slowhull) and DIMinus > DIPlus

//Entry
if strategy.position_size < 0 or strategy.position_size == 0
    strategy.order("long", strategy.long, when=go_long)

if strategy.position_size > 0 or strategy.position_size == 0
    strategy.order("Short", strategy.short, when=go_short)