Stratégie de trading bidirectionnelle avec indice directionnel


Date de création: 2023-12-19 14:13:52 Dernière modification: 2023-12-19 14:13:52
Copier: 0 Nombre de clics: 669
1
Suivre
1621
Abonnés

Stratégie de trading bidirectionnelle avec indice directionnel

Aperçu

Cette stratégie permet de réaliser des transactions bidirectionnelles sur des marchandises en calculant l’indice de mouvement des marchandises ((DI) et en combinant les paramètres de restriction. Faites plus lorsque DI+ est supérieur à DI- un paramètre de restriction et faites moins lorsque DI- est supérieur à DI+ un paramètre de restriction.

Principe de stratégie

L’indicateur central de la stratégie est l’indicateur dynamique ((DI)). Le DI est calculé par la formule suivante:

DI+ = (DM+ / vrai rayon) * 100 DI- est égal à (DM- / vraie portée) x 100

La gamme réelle représente la volatilité récente en calculant la valeur maximale pour les trois jours de hauts, de bas et de fermetures d’hier.

Selon la définition de DI, lorsque DI+ > DI- indique que la force aérienne est supérieure à la force aérienne, elle appartient au marché aérien. Lorsque DI- > DI+ indique que la force aérienne est supérieure à la force aérienne, elle appartient au marché aérien.

La stratégie utilise cette caractéristique pour définir un paramètre de limitation. Lorsque DI + est supérieur à DI - un paramètre de limitation, jugez que le marché est actuellement en tête, faites plus; lorsque DI - est supérieur à DI + un paramètre de limitation, jugez que le marché est actuellement vide, faites vide.

Par exemple, si le paramètre de restriction est défini sur 3, la règle de transaction spécifique est:

  1. Lorsque DI+ - DI- > 3, faites plus
  2. Désactiver lorsque DI- - DI+ > 3

Étant donné qu’il y a souvent une plus petite fluctuation de la différence entre DI+ et DI- , la mise en place de paramètres de restriction permet de filtrer certains signaux de transaction sans orientation évidente, réduisant ainsi les transactions inutiles, ce qui est un avantage de la stratégie.

Analyse des avantages

Les principaux avantages de cette stratégie sont les suivants:

  1. L’utilisation du DI pour juger de la situation est orientée et fiable.

DI juge directement le mouvement des marchés en calculant le rapport de force entre les deux parties polyvalentes, sans algorithmes complexes tels que la correspondance de courbe, la théorie est simple et fiable.

  1. Les paramètres de restriction permettent de filtrer efficacement les signaux

En limitant les paramètres de filtrage, il n’y a pas de fluctuation de petite taille apparemment directionnelle, choisissez uniquement les segments de marché clairement orientés vers la direction la plus forte pour négocier, éviter d’être piégé.

  1. Mise en place d’une transaction automatique dans les deux sens

Les positions libres peuvent être automatiquement basées sur les indicateurs DI, sans jugement manuel, ce qui réduit la difficulté de la transaction.

  1. Période de transaction personnalisable

Prise en charge des paramètres permettant de négocier uniquement dans une plage de dates personnalisée, de liquider automatiquement la position à la fin, de la flexibilité et de la commodité.

  1. Vous pouvez choisir de faire plus ou de faire moins, selon les circonstances.

Le commutateur multifonction permet de choisir un signal unidirectionnel et d’adapter le système à différents environnements de marché.

Analyse des risques

Cette stratégie comporte aussi des risques:

  1. Possibilité d’une fausse détection

Lorsqu’il y a une forte volatilité sur le marché, le DI peut émettre un faux signal à court terme, entraînant l’échec de la transaction. Il est nécessaire de combiner d’autres indicateurs pour vérifier.

  1. Les paramètres de restriction sont mal définis

Les paramètres de restriction trop grands ou trop petits peuvent entraîner une surabondance ou une surabondance de signaux de trading et doivent être ajustés en fonction du marché.

  1. On ne peut pas juger de la fin de la tendance

Le DI ne peut juger que la direction de la tendance actuelle, il ne peut pas juger si la tendance est terminée ou inversée et nécessite une combinaison d’autres indicateurs.

Les solutions pour faire face aux risques sont:

  1. Filtrage des signaux DI avec des indicateurs tels que les moyennes mobiles

  2. Adaptation des paramètres de restriction en fonction des résultats des retours

  3. Les données de Volumes, MACD et autres ont été utilisées pour déterminer si la tendance est en train de s’inverser.

Direction d’optimisation

Cette stratégie peut être optimisée de la manière suivante:

  1. Indicateurs de tendance associés à d’autres indicateurs de tendance, tels que le graphique de l’opinion publique

Les indicateurs plus intuitifs de jugement de la force aérienne, tels que les diagrammes de pluie et d’opinion publique, peuvent être combinés avec le DI pour améliorer la précision de jugement.

  1. Adhérer à une stratégie de stop loss

Les points d’arrêt mobiles, les points d’arrêt temporels ou les points d’arrêt de taux permettent de bloquer les bénéfices et de réduire les pertes.

  1. Adaptation des paramètres pour des variétés spécifiques

L’ajustement des paramètres de restriction et du temps de négociation en fonction des caractéristiques de négociation des différentes variétés peut améliorer l’efficacité de la stratégie.

  1. Optimisation dynamique à l’aide de l’apprentissage automatique

Appliquer des techniques telles que l’apprentissage par renforcement et l’optimisation des paramètres du signal sur disque dur.

Résumer

La stratégie est simple et pratique dans l’ensemble. Elle utilise les méthodes de calcul de DI pour déterminer la direction des tendances; elle limite les paramètres de filtrage des signaux; elle permet des transactions bidirectionnelles, mais aussi en plus ou en moins; elle prend en charge la définition des périodes de négociation. Les principaux avantages sont une grande fiabilité et un filtre efficace.

Code source de la stratégie
/*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=3
strategy("Noro's DI Strategy", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
len = input(title="Length", defval=14)
limit = input(3, title = "limit, %")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//DI
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
SmoothedDirectionalMovementPlus = 0.0
SmoothedDirectionalMovementMinus = 0.0
SmoothedTrueRange := nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/len) + TrueRange
SmoothedDirectionalMovementPlus := nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/len) + DirectionalMovementPlus
SmoothedDirectionalMovementMinus := nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/len) + DirectionalMovementMinus
DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100

//Trend
trend = 0
trend := DIPlus > DIMinus + limit ? 1 : DIPlus < DIMinus - limit ? -1 : trend[1]

//Background
col = trend == 1 ? lime : red
bgcolor(col, transp = 80)

//Lines
plot(DIPlus, color=lime, title="DI+", linewidth = 3)
plot(DIMinus, color=red, title="DI-", linewidth = 3)

//Trading
size = strategy.position_size
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]
if trend == 1
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if trend == -1
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()