
Cette stratégie est appelée la stratégie de suivi de la tendance de la courbe basée sur le système de courbe moyenne SMA, dont l’idée principale est d’utiliser la courbe moyenne SMA de différentes longueurs de paramètres pour construire un signal de négociation, d’entrer dans les points de rupture, tout en combinant le contrôle des risques avec le mécanisme de stop-loss.
La stratégie utilise deux lignes moyennes SMA, SMA1 et SMA2. Parmi celles-ci, SMA1 a une longueur de 1 et SMA2 a une longueur de 3. En calculant ces deux lignes moyennes SMA, la stratégie génère un signal d’achat lorsque SMA1 est traversé par SMA2 et un signal de vente lorsque SMA1 est traversé par SMA2, afin de capturer la tendance des prix.
Plus précisément, la stratégie détermine la relation de rupture de la ligne moyenne SMA à l’aide des fonctions ta.crossover et ta.crossunder, générant ainsi les variables longCondition et shortCondition Bull. Lorsque la longCondition est vraie, un signal d’achat est généré; lorsque la shortCondition est vraie, un signal de vente est généré. La stratégie effectue une entrée au point de signal et met à jour les variables profit Accumulated et lastTradeProfit pour suivre les gains cumulés.
Pour la maîtrise des risques, la stratégie prévoit également un mécanisme de stop-loss basé sur un nombre de points fixe. À partir du point d’entrée, si le prix atteint le point de stop-loss défini, le placement de la position de stop-loss est déclenché.
Le plus grand avantage de cette stratégie réside dans l’utilisation de la fonction de suivi de la tendance de la courbe SMA pour capturer efficacement les changements de tendance des prix. Par rapport à la stratégie de courbe unique, la stratégie de courbe double peut utiliser la relation croisée entre les courbes pour déterminer la direction de la tendance, générant ainsi un signal de négociation. De plus, la stratégie intègre un mécanisme de stop-loss qui permet de contrôler efficacement les pertes individuelles.
Le principal risque de cette stratégie est qu’elle est susceptible de produire de faux signaux. Lorsque les prix sont en train de bouger, les courbes SMA peuvent se croiser fréquemment, ce qui entraîne des signaux de négociation inutiles.
Cette stratégie peut être optimisée dans les domaines suivants:
Ajustez les paramètres SMA pour trouver la meilleure combinaison de longueurs de ligne moyenne. Vous pouvez obtenir les paramètres optimaux en effectuant des mesures de retour.
Ajouter des conditions de filtrage, définir des conditions de rupture de prix à proximité des intersections de la ligne médiane, éviter les faux signaux.
Il est possible de tester différents types d’arrêt de perte, tels que l’arrêt mobile, l’arrêt suspendu, etc.
Augmentation du contrôle de la taille de position et optimisation de l’efficacité de l’utilisation des fonds.
Cette stratégie est généralement une stratégie de suivi de tendance typique. Elle utilise la relation de rupture de la moyenne SMA pour déterminer la direction de la tendance des prix et effectue une entrée au point de changement de tendance.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © cesarpieres72
//@version=5
strategy("Estrategia SMA y Ganancias Acumuladas con Stop Loss", shorttitle="SMA_Ganancias", overlay=true)
// Definir las variables de las medias móviles
sma1_length = input(1, title="SMA 1 Longitud")
sma2_length = input(3, title="SMA 2 Longitud")
// Calcular las medias móviles
sma1 = ta.sma(close, sma1_length)
sma2 = ta.sma(close, sma2_length)
// Condiciones para las señales de compra y venta
longCondition = ta.crossover(sma1, sma2)
shortCondition = ta.crossunder(sma1, sma2)
// Acumular las ganancias
var float profitAccumulated = 0.0
var float lastTradeProfit = na
if (longCondition)
strategy.entry("Buy", strategy.long)
lastTradeProfit := strategy.netprofit - (profitAccumulated + lastTradeProfit)
profitAccumulated := strategy.netprofit
if (shortCondition)
strategy.entry("Sell", strategy.short)
lastTradeProfit := strategy.netprofit - (profitAccumulated + lastTradeProfit)
profitAccumulated := strategy.netprofit
// Mostrar las señales en el gráfico
plot(sma1, color=color.blue, title="SMA 1")
plot(sma2, color=color.red, title="SMA 2")
// Añadir stop loss
stopLossPips = input(5000, title="Stop Loss (en pips)")
stopLossPrice = strategy.position_avg_price * (1 - stopLossPips * syminfo.mintick)
strategy.exit("SL", "Buy", stop=stopLossPrice)