Stratégie d'arrêt des bénéfices de la dent de scie à travers le plancher basée sur la moyenne mobile

Auteur:ChaoZhang est là., Date: 21-12-2023 à 12h26
Les étiquettes:

img

Résumé

Cette stratégie ouvre des positions basées sur la croix d'or et la croix de la mort des moyennes mobiles, et les ensembles prennent des profits et arrêtent des pertes de manière à traverser le sol.

  1. Utiliser le système de moyenne mobile pour filtrer les chocs
  2. Adopter le déménagement pour réaliser des bénéfices et des arrêts de perte pour une gestion dynamique des capitaux
  3. Filtrage de position configurable pour éviter une ouverture unidirectionnelle

Principe de stratégie

La stratégie est composée de quatre parties:

  1. Système de moyenne mobile

    Utilisez la croix dorée et la croix morte des moyennes mobiles pour déterminer les tendances et filtrer les chocs.

  2. Le déménagement procure des bénéfices et arrête les pertes

    Utilisez le profit et le stop-loss avec un certain pourcentage pour verrouiller les bénéfices et contrôler les risques, réalisant une gestion dynamique du capital.

  3. Filtrage de la position

    Si la position précédente est longue, le signal suivant doit être court pour ouvrir la position, en évitant la tenue unilatérale.

  4. ATR Stop Loss

    Utilisez l'ATR pour limiter la plage maximale de perte de freinage et éviter une perte de freinage excessive.

Plus précisément, la stratégie calcule d'abord la moyenne mobile, les longs sur la croix dorée et les shorts sur la croix de la mort. Après l'entrée, définissez les lignes de prise de profit et de stop-loss en mouvement avec un certain pourcentage. Si le prix touche la ligne de prise de profit, alors prenez du profit; si elle touche la ligne de stop-loss ou dépasse la plage de stop-loss ATR, alors arrêtez la perte.

Les avantages

Les principaux avantages de cette stratégie sont les suivants:

  1. Haute configuration

    De nombreux paramètres de la stratégie sont configurables pour que les utilisateurs puissent s'ajuster en fonction de leurs styles de trading.

  2. Une bonne gestion des capitaux

    L'adoption de l'option de prise de profit et d'arrêt des pertes et de l'option d'arrêt des pertes ATR permet de contrôler efficacement l'amplitude d'un seul arrêt des pertes et d'obtenir une excellente gestion des capitaux.

  3. Convient pour le marché en tendance

    La stratégie de la moyenne mobile elle-même est plus adaptée aux marchés à forte tendance pour filtrer efficacement les chocs.

Risques et contre-mesures

Cette stratégie comporte également certains risques:

  1. Une mauvaise appréciation de la tendance

    Le jugement des moyennes mobiles sur les marchés complexes n'est pas parfait et des erreurs peuvent survenir.

  2. Stop Loss excessifs

    Les paramètres ATR doivent être combinés pour définir la plage de stop loss.

  3. Risques d'ouverture à sens unique

    L'activation du filtrage des positions aura une certaine incidence sur la fréquence des transactions.

Directions d'optimisation

Les principales orientations d'optimisation sont les suivantes:

  1. Optimisation des paramètres

    Ajuster le cycle de la moyenne mobile, les paramètres ATR, les ratios de prise de profit et de stop-loss et d'autres paramètres pour optimiser les performances de la stratégie.

  2. Ajout d'indicateurs

    Ajouter des indicateurs tels que CMF, OBV pour juger du flux de capitaux et éviter un stop loss excessif.

  3. Combinaison avec d'autres stratégies

    Combinez avec des stratégies de rupture pour suivre les tendances après la stabilisation de la tendance pour obtenir de meilleurs résultats.

Résumé

En résumé, grâce au filtre moyen mobile et au profit et au stop-loss mobiles, cette stratégie réalise une gestion dynamique du capital basée sur les tendances. Elle a une grande configuration, adaptée aux investisseurs rationnels pour s'ajuster et l'utiliser selon leurs propres styles.


