
Le cœur de cette stratégie est d’utiliser les moyennes mobiles lisses de l’indice comme un signal d’achat et de vente, combiné à des arrêts de suivi et des arrêts de pourcentage pour verrouiller les bénéfices et contrôler les risques. La stratégie est simple à mettre en œuvre et s’applique à la négociation quantitative d’actions et d’autres produits financiers.
Calculer l’EMA rapide et l’EMA lente, avec une période de 20 jours pour l’EMA rapide et de 50 jours pour l’EMA lente. Générer un signal d’achat lorsque l’EMA rapide traverse l’EMA lente; générer un signal de vente lorsque l’EMA rapide traverse l’EMA lente.
Le stop-loss est réglé après l’entrée et le pourcentage de stop-loss est réglé en fonction de la direction de la position, par exemple 7%. Le stop-loss s’ajuste automatiquement à chaque ligne K pour bloquer le maximum de profit possible.
En même temps, définissez une position de stop-loss, en fonction de la direction de la position et du prix d’entrée, définissez respectivement le pourcentage de stop-loss sur plusieurs positions et de stop-loss sur une position vide, par exemple 2%. La position de stop-loss est fixe, pour éviter des pertes excessives.
Comparer le stop loss et le stop loss, choisir la position de stop loss la plus proche du prix du marché et émettre un ordre de stop loss.
Les signaux des moyennes mobiles sont simples, faciles à comprendre et à appliquer.
Le Stop Loss Tracking permet de bloquer les profits au maximum tout en évitant les erreurs de jugement qui entraînent des pertes inutiles.
Le pourcentage de stop-loss est intuitif et réglable, permettant de contrôler la perte maximale par transaction.
La combinaison de stop-loss de suivi et de stop-loss fixe permet de bloquer les bénéfices tout en contrôlant les risques.
Les stratégies de moyennes mobiles sont susceptibles de générer de faux signaux et d’introduire des conditions de filtrage plus fortes.
Le stop-loss est parfois prématuré, mais il doit être assoupli de manière appropriée.
Les paramètres d’arrêt fixes inappropriés peuvent être trop radicaux ou conservateurs et doivent être testés pour ajuster les paramètres de pourcentage.
Le stop-loss mécanique peut être l’occasion manquée d’un retournement de marché, qui peut être combiné avec des indicateurs techniques pour juger le stop-loss.
Essayez différentes combinaisons d’EMA pour trouver le meilleur équilibre.
Les signaux de filtration des signaux de fausse déclaration sont ajoutés aux indicateurs tels que le volume des transactions.
Test plus d’actions pour trouver le paramètre de stop-loss approprié.
Essayez d’ajouter un stop mobile et d’ajuster la position de votre stop en fonction du marché.
Le moment de la rupture est déterminé par les indicateurs tels que le RSI.
La stratégie intègre des signaux de négociation en moyenne mobile, des arrêts de suivi et des arrêts de pourcentage, optimisés par des paramètres, pouvant s’appliquer à une variété d’actions et de marchandises, tout en obtenant des gains stables et en contrôlant strictement les risques. Il vaut la peine de quantifier les pratiques de recherche et d’optimisation continues des traders.
/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-02 00:00:00
period: 10m
basePeriod: 1m
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/
// © wouterpruym1828
//@version=5
strategy(title=" Combining Trailing Stop and Stop loss (% of instrument price)",
overlay=true, pyramiding=1, shorttitle="TSL&SL%")
//INDICATOR SECTION
// Indicator Input options+
i_FastEMA = input.int(title = "Fast EMA period", minval = 0, defval = 20)
i_SlowEMA = input.int(title = "Slow EMA period", minval = 0, defval = 50)
// Calculate moving averages
fastEMA = ta.ema(close, i_FastEMA)
slowEMA = ta.ema(close, i_SlowEMA)
// Plot moving averages
plot(fastEMA, title="Fast SMA", color=color.blue)
plot(slowEMA, title="Slow SMA", color=color.orange)
//STRATEGY SECTION
// Calculate trading conditions
buy = ta.crossover(fastEMA, slowEMA)
sell = ta.crossunder(fastEMA, slowEMA)
// STEP 1:
// Configure trail stop loss level with input options (optional)
longTrailPerc = input.float(title="Long Trailing Stop (%)", minval=0.0, step=0.1, defval=7) * 0.01
shortTrailPerc = input.float(title="Short Trailing Stop (%)", minval=0.0, step=0.1, defval=7) * 0.01
//Configure stop loss level with input options (optional)
longStopPerc = input.float(title="Long Stop Loss (%)", minval=0.0, step=0.1, defval=2)*0.01
shortStopPerc = input.float(title="Short Stop Loss (%)", minval=0.0, step=0.1, defval=2)*0.01
// STEP 2:
// Determine trail stop loss prices
longTrailPrice = 0.0, shortTrailPrice = 0.0
longTrailPrice := if (strategy.position_size > 0)
stopValue = high * (1 - longTrailPerc)
math.max(stopValue, longTrailPrice[1])
else
0
shortTrailPrice := if (strategy.position_size < 0)
stopValue = low * (1 + shortTrailPerc)
math.min(stopValue, shortTrailPrice[1])
else
999999
// Determine stop loss prices
entryPrice = 0.0
entryPrice := strategy.opentrades.entry_price(strategy.opentrades - 1)
longLossPrice = entryPrice * (1 - longStopPerc)
shortLossPrice = entryPrice * (1 + shortStopPerc)
// Plot stop loss values for confirmation
plot(series=(strategy.position_size > 0) ? longTrailPrice : na,
color=color.fuchsia, style=plot.style_cross,
linewidth=2, title="Long Trail Stop")
plot(series=(strategy.position_size < 0) ? shortTrailPrice : na,
color=color.fuchsia, style=plot.style_cross,
linewidth=2, title="Short Trail Stop")
plot(series=(strategy.position_size > 0) ? longLossPrice : na,
color=color.olive, style=plot.style_cross,
linewidth=2, title="Long Stop Loss")
plot(series=(strategy.position_size < 0) ? shortLossPrice : na,
color=color.olive, style=plot.style_cross,
linewidth=2, title="Short Stop Loss")
// Submit entry orders
if (buy)
strategy.entry("Buy", strategy.long)
if (sell)
strategy.entry("Sell", strategy.short)
//Evaluating trailing stop or stop loss to use
longStopPrice = longTrailPrice < longLossPrice ? longLossPrice : longTrailPrice
shortStopPrice = shortTrailPrice > shortLossPrice ? shortLossPrice : shortTrailPrice
// STEP 3:
// Submit exit orders for stop price
if (strategy.position_size > 0)
strategy.exit(id="Buy Stop", stop=longStopPrice)
if (strategy.position_size < 0)
strategy.exit(id="Sell Stop", stop=shortStopPrice)