Tendance de la moyenne mobile de la coque selon la stratégie

Auteur:ChaoZhang est là., Date: 2023-09-19 16h40
Les étiquettes:

Résumé

Cette stratégie est basée sur l'indicateur Hull Moving Average inventé par Alan Hull, appartenant aux stratégies de suivi des tendances.

Principe de stratégie

  1. Calculer les MAs de Hull à court terme et à long terme.

  2. Lorsque les MAs de la coque à courte période se croisent, déterminer l'inversion de tendance. Filtrer avec la direction de la tendance à longue période.

  3. Ajoutez la rupture de prix à travers la condition Hull MA pour assurer une rupture réussie.

  4. Ajouter un filtre de taux de variation des prix pour éviter une entrée de rupture indésirable.

  5. Mettez un stop-loss et prenez des profits pour contrôler le risque.

Analyse des avantages

Par rapport aux moyennes mobiles simples, les avantages de cette stratégie sont les suivants:

  1. Hull MA réagit plus rapidement aux changements de prix, capable de saisir les tendances en temps opportun.

  2. La structure de l'AM à double coque permet de déterminer les tendances sur des délais aussi bien longs que courts.

  3. Les filtres de rupture de prix et de taux de change aident à éviter les fausses ruptures.

  4. L'opération stop loss dynamique et prise de bénéfices bloque les bénéfices et contrôle le risque.

Analyse des risques

Les risques de cette stratégie:

  1. Un paramètre mal réglé risque de manquer un tournant de tendance des prix.

  2. Une mauvaise appréciation de la tendance globale peut entraîner des transactions contre tendance.

  3. Le paramètre de stop-loss trop large peut entraîner de grosses pertes.

  4. Les échanges trop fréquents augmentent les coûts de transaction et les risques de dérapage.

Directions d'optimisation

Elle peut être optimisée dans les aspects suivants:

  1. Optimiser les périodes d'évaluation de l'Hull pour équilibrer la sensibilité et la douceur.

  2. Optimiser les paramètres d'entrée et de sortie pour trouver les valeurs optimales.

  3. Testez la robustesse des paramètres sur différents instruments afin d'améliorer l'adaptabilité.

  4. Incorporer le volume pour éviter les risques de divergence.

  5. Ajouter des conditions pour améliorer la stabilité.

Résumé

Dans l'ensemble, cette stratégie tire parti de la réactivité de Hull MA pour suivre les tendances en temps opportun et présente une forte rentabilité sous contrôle des risques.


/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-12 22:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//SeaSide420
strategy("SS420FX", overlay=true, default_qty_type=strategy.percent_of_equity, max_bars_back=720, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0)
q=input(title="HullMA Short",defval=14)
z=input(title="HullMA Long",defval=14)
dt = input(defval=0.0010, title="Decision Threshold", type=float, step=0.0001)
SL = input(defval=-50000.00, title="Stop Loss in $", type=float, step=1)
TP = input(defval=100000.00, title="Target Point in $", type=float, step=1)
ot=1
n2ma=2*wma(close,round(q/2))
nma=wma(close,q)
diff=n2ma-nma
sqn=round(sqrt(q))
n2ma1=2*wma(close[1],round(q/2))
nma1=wma(close[1], q)
diff1=n2ma1-nma1
sqn1=round(sqrt(q))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
z2ma=2*wma(close[11],round(z/2))
zma=wma(close[11],z)
ziff=n2ma-nma
zqn=round(sqrt(z))
z2ma1=2*wma(close[12],round(z/2))
zma1=wma(close[12], z)
ziff1=n2ma1-nma1
zqn1=round(sqrt(z))
z1=wma(diff,sqn)
z2=wma(diff1,sqn)
z1e=z1>z2?green:black
z2e=z1>z2?black:red
z3e=z1>z2?green:red
n1e=plot(z1, title="HMA1", color=z1e, linewidth=2, offset=2)
n2e=plot(z2, title="HMA2", color=z2e, linewidth=2, offset=2)
fill(n1e, n2e, color=z3e, transp=80)
confidence=(security(syminfo.tickerid, 'D', close)-security(syminfo.tickerid, 'D', close[1]))/security(syminfo.tickerid, 'D', close[1])
closelong = n1<n2 and close<n2 and confidence<dt or strategy.openprofit<SL or strategy.openprofit>TP
if (closelong)
    strategy.close("Long")
closeshort = n1>n2 and close>n2 and confidence>dt or strategy.openprofit<SL or strategy.openprofit>TP
if (closeshort)
    strategy.close("Short")
longCondition = n1>n2 and z1>z2 and strategy.opentrades<ot and confidence>dt and close>n1
if (longCondition)
    strategy.entry("Long",strategy.long)
shortCondition = n1<n2 and z1<z2 and strategy.opentrades<ot and confidence<dt and close<n1 
if (shortCondition)
    strategy.entry("Short",strategy.short)

Plus de