Stratégie clé de retournement de marché


Date de création: 2023-12-15 10:37:01 Dernière modification: 2023-12-15 10:37:01
Copier: 0 Nombre de clics: 754
1
Suivre
1621
Abonnés

Stratégie clé de retournement de marché

Aperçu

Cette stratégie utilise le principe de rupture de l’indicateur de William, combiné à une ligne K de forme spécifique, pour concevoir un modèle de placement et de placement de positions ouvertes et fermées de manière efficace, permettant de faire des positions ouvertes et fermées avec précision aux points clés du renversement de la tendance, de capturer les tendances de la courte ligne moyenne et de tirer un gain supplémentaire.

Principe de stratégie

Cette stratégie utilise les points de déformation de l’indicateur William pour juger du signal de renversement. Lorsqu’une déformation supérieure ou inférieure se produit, un signal de transaction est généré si elle est conforme à la direction de l’entité de la ligne K.

Plus précisément, la stratégie définit un indicateur personnalisé WMX Williams Fractals. L’indicateur utilise une fonction de facteur pour déterminer le top-type ((upFractal) et le bottom-type ((dnFractal) }}.

La logique de classement est la suivante: le plus haut de la ligne K actuelle est supérieur au plus haut de la ligne K précédente n-racine (n étant un paramètre modifiable), ce qui crée un classement de rupture vers le haut.

La logique de découpage est la suivante: la valeur minimale de la ligne K actuelle est inférieure à la valeur minimale de la ligne K précédente de n racines, formant ainsi une découpage de rupture en dessous.

Après avoir obtenu une classification supérieure et une classification inférieure, il faut déterminer si elles ont changé, c’est-à-dire de rien à rien ou de quelque chose à rien. C’est le moment où la classification vient de se former, ce qui signifie qu’il y a plus de chances de renversement.

Le signal de transaction spécifique est ensuite déterminé en fonction de la direction de l’entité de la ligne K. Lorsque le classement supérieur est formé et que la clôture est supérieure à l’ouverture, faites plus; lorsque le classement suivant est formé et que la clôture est inférieure à l’ouverture, faites moins.

Avantages stratégiques

  1. Le point de différentiation de l’indicateur de William pour déterminer le moment de l’inversion est un indicateur technique bien établi et fiable.

  2. Confirmer les signaux de transaction en combinant la direction de l’entité de la ligne K pour éviter les chops chaotiques dans les zones hors tendance

  3. Moins de paramètres, n’a besoin que de régler le cycle de classification n, facile à tester et à optimiser

  4. Règles d’ouverture de position flexibles, telles que la taille de la position, les conditions de la position, etc., faciles à appliquer sur le terrain

Risque stratégique

  1. Après la classification, il est possible que la situation ne soit pas complètement inversée et que des jugements de tendances soient nécessaires.

  2. Le réglage de la position d’arrêt doit être prudent pour éviter d’être perturbé par le bruit.

  3. Le paramètre n doit être ajusté en fonction de la variété, si la période est trop grande ou trop petite, cela affectera l’effet

La solution est simple:

  1. Les indicateurs tels que les moyennes mobiles peuvent être ajoutés pour évaluer les grandes tendances et éviter les positions négatives.

  2. Stop-loss à suivi dynamique ou mise en place d’une limite de retrait raisonnable

  3. Optimiser les paramètres à l’aide de la méthode de l’analyse de marche en avant pour trouver les meilleurs

Orientation de l’optimisation de la stratégie

  1. Une stratégie de revers basée sur la segmentation est susceptible d’entraîner des pertes après plusieurs revers après des gains. Il est possible d’inclure un filtre de tendance, de limiter davantage la portée des transactions et de réduire les revers inutiles.

  2. Les méthodes actuelles de stop-loss sont assez simples et ne permettent pas de suivre efficacement les événements. Vous pouvez essayer d’ajouter des méthodes de stop-loss telles que le stop-loss mobile, le stop-loss temporel et le stop-loss dynamique.

  3. Pour le moment, il suffit de déterminer la direction physique de la ligne K. Des signaux de négociation plus précis peuvent être conçus en tenant compte de plus d’informations sur la ligne K, telles que la ligne d’ombre, la position de la clôture.

Résumer

Cette stratégie est une stratégie de retournement basée sur des indicateurs techniques. Elle utilise la catégorisation de l’indicateur William pour capturer la tendance des variations des actions de l’indicateur à des moments clés, en combinaison avec les entités de la ligne K pour former un signal de transaction dans le but de réaliser des gains supplémentaires.

