WMX Stratégie de pivot de renversement des fractals Williams

Auteur:ChaoZhang est là., Date: le 15 décembre 2023 à 10h37
Les étiquettes:

img

Résumé

Cette stratégie adopte le principe de rupture fractale de l'indicateur Williams et combine des modèles spécifiques de lignes K pour concevoir un modèle d'ouverture et de fermeture long et court efficace.

Principe de stratégie

Cette stratégie utilise les points fractaux de l'indicateur Williams pour déterminer les signaux d'inversion.

Plus précisément, un indicateur personnalisé appelé WMX Williams Fractals est défini dans la stratégie.

La logique fractale supérieure est: le prix le plus élevé de la ligne K actuelle est supérieur au prix le plus élevé des n lignes K précédentes (n est un paramètre réglable), formant ainsi une fractale de rupture latérale supérieure.

La logique du fractal inférieur est la suivante: le prix le plus bas de la ligne K actuelle est inférieur au prix le plus bas des n lignes K précédentes, formant ainsi un fractal de rupture du côté inférieur.

Après avoir obtenu les fractals supérieur et inférieur, déterminez s'ils changent, c'est-à-dire de nul à existant ou vice versa.

Ensuite, combiné avec la direction de l'entité de la ligne K pour déterminer des signaux de trading spécifiques. Lorsque le fractal supérieur est formé et que la fermeture est supérieure à l'ouverture, allez long. Lorsque le fractal inférieur est formé et que la fermeture est inférieure à l'ouverture, allez court.

Les avantages de la stratégie

  1. Utilisez les points fractaux de l'indicateur Williams pour déterminer le moment de l'inversion.

  2. Combiner la direction de l'entité de la ligne K pour confirmer les signaux de négociation et éviter les régions agitées non tendance.

  3. Peu de paramètres qui n'ont besoin que d'ajuster la période fractale n, faciles à tester et à optimiser.

  4. Des réglages flexibles pour l'ouverture de positions, des règles telles que la taille des positions, les conditions de clôture, etc., faciles à appliquer dans le trading en direct.

Risques stratégiques

  1. Après les formes fractales, le marché peut ne pas complètement inverser, besoin de combiner avec le jugement de tendance.

  2. Le réglage de la position Stop Loss doit être prudent pour éviter d'être éliminé par des mouvements de volatilité bruyants.

  3. Le paramètre n doit être ajusté pour différents produits. Si la période est trop grande ou trop petite, cela affectera les résultats.

Les solutions:

  1. Peut ajouter des indicateurs comme la moyenne mobile pour juger de la tendance majeure, éviter les transactions contre tendance.

  2. Utiliser un stop loss dynamique ou définir un stop loss raisonnable basé sur le retrait.

  3. Utilisez l'analyse de marche vers l'avant pour optimiser les paramètres et trouver les valeurs optimales.

Directions d'optimisation de la stratégie

  1. Les stratégies d'inversion fractale ont tendance à former plusieurs profits puis à inverser à nouveau pour former des pertes.

  2. La méthode actuelle de stop loss simple ne peut pas suivre efficacement les mouvements du marché. peut essayer des techniques de stop loss plus avancées telles que le stop loss en mouvement, le stop loss basé sur le temps, le stop loss dynamique, etc.

  3. Actuellement, utilisez uniquement la direction de l'entité de la ligne K. Si vous considérez plus d'informations de la ligne K comme les mèches et l'emplacement proche, vous pouvez concevoir des signaux commerciaux encore plus précis.

Conclusion

Il s'agit d'une stratégie d'inversion basée sur des indicateurs techniques. Il utilise les fractales de l'indicateur Williams pour capturer les changements de tendance du sous-jacent à des points pivots clés, combinés à la direction de l'entité K-line pour former des signaux commerciaux, visant à obtenir des rendements excédentaires.

Comparée à d'autres stratégies d'inversion, cette stratégie présente une conception paramétrifiée pour une logique claire et une compréhension facile. Elle a des ajustements de paramètres flexibles pour des tests pratiques et peut être directement appliquée dans le trading en direct.


/*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 )
        






Plus de