/*backtest
start: 2023-11-20 00:00:00
end: 2023-12-11 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/
// © MGULHANN

//@version=5

//İchimoku Leading Span 2 Hesaplaması ve Girişleri
strategy("Stairs Gain Strategy - MG", overlay=true, margin_long=100, margin_short=100)
laggingSpan2Periods = input.int(52, minval=1, title="Leading Periot")
displacement = input.int(1, minval=1, title="Displacement")
donchian(len) => math.avg(ta.lowest(len), ta.highest(len))
leadLine2 = donchian(laggingSpan2Periods)
p2 = plot(leadLine2, offset = displacement - 1, color=#EF9A9A,
	 title="Leading Span B")

// İşlem Tekrarını Filtrele	 
filtreUygula = input.bool(true,title="Pozisyon Sıra Filtresi Uygula")

//Kar Al / Zarar Durdur Seviyeleri Girişleri
zararDurdurmaYuzde = input.float(1.0, title='Zarar Durdurma %', step=0.01) / 100
karAlmaYuzde = input.float(2.0, title='Kar Alma %', step=0.01) / 100

//ATR Hesaplaması
atrCarpani = input.float(0.3, title="ATR Çarpanı", step= 0.01)
atrDegeri = ta.atr(14) * atrCarpani

//ATR Değer Girişleri
atrbuyukdeger = input.float(0.01, title="ATR Üst Limit", step=0.01)
atrkucukdeger = input.float(0.06, title="ATR Alt Limit", step=0.01)

//Buy ve Sell Şartları
buycross =   ta.crossover(close,leadLine2[displacement-1]) ? atrDegeri > atrbuyukdeger : strategy.position_size == 0
sellcross = ta.crossover(leadLine2[displacement-1],close) ? atrDegeri < atrkucukdeger : strategy.position_size == 0

//KONTROL
var sonPozisyonYonu = 0
//Son kapanan pozisyon long ise degiskenin degerini 1 olarak ata
if strategy.position_size[1] > 0 and strategy.position_size == 0
    sonPozisyonYonu := 1

//Son kapanan pozisyon short ise degiskenin degerini -1 olarak ata
if strategy.position_size[1] < 0 and strategy.position_size == 0
    sonPozisyonYonu := -1
    
//eger filtre uygulama seçiliyse ve son pozisyon yönü long ise 'longFiltreSonuc' degiskenine false degeri ata ve bir sonraki pozisyonun long olmasını engelle
longFiltreSonuc = filtreUygula ? sonPozisyonYonu == 1 ? false : true : true

//eger filtre uygulama seçiliyse ve son pozisyon yönü short ise 'shortFiltreSonuc' degiskenine false degeri ata ve bir sonraki pozisyonun short olmasını engelle
shortFiltreSonuc = filtreUygula ? sonPozisyonYonu == -1 ? false : true : true

//LONG GİRİŞ
strategy.entry("Long", strategy.long, when=buycross and longFiltreSonuc)
longKarAl = strategy.position_avg_price * (1 + karAlmaYuzde)
longZararDurdur = strategy.position_avg_price * (1 - zararDurdurmaYuzde)
strategy.exit("Long Exit","Long",limit=longKarAl, stop=longZararDurdur)

//SHORT GİRİŞ
strategy.entry("Short", strategy.short, when=sellcross and shortFiltreSonuc)
shortKarAl = strategy.position_avg_price * (1 - karAlmaYuzde)
shortZararDurdur = strategy.position_avg_price * (1 + zararDurdurmaYuzde)
strategy.exit("Short Exit","Short",limit=shortKarAl, stop=shortZararDurdur)

//Kar Al ve Zarar Durdur Seviyelerinin Grafikte İşaretlenmesi
plot(strategy.position_size != 0 ? strategy.position_avg_price : na, color=color.navy, linewidth=2, style=plot.style_linebr, title="İşleme Giriş Seviyesi")
plot(strategy.position_size > 0 ? longKarAl : na, color=color.green, linewidth=2, style=plot.style_linebr, title="Long Kar Alım Seviyesi")
plot(strategy.position_size > 0 ? longZararDurdur : na, color=color.red, linewidth=2, style=plot.style_linebr, title="Long Zarar Durdurma Seviyesi")
plot(strategy.position_size < 0 ? shortKarAl : na, color=color.green, linewidth=2, style=plot.style_linebr, title="Short Kar Alım Seviyesi")
plot(strategy.position_size < 0 ? shortZararDurdur : na, color=color.red, linewidth=2, style=plot.style_linebr, title="Short Zarar Durdurma Seviyesi")

//plotshape(buycross,size=size.small,style=shape.labelup,location=location.belowbar,color=color.green,text="Al", offset = displacement-1, textcolor=color.white)
//plotshape(sellcross,size=size.small,style=shape.labeldown,location=location.abovebar,color=color.red,text="Sat", offset = displacement-1, textcolor=color.white)


Plus de