Par rapport aux autres stratégies de retournement, cette stratégie est conçue en paramétrique, logiquement claire, facile à comprendre, facile à ajuster et facile à tester, et peut être directement mise en service sur le marché. La prochaine étape est d’optimiser encore plus les stratégies de jugement de tendance et de stop-loss.

Code source de la stratégie
/*backtest
start: 2023-11-14 00:00:00
end: 2023-12-14 00:00:00
period: 1h
basePeriod: 15m
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/
// © WMX_Q_System_Trading

//@version=4
SystemName="WMX Williams Fractals strategy V4"
InitCapital = 1000000
InitPosition = 100
InitCommission = 0.075
InitPyramidMax = 10
strategy(title=SystemName, shorttitle=SystemName, overlay=true, initial_capital=InitCapital, default_qty_type=strategy.percent_of_equity, default_qty_value=InitPosition, commission_type=strategy.commission.percent, commission_value=InitCommission)


//study("WMX Williams Fractals", shorttitle="WMX Fractals", format=format.price, precision=0, overlay=true)
// Define "n" as the number of periods and keep a minimum value of 2 for error handling.
n = input(title="Periods", defval=2, minval=2, type=input.integer)
h=close
l=close

factorh(High)=>
    upFractal = (                                                                                                          (High[n+2]  < High[n]) and (High[n+1]  < High[n]) and (High[n-1] < High[n]) and (High[n-2] < High[n]))
             or (                                                                               (High[n+3]  < High[n]) and (High[n+2]  < High[n]) and (High[n+1] == High[n]) and (High[n-1] < High[n]) and (High[n-2] < High[n]))
             or (                                                    (High[n+4]  < High[n]) and (High[n+3]  < High[n]) and (High[n+2] == High[n]) and (High[n+1] <= High[n]) and (High[n-1] < High[n]) and (High[n-2] < High[n]))
             or (                          (High[n+5] < High[n]) and (High[n+4]  < High[n]) and (High[n+3] == High[n]) and (High[n+2] == High[n]) and (High[n+1] <= High[n]) and (High[n-1] < High[n]) and (High[n-2] < High[n]))
             or ((High[n+6] < High[n]) and (High[n+5] < High[n]) and (High[n+4] == High[n]) and (High[n+3] <= High[n]) and (High[n+2] == High[n]) and (High[n+1] <= High[n]) and (High[n-1] < High[n]) and (High[n-2] < High[n]))
    upFractal
upFractal=factorh(h)
factorl(Low)=>
    dnFractal = (                                                                                                  (Low[n+2]  > Low[n]) and (Low[n+1]  > Low[n]) and (Low[n-1] > Low[n]) and (Low[n-2] > Low[n]))
             or (                                                                         (Low[n+3]  > Low[n]) and (Low[n+2]  > Low[n]) and (Low[n+1] == Low[n]) and (Low[n-1] > Low[n]) and (Low[n-2] > Low[n]))
             or (                                                (Low[n+4]  > Low[n]) and (Low[n+3]  > Low[n]) and (Low[n+2] == Low[n]) and (Low[n+1] >= Low[n]) and (Low[n-1] > Low[n]) and (Low[n-2] > Low[n]))
             or (                        (Low[n+5] > Low[n]) and (Low[n+4]  > Low[n]) and (Low[n+3] == Low[n]) and (Low[n+2] == Low[n]) and (Low[n+1] >= Low[n]) and (Low[n-1] > Low[n]) and (Low[n-2] > Low[n]))
             or ((Low[n+6] > Low[n]) and (Low[n+5] > Low[n]) and (Low[n+4] == Low[n]) and (Low[n+3] >= Low[n]) and (Low[n+2] == Low[n]) and (Low[n+1] >= Low[n]) and (Low[n-1] > Low[n]) and (Low[n-2] > Low[n]))
    
dnFractal=factorl(l)

U=valuewhen(upFractal[0]!= upFractal[1],l[0],3)
L=valuewhen(dnFractal[0]!=dnFractal[1],h[0],3)

longcon=crossover(close ,L) and close>open
shortcon=crossunder(close ,U) and close<open

if longcon
    
    strategy.entry("Long", strategy.long,   when = strategy.position_size <= 0 )
    
if  shortcon
    strategy.entry("Short", strategy.short,  when = strategy.position_size >= 0 )