Cette stratégie génère des signaux de trading basés sur le croisement de l'indicateur directionnel positif (DI+) et de l'indicateur directionnel négatif (DI-) calculé à partir de la plage moyenne vraie (ATR).
Calculer l'ATR ((14)): Calculer la fourchette moyenne réelle au cours des 14 derniers jours en utilisant les prix hauts, bas et proches.
Calculer le DI+ et le DI-:
La valeur de l'indicateur de fréquence est calculée en fonction de la fréquence à laquelle l'indicateur de fréquence est utilisé.
La valeur de l'indicateur de fréquence est calculée en fonction de la fréquence de l'indicateur de fréquence.
où UP est la différence entre le niveau le plus élevé actuel et le niveau le plus bas précédent, DOWN est la différence entre le niveau le plus bas actuel et le niveau le plus bas précédent, N est la période de paramètre, par défaut à 14, et ATNR est l'ATR calculé à partir de l'étape 1.
Déterminer l'entrée et la sortie:
Lorsque DI+ traverse DI-, un signal d'achat est généré.
Lorsque DI+ passe sous DI-, un signal de vente est généré.
Mettez un stop-loss et un profit:
Le prix d'entrée moins ATR multiplié par le multiplicateur de stop loss
Le prix d'entrée plus ATR multiplié par le multiplicateur de prise de profit
Le prix d'entrée plus ATR multiplié par le multiplicateur de stop loss
Le prix d'entrée moins ATR multiplié par le multiplicateur de prise de profit
L'utilisation du croisement DI+/DI- pour déterminer l'inversion de tendance fournit un signal opportun pour une nouvelle direction de tendance.
L'ATR, en tant qu'indicateur dynamique stop loss/take profit, peut fixer des niveaux raisonnables en fonction de la volatilité du marché.
La stratégie comporte peu de paramètres et est facile à comprendre et à mettre en œuvre.
Les résultats des tests antérieurs montrent que cette stratégie a un facteur de profit positif et surpasse les achats et les détentions.
Risque de faux signaux lié au croisement de DI
Stop loss/take profit trop près
Inefficace sur le marché de l'intervalle
Risque de recours
Ajoutez des filtres comme la moyenne mobile pour éviter les faux signaux dans les périodes de plage.
Mettre en œuvre une taille de position comme la fraction fixe ou Martingale pour contrôler le tirage et augmenter la rentabilité.
Optimiser les paramètres ATR afin de faire correspondre la volatilité des différents instruments de négociation.
Optimisation des paramètres sur la période DI, la période ATR, le multiplicateur ATR, etc. pour trouver la combinaison optimale.
Ajoutez une logique de nuit et de session pour exécuter la stratégie 24 heures sur 24.
Il s'agit d'une stratégie simple et pratique générant des signaux de DI crossover et définissant un stop loss/take profit dynamique avec ATR. Avec peu de paramètres, il est facile à tester et à optimiser. Mais DI crossover est moins efficace pendant la consolidation. À l'avenir, combiner des filtres supplémentaires est le principal domaine d'amélioration. Dans l'ensemble, cette stratégie démontre une performance stable adaptée au day trading à court terme.
/*backtest start: 2022-11-06 00:00:00 end: 2023-11-12 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/ // © TheHulkTrading //@version=4 strategy("DI Crossing Daily Straregy HulkTrading", overlay=true) // ATR Multiplier. Recommended values between 1..4 atr_multiplier = input(1, minval=1, title="ATR Multiplier") //Length of DI. Recommended default value = 14 length = input(14, minval=1, title="Length di") up = change(high) down = -change(low) range = rma(tr, 14) //DI+ and DI- Calculations di_plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, length) / range) di_minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, length) / range) //Long and short conditions longCond = crossover(di_plus,di_minus) shortCond = crossunder(di_plus,di_minus) //Stop levels and take profits stop_level_long = strategy.position_avg_price - atr_multiplier*atr(14) take_level_long = strategy.position_avg_price + 2*atr_multiplier*atr(14) stop_level_short = strategy.position_avg_price + atr_multiplier*atr(14) take_level_short = strategy.position_avg_price - 2*atr_multiplier*atr(14) //Entries and exits strategy.entry("Long", strategy.long, when=longCond) strategy.exit("Close Long","Long", stop=stop_level_long, limit = take_level_long) strategy.entry("Short", strategy.short, when=shortCond) strategy.exit("Close Short","Short", stop=stop_level_short, limit = take_level_short)