Cette stratégie juge la direction de la tendance en se basant sur la rupture des hauts et des bas périodiques.
La stratégie lit d'abord le cycle défini par l'utilisateur (quotidien, hebdomadaire, etc.) et les périodes de rétrospective. Ensuite, elle obtient les prix les plus élevés et les plus bas pour la période de rétrospective en fonction de ces paramètres. Par exemple, si elle est réglée sur le cycle quotidien et la période de rétrospective 1, elle prend les prix les plus élevés et les plus bas pour la journée précédente.
Dans le commerce réel, si le prix de clôture est supérieur ou égal au prix le plus bas de la période de rétrospective, il est jugé comme une percée à la hausse et il va long.
En capturant la direction de la tendance en traversant les hauts et les bas périodiques, cette stratégie appartient à une sorte de stratégie de suivi de tendance.
Les principaux avantages de cette stratégie sont les suivants:
Capturer la tendance après une forte consolidation en jugeant la direction basée sur les points de percée.
Simple et facile à comprendre, très adapté aux débutants pour apprendre et utiliser.
Facile à optimiser en ajustant les paramètres périodiques, applicables à différentes variétés.
Peut régler l'entrée inverse pour l'opération inverse, enrichissant l'utilisation de la stratégie.
Tracer des hauts et des bas périodiques pour faciliter le jugement et former une validation multiple.
Il y a aussi des risques:
Ne peut pas filtrer efficacement la volatilité latérale, éventuellement des erreurs multiples.
Il n'est pas possible de contrôler le stop loss, un certain degré de risque de perte existe.
En raison des coûts de négociation, le PnL réel peut varier.
Ne peut pas limiter la taille de la position, il existe un risque de sur-trading.
Pour lutter contre ces risques, des méthodes telles que la définition d'un stop loss, l'optimisation des conditions de filtration, le contrôle de la taille de la position peuvent être utilisées.
Les principales orientations d'optimisation sont les suivantes:
Ajout de mécanismes de filtrage pour éviter une ouverture fréquente lors d'une ouverture latérale.
Définir un stop loss ou un time stop loss pour contrôler le risque de perte unique et assurer la rentabilité globale.
Optimiser la taille des positions et la gestion de l'argent afin d'éviter une sur-trading et d'assurer la stabilité.
Tester les effets de différents paramètres périodiques et choisir les combinaisons optimales de paramètres.
Augmenter les modules de trading algorithmique, utiliser des algorithmes d'apprentissage automatique pour améliorer l'efficacité des décisions.
En résumé, cette stratégie de backtest haute basse révolutionnaire est simple à utiliser basée sur le suivi des tendances, adaptée aux débutants à apprendre, mais les risques d'être pris au piège existent. En ajoutant des optimisations comme des filtres, des arrêts, le contrôle de position, ces risques peuvent être réduits et les résultats de la stratégie améliorés. Il peut fournir des idées et des références pour nos recherches et améliorations ultérieures.
/*backtest start: 2023-01-01 00:00:00 end: 2024-01-07 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 03/07/2018 // This script shows a high and low period value. // Width - width of lines // SelectPeriod - Day or Week or Month and etc. // LookBack - Shift levels 0 - current period, 1 - previous and etc. // // You can change long to short in the Input Settings // WARNING: // - For purpose educate only // - This script to change bars colors. //////////////////////////////////////////////////////////// strategy(title="High and Low Levels Backtest", shorttitle="HL Levels", overlay = true) SelectPeriod = input("D", defval="D") LookBack = input(1, minval=0) reverse = input(false, title="Trade reverse") xHigh = request.security(syminfo.tickerid, SelectPeriod, high[LookBack]) xLow = request.security(syminfo.tickerid, SelectPeriod, low[LookBack]) vS1 = xHigh vR1 = xLow pos = iff(close > vR1, 1, iff(close < vS1, -1, nz(pos[1], 0))) possig = iff(reverse and pos == 1, -1, iff(reverse and pos == -1, 1, pos)) if (possig == 1) strategy.entry("Long", strategy.long) if (possig == -1) strategy.entry("Short", strategy.short) barcolor(possig == -1 ? red: possig == 1 ? green : blue )