Stratégie d'optimisation de suivi de tendance de moyenne mobile


Date de création: 2024-01-04 15:44:23 Dernière modification: 2024-01-04 15:44:23
Copier: 0 Nombre de clics: 526
1
Suivre
1621
Abonnés

Stratégie d’optimisation de suivi de tendance de moyenne mobile

Aperçu

L’éclairage de quantification est une stratégie combinant l’indicateur stochastique et l’indicateur OTT. Cette stratégie utilise l’indicateur stochastique pour générer des signaux d’achat et de vente, et en combinaison avec l’indicateur OTT pour filtrer les signaux, afin de tenter de saisir les grandes tendances et de réduire l’impact des faux signaux causés par les chocs.

Principe de stratégie

L’idée centrale de cette stratégie est de superposer les indicateurs stochastiques aux indicateurs OTT pour filtrer les signaux. Les indicateurs stochastiques comparent les prix aux plus hauts et aux plus bas de la période donnée pour déterminer si les prix sont dans des zones extrêmes. Les indicateurs OTT utilisent des moyennes mobiles et des arrêts dynamiques pour suivre la tendance.

Le code définit Stochastic à hauteur de 1080, basse de 1020 et moyenne de Stochastic à intervalles constants. Lorsque Stochastic génère un signal d’achat/vente, le code juge l’efficacité du signal en fonction de l’indicateur OTT. Un signal d’achat est émis si le prix traverse la moyenne OTT vers le haut et un signal de vente si le prix traverse la moyenne OTT vers le bas.

Cette combinaison utilise Stochastic pour juger les surachats et les surventes et envoyer un signal d’entrée. OTT est chargé de suivre la tendance et d’utiliser les faux signaux causés par des conditions de choc trop fortes, ce qui optimise l’exactitude et la volatilité du signal.

Analyse des avantages

La stratégie utilise une combinaison des indicateurs Stochastic et OTT pour optimiser les aspects suivants:

  1. L’OTT est chargé d’éliminer les faux signaux causés par les chocs.
  2. La volatilité de la stratégie a été réduite. Les pertes ont été limitées par des arrêts dynamiques, qui ont filtré de nombreuses fausses percées.
  3. Stochastic fournit les signaux de base et OTT suit les grandes tendances.
  4. Réduction de l’interférence excessive. Amélioration de la qualité du signal et réduction des signaux inutiles.
  5. Le stop-loss dynamique quantifié a été défini. La garantie qualitative de la perte actuelle a permis de réduire davantage la volatilité de la stratégie.
  6. Le système combine la tendance et les indicateurs de survente et d’achat excessif.

Dans l’ensemble, la stratégie a permis d’améliorer la qualité du signal et les gains stratégiques en utilisant le filtrage stochastique par OTT, tout en réduisant le nombre de transactions et la volatilité de la stratégie, ce qui a permis d’atteindre des résultats proches de la tendance, à faible risque et à haut rendement.

Analyse des risques

  • La portée de cette stratégie est relativement étroite. Elle s’applique principalement aux actions qui ont une tendance évidente.
  • La stratégie ne prend pas en compte les fondamentaux des actions et les aspects macroéconomiques du marché, il y a une certaine aveuglement.
  • La configuration des paramètres est sensible. Plusieurs paramètres stochastiques et OTT nécessitent un réglage professionnel, ce qui peut affecter la rentabilité de la stratégie.
  • Le stop-loss est trop souple. Il supporte une certaine perte potentielle et doit être optimisé.
  • Il y a un certain nombre de pertes et de perturbations du signal en cas de fausse percée et de tremblement de terre. Il est nécessaire de modifier les conditions de jugement et les conditions de stop-loss.

Les mesures suivantes permettent d’améliorer ces risques:

  1. Différentes combinaisons de paramètres sont utilisées selon les catégories d’actions.
  2. La combinaison des éléments de base et de l’aspect journalistique donne un signal renforcé.
  3. Test d’optimisation des paramètres pour trouver le meilleur réglage.
  4. L’introduction de stop-loss mobile a permis de réduire encore plus le risque.
  5. Les conditions de jugement ont été modifiées pour adopter un mécanisme de reconnaissance de signaux plus rigoureux.

Direction d’optimisation

Cette stratégie peut être approfondie et optimisée dans les domaines suivants:

  1. Les paramètres sont ajustés en fonction des différents marchés et catégories d’actions. Les valeurs par défaut actuelles sont générales et peuvent être testées pour trouver la combinaison optimale de paramètres pour différentes actions.

  2. L’introduction d’arrêts mobiles et de stop-loss. Actuellement, on utilise des stop-loss fixes dynamiques, qui ne permettent pas de suivre les pertes et les gains de manière dynamique. L’introduction d’arrêts mobiles et de stop-loss peut être testée pour contrôler davantage les gains et les risques de la stratégie.

  3. Optimiser la logique de jugement des signaux. La logique de jugement actuelle est relativement simple, car les signaux d’achat et de vente sont directement marqués par la rupture de la hausse et de la baisse des prix.

  4. Ajout de conditions d’ouverture de position et de mécanismes de filtrage. La stratégie actuelle traite chaque signal de manière indifférenciée. Des conditions d’ouverture de position telles que l’indicateur de puissance, l’indicateur de quantité de transaction peuvent être introduites et une certaine fenêtre de temps de signal peut être ajoutée pour éliminer les faux signaux.

  5. Test de la combinaison de différents indicateurs avec l’OTT. Actuellement, la combinaison Stochastic et OTT est utilisée. D’autres indicateurs tels que le MACD, le RSI et l’effet de combinaison avec l’OTT peuvent être testés.

  6. Module de gestion de fonds et de gestion de position intégré. Il n’existe actuellement aucun mécanisme de gestion de fonds et de contrôle de position, entièrement basé sur le stop loss. Différents types de méthodes de gestion de fonds et de gestion de position peuvent être testés pour contrôler davantage les risques individuels et globaux.

