Stratégie de négociation croisée tendance taureau/ours

Auteur:ChaoZhang est là., Date: 2023-10-07 09:56:30 La date est fixée à
Les étiquettes:

Résumé

Cette stratégie utilise le principe de croisement de la moyenne mobile pour déterminer la direction de la tendance et générer des signaux d'achat et de vente.

Principe

La stratégie utilise deux moyennes mobiles, un MA de 7 jours comme ligne rapide et un MA de 5 mois comme ligne lente. La ligne rapide capture les changements de prix rapidement tandis que la ligne lente filtre le bruit et détermine la direction de la tendance. Lorsque la ligne rapide dépasse la ligne lente par le bas, elle est considérée comme un signal haussier pour aller long. Lorsque la ligne rapide dépasse la ligne lente par le haut, elle est considérée comme un signal baissier pour aller court.

Plus précisément, la stratégie calcule la moyenne mobile simple de 7 jours (SMA) et la SMA de 5 mois, en les traçant sur le graphique des prix. Lorsque la ligne de 7 jours traverse au-dessus de la ligne de 5 mois depuis le bas, un signal d'achat est généré. Lorsque la ligne de 7 jours traverse au-dessous de la ligne de 5 mois depuis le haut, un signal de vente est déclenché. La stratégie visualise également les périodes de signal.

Les avantages

La stratégie présente les avantages suivants:

  1. Une base théorique simple et fiable, basée sur le principe de croisement de la moyenne mobile largement connu.

  2. Seules deux moyennes mobiles sont utilisées, avec une sélection de paramètres simple et une mise en œuvre facile.

  3. Les lignes rapides et lentes fonctionnent efficacement ensemble pour identifier les tendances et filtrer le bruit du marché.

  4. Des délais différents sont capturés par des MAs de périodes différentes, détectant des changements de tendance à plusieurs échelles.

  5. Une mise en œuvre simple avec une logique claire et facile à comprendre.

  6. Les signaux visualisés sont clairs et intuitifs pour décider des transactions.

Les risques

Il y a aussi des risques:

  1. Prédisposé à des signaux erronés en se basant uniquement sur des croisements MA.

  2. Incapable de juger efficacement de la force de la tendance, ce qui provoque des arrêts de perte fréquents sur les marchés à tendance variable.

  3. Les périodes d'AM fixes ne peuvent pas s'adapter aux changements du marché et nécessitent une optimisation des paramètres.

  4. Les niveaux d'entrée et de sortie ne sont pas clairs, avec quelques risques de piqûre.

  5. Une base théorique simpliste peut compromettre les performances et le potentiel de profit.

Amélioration

La stratégie peut être améliorée dans les domaines suivants:

  1. Ajouter d'autres indicateurs pour déterminer les niveaux d'entrée et de sortie, tels que le KDJ pour les surachats/survente.

  2. Mettre en œuvre des mécanismes de stop-loss tels que le trailing stop pour limiter les pertes.

  3. Optimiser les périodes d'octroi de l'aide afin de s'adapter aux différents cycles du marché.

  4. Ajoutez un filtre de volume pour éviter les fausses éruptions.

  5. Évaluer la force de la tendance, par exemple la pente de MA, afin de mesurer la taille de la position.

  6. Incorporer plusieurs délais pour une meilleure continuité des tendances.

Conclusion

La stratégie identifie les tendances haussières et baissières de manière simple et fiable basée sur la théorie du croisement MA. Les avantages sont la simplicité et la facilité d'utilisation, tandis que les inconvénients sont les risques inhérents à la tendance.


/*backtest
start: 2022-09-30 00:00:00
end: 2023-10-06 00:00:00
period: 1d
basePeriod: 1h
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/
// © dadashkadir

//@version=4
strategy("Mount MaV - Day MaV CrossOver Strgty", shorttitle="Yusram Str.", overlay=true)
src = input(title= "Kaynak", type=input.source, defval=close)
mav = input(title="Hareketli Ortlama Tipi", defval="SMA", options=["SMA", "EMA", "WMA"])
Gbar = input(title="Günlük Bar Sayısı", defval=7, minval=1, maxval=999)
Abar = input(title="Aylık Bar Sayısı", defval=5, minval=1, maxval=999)
//displacement = input(20, minval=1, title="Displacement")
getMA(src, length) =>
    ma = 0.0
    if mav == "SMA"
        ma := sma(src, length)
        ma

    if mav == "EMA"
        ma := ema(src, length)
        ma

    if mav == "WMA"
        ma := wma(src, length)
        ma
    ma
long = "M" //Aylık
ln = security(syminfo.ticker, long, src)
lnma = getMA(ln, Abar)
gnma = getMA(src, Gbar)
col1= gnma>gnma[1]
col3= gnma<gnma[1]
colorM = col1 ? color.green : col3 ? color.navy : color.yellow
l1 = plot(lnma, title="MhO", trackprice = true, style=plot.style_line, color=color.red, linewidth=3)
l2 = plot(gnma, title="DhO", trackprice = true, style=plot.style_line, color=colorM, linewidth=3)
fill(l1, l2, color = lnma < gnma ? color.green : color.red, title="Gölgelendirme", transp=90)
zamanaralik = input (2020, title="Backtest Başlangıç Tarihi")
al  = crossover (gnma, lnma) and zamanaralik <= year
sat = crossover (lnma, gnma) and zamanaralik <= year
plotshape(al,  title = "Giriş",  text = 'Al',  style = shape.labelup,   location = location.belowbar, color= color.green, textcolor = color.white, transp = 0, size = size.tiny)
plotshape(sat, title = "Çıkış", text = 'Sat', style = shape.labeldown, location = location.abovebar, color= color.red,   textcolor = color.white, transp = 0, size = size.tiny)

FromDay    = input(defval = 1, title = "Str. Başlama Tarihi Gün", minval = 1, maxval = 31)
FromMonth  = input(defval = 1, title = "Str. Başlama Tarihi Ay", minval = 1, maxval = 12)
FromYear   = input(defval = 2015, title = "Str. Başlama Tarihi Yıl", minval = 2005)
ToDay      = input(defval = 1, title = "Str. Bitiş Tarihi Gün", minval = 1, maxval = 31)
ToMonth    = input(defval = 1, title = "Str. Bitiş Tarihi Ay", minval = 1, maxval = 12)
ToYear     = input(defval = 9999, title = "Str. Bitiş Tarihi Yıl", 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 al
    strategy.entry("Al", strategy.long, when=Timerange())
if sat
    strategy.entry("Sat", strategy.short, when=Timerange())


Plus de