Cette stratégie utilise les signaux de croisement entre la moyenne mobile lissée à 50 périodes (SMMA) et la moyenne mobile simple à 20 périodes (SMA) pour déterminer les entrées et les sorties. Elle génère des signaux d'achat lorsque la ligne SMA rapide traverse au-dessus de la ligne SMMA lente, et des signaux de vente lorsque la SMA traverse au-dessous de la SMMA.
Test de combinaisons de différents paramètres (périodes de cycle, critères de filtrage, etc.) pour trouver l'optimum.
Incorporer d'autres facteurs comme les pics de volume pour filtrer les signaux.
Utiliser des outils d'optimisation des paramètres pour trouver les paramètres optimaux.
Envisagez d'intégrer d'autres méthodes de prise de profit comme le trailing stop ou les sorties basées sur le ratio de profit.
Calculer la fourchette de stop loss dynamique en fonction de la volatilité du marché.
Cette stratégie a une logique relativement simple, capturant les directions de tendance via des moyennes mobiles doubles. L'utilisation flexible de profit fixe et de stop loss dynamique pour la prise de profit et le contrôle des risques parvient à un équilibre entre risque et récompense.
/*backtest start: 2023-01-26 00:00:00 end: 2024-02-01 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("50 SMMA and 20 SMA Crossover with TP and SL", overlay=true) // Define 50 SMMA smma50 = sma(close, 50) // Define 20 SMA sma20 = sma(close, 20) // Plotting the SMMA and SMA plot(smma50, color=color.blue, title="50 SMMA") plot(sma20, color=color.red, title="20 SMA") // Initialize TP and SL variables tp = 150 var float sl_price = na // Buy Signal buySignal = crossover(sma20, smma50) strategy.entry("Buy", strategy.long, when = buySignal) strategy.exit("Take Profit/Stop Loss", from_entry="Buy", profit=tp, loss=sl_price) // Sell Signal sellSignal = crossunder(sma20, smma50) strategy.entry("Sell", strategy.short, when = sellSignal) strategy.exit("Take Profit/Stop Loss", from_entry="Sell", profit=tp, loss=sl_price) // Update stop loss level on every crossover if (buySignal or sellSignal) sl_price := close[bar_index + 1] // Plot Stop Loss level plotshape(series=sl_price != na, title="Stop Loss Level", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)