Résumer

L’éclairage de quantification est une stratégie de quantification qui combine organiquement les indicateurs stochastiques et OTT. Il utilise les avantages de la complémentarité des deux indicateurs pour améliorer la précision du signal et réduire les risques tout en capturant efficacement les grandes tendances.

Cette stratégie présente les avantages d’un faible taux d’erreur, d’une clarté de signal et d’une faible volatilité. Elle améliore la fiabilité du signal, optimise les niveaux de stop-loss et réduit la fréquence des transactions. C’est une stratégie quantitative recommandée.

Dans le même temps, il existe une certaine marge d’amélioration dans cette stratégie. Par l’optimisation des paramètres, l’amélioration des mécanismes d’arrêt des dommages, le renforcement des mécanismes de signal et de filtrage, etc., la stratégie peut évoluer vers une direction plus stable, plus automatisée et plus intelligente, ce qui est également l’objectif de notre travail ultérieur.

Code source de la stratégie
/*backtest
start: 2023-12-27 00:00:00
end: 2024-01-03 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © KivancOzbilgic
//created by: @Anil_Ozeksi
//developer: ANIL ÖZEKŞİ
//author: @kivancozbilgic


strategy(title="Stochastic Optimized Trend Tracker", shorttitle="SOTT", format=format.price, precision=2)
periodK = input(250, title="%K Length", minval=1)
smoothK = input(50, title="%K Smoothing", minval=1)
src1 = input(close, title="Source")
length=input(3, "OTT Period", minval=1)
percent=input(0.618, "OTT Percent", type=input.float, step=0.1, minval=0)
showsupport = input(title="Show Support Line?", type=input.bool, defval=false)
showsignalsc = input(title="Show Stochastic/OTT Crossing Signals?", type=input.bool, defval=false)
Var_Func1(src1,length)=>
    valpha1=2/(length+1)
    vud11=src1>src1[1] ? src1-src1[1] : 0
    vdd11=src1<src1[1] ? src1[1]-src1 : 0
    vUD1=sum(vud11,9)
    vDD1=sum(vdd11,9)
    vCMO1=nz((vUD1-vDD1)/(vUD1+vDD1))
    VAR1=0.0
    VAR1:=nz(valpha1*abs(vCMO1)*src1)+(1-valpha1*abs(vCMO1))*nz(VAR1[1])
VAR1=Var_Func1(src1,length)
k = Var_Func1(stoch(close, high, low, periodK), smoothK)
src=k+1000
Var_Func(src,length)=>
    valpha=2/(length+1)
    vud1=src>src[1] ? src-src[1] : 0
    vdd1=src<src[1] ? src[1]-src : 0
    vUD=sum(vud1,9)
    vDD=sum(vdd1,9)
    vCMO=nz((vUD-vDD)/(vUD+vDD))
    VAR=0.0
    VAR:=nz(valpha*abs(vCMO)*src)+(1-valpha*abs(vCMO))*nz(VAR[1])
VAR=Var_Func(src,length)
h0 = hline(1080, "Upper Band", color=#606060)
h1 = hline(1020, "Lower Band", color=#606060)
fill(h0, h1, color=#9915FF, transp=80, title="Background")
plot(k+1000, title="%K", color=#0094FF)
MAvg=Var_Func(src, length)
fark=MAvg*percent*0.01
longStop = MAvg - fark
longStopPrev = nz(longStop[1], longStop)
longStop := MAvg > longStopPrev ? max(longStop, longStopPrev) : longStop
shortStop =  MAvg + fark
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := MAvg < shortStopPrev ? min(shortStop, shortStopPrev) : shortStop
dir = 1
dir := nz(dir[1], dir)
dir := dir == -1 and MAvg > shortStopPrev ? 1 : dir == 1 and MAvg < longStopPrev ? -1 : dir
MT = dir==1 ? longStop: shortStop
OTT=MAvg>MT ? MT*(200+percent)/200 : MT*(200-percent)/200 
plot(showsupport ? MAvg : na, color=#0585E1, linewidth=2, title="Support Line")
OTTC = #B800D9 
pALL=plot(nz(OTT[2]), color=OTTC, linewidth=2, title="OTT", transp=0)
alertcondition(cross(src, OTT[2]), title="Price Cross Alert", message="OTT - Price Crossing!")
alertcondition(crossover(src, OTT[2]), title="Price Crossover Alarm", message="PRICE OVER OTT - BUY SIGNAL!")
alertcondition(crossunder(src, OTT[2]), title="Price Crossunder Alarm", message="PRICE UNDER OTT - SELL SIGNAL!")
buySignalc = crossover(src, OTT[2])
plotshape(buySignalc and showsignalsc ? OTT*0.995 : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0)
sellSignallc = crossunder(src, OTT[2])
plotshape(sellSignallc and showsignalsc ? OTT*1.005 : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0)

dummy0 = input(true, title = "=Backtest Inputs=")
FromDay    = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromMonth  = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromYear   = input(defval = 2005, title = "From Year", minval = 2005)
ToDay      = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToMonth    = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToYear     = input(defval = 9999, title = "To Year", minval = 2006)
Start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)
Finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)
Timerange() =>
    time >= Start and time <= Finish ? true : false
if buySignalc
    strategy.entry("Long", strategy.long,when=Timerange())
if sellSignallc
    strategy.entry("Short", strategy.short,when=Timerange())