Stratégie de stop loss suiveur bidirectionnel MA


Date de création: 2023-11-16 17:18:59 Dernière modification: 2023-11-16 17:18:59
Copier: 1 Nombre de clics: 590
1
Suivre
1617
Abonnés

Stratégie de stop loss suiveur bidirectionnel MA

Aperçu

Cette stratégie utilise les moyennes mobiles pour déterminer la direction de la tendance, effectuer des prises de position plus longues dans la direction de la tendance et calculer les arrêts de perte avec l’ATR.

Principe de stratégie

Cette stratégie utilise hl2 comme prix source et calcule l’ATR d’un certain cycle comme marge de stop loss. Les valeurs d’ATR sont multipliées par un certain nombre de facteurs pour calculer les hauts et les bas. Un signal d’achat est généré lorsque le prix est en hausse et un signal de vente est généré lorsque le prix est en baisse.

Après l’ouverture de la position, l’arrêt est ajusté en fonction de la variation en temps réel de l’ATR, pour réaliser le suivi de l’arrêt. Plus précisément, lorsque le plus est fait, la voie inférieure augmente en fonction du dernier point bas, pour réaliser le suivi de l’arrêt. Après le vide, la voie supérieure augmente en fonction du dernier point haut, pour réaliser le suivi de l’arrêt.

Ainsi, la stratégie exploite pleinement la fonctionnalité des moyennes mobiles pour déterminer la direction de la tendance et ajoute un mécanisme de suivi des pertes basé sur l’ATR, garantissant à la fois la précision de la direction des transactions et le contrôle des risques de transaction.

Avantages stratégiques

Le plus grand avantage de cette stratégie réside dans la maîtrise du risque. La stratégie traditionnelle de moyenne mobile ne prend en compte que le jugement de la direction, il est facile de briser la position.

En outre, cette stratégie intègre le trading bidirectionnel à plusieurs niveaux. Par rapport à la stratégie unilatérale, elle permet d’ajuster la direction de la position en temps opportun lors d’un renversement de tendance, d’éviter d’être coincé dans la même direction et d’améliorer les gains de la stratégie.

Risque stratégique

Le risque principal de cette stratégie réside dans la configuration du cycle et du multiplicateur de l’ATR. Si le cycle ou le multiplicateur de l’ATR est trop court, le stop loss est trop petit pour contrôler efficacement le risque. Si le cycle ou le multiplicateur de l’ATR est trop long, le stop loss est trop lâche et difficile à tirer.

Il est possible d’équilibrer les gains de stop loss en optimisant les paramètres cycliques et les multiplicateurs. En combinaison avec d’autres indicateurs, le filtrage des fausses percées améliore la qualité du signal et réduit le risque.

Direction d’optimisation

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

  1. Optimiser la périodicité des moyennes mobiles pour trouver la meilleure combinaison de paramètres

  2. Ajout de filtres pour d’autres indicateurs tels que MACD, KDJ, etc. pour améliorer la qualité du signal

  3. Augmentation des stratégies de gestion de position, telles que les parts fixes, les martingales, etc., pour améliorer les gains stratégiques

  4. On peut étudier les différences de paramètres entre les différentes variétés et les optimiser.

  5. L’optimisation des paramètres de formation peut être combinée avec des méthodes d’apprentissage automatique telles que des algorithmes génétiques

Résumer

Cette stratégie prend en compte le jugement de la tendance et la maîtrise des risques, en mettant l’accent sur la réduction des retraits tout en recherchant des gains. Les gains de la stratégie peuvent être encore améliorés par des méthodes telles que l’optimisation des paramètres et la combinaison. Dans l’ensemble, l’idée de la stratégie est claire, facile à mettre en œuvre et constitue une stratégie de trading quantitatif fiable et stable.

Code source de la stratégie
/*backtest
start: 2022-11-09 00:00:00
end: 2023-11-15 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/
// © KivancOzbilgic


//@version=4
strategy("Trenbolone Strategy", overlay = true)
Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=false)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)
barcoloring = input(title="Bar Coloring On/Off ?", type=input.bool, defval=true)
atr2 = sma(tr, Periods)
atr= changeATR ? atr(Periods) : atr2
up=src-(Multiplier*atr)
up1 = nz(up[1],up)
up := close[1] > up1 ? max(up,up1) : up
dn=src+(Multiplier*atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0)
plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0)
dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red, transp=0)
plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0)
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white
shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white
fill(mPlot, upPlot, title="UpTrend Highligter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highligter", color=shortFillColor)
FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 999)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 999)
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)       
window()  => time >= start and time <= finish ? true : false
longCondition = buySignal
if (longCondition)
    strategy.entry("BUY", strategy.long, when = window())
shortCondition = sellSignal
if (shortCondition)
    strategy.entry("SELL", strategy.short, when = window())
buy1 = barssince(buySignal)
sell1 = barssince(sellSignal)
color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na
barcolor(barcoloring ? color1 : na)