
Diese Strategie, die als Trend-Tracking-Strategie der SMA-Gewinnlinie-System genannt wird, basiert auf der Idee, ein Handelssignal mit unterschiedlichen Parameterlängen der SMA-Gewinnlinie zu erstellen, um an den Durchbruchspunkten einzutreten und gleichzeitig das Risiko des Stop-Loss-Mechanismus zu kontrollieren.
Die Strategie nutzt zwei SMA-Mittellinien, nämlich SMA1 und SMA2. Dabei hat SMA1 eine Länge von 1 und SMA2 eine Länge von 3. Durch die Berechnung dieser beiden SMA-Mittellinien erzeugt die Strategie ein Kaufsignal beim Durchschreiten von SMA2 über SMA1 und ein Verkaufssignal beim Durchschreiten von SMA2 unter SMA1, um die Preisentwicklung zu erfassen.
Die Strategie beurteilt die Durchbruchbeziehung der SMA-Grenze anhand der Funktionen ta.crossover und ta.crossunder, wodurch LongCondition und ShortCondition-Bull-Variablen erzeugt werden. Wenn LongCondition wahr ist, wird ein Kaufsignal erzeugt; Wenn ShortCondition wahr ist, wird ein Verkaufssignal erzeugt. Die Strategie wird am Signalpunkt eingegeben und aktualisiert die Variablen profitAccumulated und lastTradeProfit, um die kumulierten Erträge zu verfolgen.
Zur Risikokontrolle wurde auch ein Stop-Loss-Mechanismus eingerichtet, der auf einer festen Anzahl von Punkten basiert. Ab dem Einstiegspunkt wird eine Platzierung des Stop-Loss-Bildes ausgelöst, wenn der Preis den festgelegten Stop-Loss-Punkt erreicht.
Der größte Vorteil dieser Strategie besteht darin, dass sie die Trendverfolgung der SMA-Grenze nutzt, um die Veränderungen der Preisentwicklung effektiv zu erfassen. Im Gegensatz zur Ein-Grenze-Strategie nutzt die Doppel-Grenze-Strategie die Kreuzbeziehung zwischen den Grenzen, um die Richtung der Tendenz zu bestimmen und so ein Handelssignal zu erzeugen. Zusätzlich enthält die Strategie einen Stop-Loss-Mechanismus, der den Einzelschaden effektiv kontrolliert.
Das Hauptrisiko dieser Strategie besteht darin, dass eine durchschnittliche Strategie leicht zu falschen Signalen führt. Wenn die Preise schwanken, können die SMA-Durchschnittlichkeiten häufig gekreuzt werden, was zu unnötigen Handelssignalen führt.
Diese Strategie kann in folgenden Bereichen optimiert werden:
Anpassung der SMA-Parameter auf die optimale Kombination von Durchschnittslängen. Die optimale Parameter können durch Rückmessungen ermittelt werden.
Erhöhen Sie die Filterbedingungen und setzen Sie die Preis-Breakout-Bedingungen in der Nähe der Mittellinien-Kreuzung, um falsche Signale zu vermeiden.
Verschiedene Arten von Verlustlösungen können getestet werden, wie z. B. bewegliche Verlustlösungen, hängende Verlustlösungen usw.
Erhöhung der Position Size-Kontrolle und Optimierung der Kapitalnutzung.
Diese Strategie ist eine typische Trend-Tracking-Strategie. Sie nutzt die Durchbruchbeziehung der SMA-Gewinnlinie, um die Richtung der Preisentwicklung zu bestimmen und an den Trendwechselpunkten einzutreten. Die Strategie verfügt außerdem über eine feste Stop-Loss-Funktion, um das Risiko zu kontrollieren.
/*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)