Die Strategie trägt den Namen
Die Strategie verwendet zwei SMA-Linien, SMA1 und SMA2. Die Länge von SMA1 ist 1 und die Länge von SMA2 ist 3. Durch die Berechnung dieser beiden SMA-Linien wird, wenn SMA1 über SMA2 überschreitet, ein Kaufsignal generiert. Wenn SMA1 unter SMA2 überschreitet, wird ein Verkaufssignal generiert. Dies zielt darauf ab, den Kurstrend zu erfassen.
Insbesondere beurteilt die Strategie die Crossover-Beziehung zwischen den SMA-Linien durch die Funktionen ta.crossover und ta.crossunder und erzeugt die longCondition- und shortCondition-Boole-Variablen. Wenn longCondition wahr ist, wird ein Kaufsignal generiert. Wenn shortCondition wahr ist, wird ein Verkaufssignal generiert. Die Strategie tritt am Signalpunkt in den Markt ein und aktualisiert die Variablen profitAccumulated und lastTradeProfit, um die angesammelten Gewinne zu verfolgen.
Für die Risikokontrolle setzt die Strategie auch einen auf festen Punkten basierenden Stop-Loss-Mechanismus fest.
Der größte Vorteil dieser Strategie besteht darin, dass sie die Trendverfolgungsfähigkeit von SMA-Linien nutzt, um Veränderungen der Preisentwicklung effektiv zu erfassen. Im Vergleich zu Einzellinienstrategien können Doppellinienstrategien die Überschreitungsbeziehung zwischen den Linien verwenden, um die Trendrichtung zu bestimmen und somit Handelssignale zu generieren. Darüber hinaus kann der Stop-Loss-Mechanismus einen einzelnen Verlust effektiv kontrollieren.
Das Hauptrisiko dieser Strategie besteht darin, dass die gleitende Durchschnittsstrategie dazu neigt, falsche Signale zu erzeugen. Wenn der Preis oszilliert, kann die SMA-Linie häufig überquert werden, was zu unnötigen Handelssignalen führt. Zu diesem Zeitpunkt können große Verluste ohne effektiven Stop-Loss auftreten.
Die Strategie kann in folgenden Aspekten optimiert werden:
Anpassen der SMA-Parameter, um die beste Kombination von gleitenden Durchschnittslängen durch Backtesting zu finden.
Erhöhen Sie die Filterbedingungen und setzen Sie die Preisdurchbruchbedingungen in der Nähe des gleitenden Durchschnitts, um falsche Signale zu vermeiden.
Es können verschiedene Arten von Stop-Loss-Methoden getestet werden, z. B. mobile Stop-Loss, pending order Stop-Loss usw.
Zusätzliche Positionsgrößenkontrolle zur Optimierung der Kapitalnutzungseffizienz
Insgesamt handelt es sich um eine typische Trend-Folge-Strategie. Sie verwendet die Durchbruch-Beziehung zwischen SMA-Linien, um die Richtung des Kurstrends zu bestimmen und an einem Wendepunkt des Trends einzutreten. Gleichzeitig hat die Strategie eine feste Stop-Loss-Funktion zur Risikokontrolle. Die Strategie ist einfach, leicht zu verstehen, benötigt aber noch eingehende Tests und Optimierungen, bevor sie im realen Handel stabile Gewinne erzielt.
/*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)