Bewegung der Stop-Loss-Strategie basierend auf Punkten Gewinn und Stop-Loss

Schriftsteller:ChaoZhang, Datum: 2024-01-11 11:04:57
Tags:

img

Übersicht

Die Kernidee dieser Strategie besteht darin, die Überschneidung von EMA und WMA als Einstiegssignale zu verwenden und Take Profit und Stop Loss auf der Grundlage der Punktberechnung für den Handel zu integrieren.

Strategieprinzip

Wenn die EMA die WMA nach oben überschreitet, wird ein langes Signal erzeugt. Wenn die EMA die WMA nach unten überschreitet, wird ein kurzes Signal erzeugt. Nach dem Einlegen von Positionen wird der Einstiegspreis in Echtzeit berechnet, und auf dieser Grundlage werden Stop-Loss und Take-Profit festgelegt. Zum Beispiel setzen Sie den Stop-Loss auf 20 Punkte und nehmen Sie den Gewinn auf 100 Punkte, dann wird der spezifische Stop-Loss-Preis der Einstiegspreis minus 20 Punkte * Vertragswert sein, und der Take-Profit-Preis wird der Einstiegspreis plus 100 Punkte * Vertragswert sein. So werden Risiko und Gewinn kontrolliert.

Gleichzeitig wird die Strategie auch die aktuellen Marktpreise mit historischen Stop-Loss kombinieren, um die bewegliche Stop-Loss-Position anzupassen und einen Nachstop-Loss zu realisieren.

Analyse der Vorteile

Der größte Vorteil dieser Strategie im Vergleich zu festen Punkten oder prozentualen Stop Loss ist, dass sie Risiken sehr flexibel und präzise kontrollieren kann. Durch die Anpassung der Anzahl der Punkte kann die Amplitude des Stop Loss direkt beeinflusst werden. Dies gilt sehr gut für verschiedene Sorten und die Parameter können basierend auf der Frequenz und Amplitude der Marktschwankungen fein abgestimmt werden.

Darüber hinaus ist Trailing Stop Loss auch eine sehr praktische Funktion. Es kann die Stop-Loss-Position auf der Grundlage von Echtzeit-Marktveränderungen verfolgen und anpassen, während gleichzeitig die Risikokontrolle gewährleistet und mögliche Gewinne maximiert werden.

Risikoanalyse

Die wichtigsten Risiken dieser Strategie stammen von den EMA- und WMA-Indikatoren selbst. Bei gewaltsamen Marktbewegungen geben sie oft falsche Signale ab, was leicht zu einem Stop-Loss führt. In diesem Fall wird empfohlen, die Anzahl der Stop-Loss-Punkte angemessen zu lockern oder andere Indikatorenkombinationen zu ersetzen.

Ein weiterer Risikopunkt ist, dass es schwierig ist, Stop-Loss und Take-Profit auszugleichen. Um einen höheren Take-Profit zu erzielen, müssen oft größere Risiken eingegangen werden, was leicht zu einem Stop-Loss führen kann, wenn sich der Markt dreht. Daher muss die Konfiguration von Stop-Loss und Take-Profit sorgfältig getestet und ausgewertet werden.

Optimierungsrichtlinien

Diese Strategie kann in folgenden Aspekten optimiert werden:

  1. Versuche verschiedene Parameterkombinationen von EMA und WMA, um die optimale zu finden;
  2. Versuchen Sie, andere Indikatoren wie MACD, KDJ usw. zu ersetzen oder zu kombinieren und sehen Sie, ob die Gewinnrate verbessert werden kann;
  3. Bewertung der Risikovergütung verschiedener Punktkonfigurationen für Stop Loss und Take Profit und Festlegung der optimalen Einstellung;
  4. Untersuchung der Merkmale der verschiedenen Sorten und Anpassung der Parameter an die verschiedenen Märkte;
  5. Einbeziehung von Algorithmen für maschinelles Lernen zur dynamischen Optimierung von Parametern.

Schlussfolgerung

Die Kernidee dieser Strategie ist einfach und klar, wobei EMA und WMA als Basis verwendet werden und ein punktbasierter Stop-Loss- und Take-Profit-Mechanismus zur Risikokontrolle eingesetzt wird. Der Vorteil der Strategie liegt in einer präzisen und flexiblen Risikokontrolle, die entsprechend für verschiedene Märkte angepasst werden kann. Nachfolgsoptimierungen können in Eingangssignalen, Parameterwahl, Stop-Loss-Mechanismus usw. durchgeführt werden, um die Strategie besser an die komplexen und sich ständig verändernden Marktumgebungen anzupassen.


/*backtest
start: 2024-01-03 00:00:00
end: 2024-01-10 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// inspiration script from: @ahmad_naquib
// inspiration script link: https://www.tradingview.com/script/tGTV8MkY-Two-Take-Profits-and-Two-Stop-Loss/
// inspiration strategy script name: Two Take Profits and Two Stop Loss


////////////
// Do not use this strategy, it's just an exmaple !! The goal from this script is to show you TP and SL based on PIPS
////////////


//@version=5
strategy('SL & TP based on Pips', "PIP SL & TP", overlay=true, initial_capital=1000)

// MA
ema_period = input(title='EMA period', defval=10)
wma_period = input(title='WMA period', defval=20)
ema = ta.ema(close, ema_period)
wma = ta.wma(close, wma_period)

// Entry Conditions
long = ta.crossover(ema, wma) and nz(strategy.position_size) == 0
short = ta.crossunder(ema, wma) and nz(strategy.position_size) == 0

// Pips Calculation
pip1 = input(20, title = "TP PIP", group = "PIP CALCULATION") * 10 * syminfo.mintick
pip2 = input(20, title = "SL PIP", group = "PIP CALCULATION") * 10 * syminfo.mintick

// Trading parameters 
var bool LS = na
var bool SS = na

var float EP = na // Entry Position
var float TVL = na
var float TVS = na
var float TSL = na
var float TSS = na

var float TP1 = na
//var float TP2 = na
var float SL1 = na
///var float SL2 = na

// SL & TP Values
// there's also SL2 and TP2 in case you want to add them to your script, 
//also you can add a break event in the strategy.entry section.

if short or long and strategy.position_size == 0
    EP := close
    SL1 := EP - pip2 * (short ? -1 : 1)
    //SL2 := EP - pip2 * (short ? -1 : 1)
    
    TP1 := EP + pip1 * (short ? -1 : 1)
    //TP2 := EP + pip1 * 2 * (short ? -1 : 1)


// current trade direction    
LS := long or strategy.position_size > 0
SS := short or strategy.position_size < 0

// adjust trade parameters and trailing stop calculations
TVL := math.max(TP1, open) - pip1[1]
TVS := math.min(TP1, open) + pip1[1]
TSL := open[1] > TSL[1] ? math.max(TVL, TSL[1]) : TVL
TSS := open[1] < TSS[1] ? math.min(TVS, TSS[1]) : TVS

//if LS and high > TP1
    //if open <= TP1
        //SL2 := math.min(EP, TSL)

//if SS and low < TP1
    //if open >= TP1
        //SL2 := math.max(EP, TSS)


// Closing conditions
// and those are a closing conditions in case you want to add them.

//close_long = LS and open < SL2
//close_short = SS and open > SL2

// Buy
if (long and not SS)
    strategy.entry('buy', strategy.long)
strategy.exit('exit1', from_entry='buy', stop=SL1, limit=TP1, qty_percent=100)
//strategy.exit('exit2', from_entry='buy', stop=SL2, limit=TP2)

// Sell
if (short and not LS)
    strategy.entry('sell', strategy.short)
strategy.exit('exit3', from_entry='sell', stop=SL1, limit=TP1, qty_percent=100)
//strategy.exit('exit4', from_entry='sell', stop=SL2, limit=TP2)

// Plots
// those are plots for the lines of The tp and sl. they are really useful, and in the next update I will use a filling option.

a = plot(strategy.position_size > 0 ? SL1 : na, color=color.new(#af0829, 30), linewidth = 2, style=plot.style_linebr)
b = plot(strategy.position_size < 0 ? SL1 : na, color=color.new(#af0829, 30), linewidth = 2, style=plot.style_linebr)

c = plot(strategy.position_size > 0 ? TP1 : na, color=color.new(#2e7e00, 30), linewidth = 2, style=plot.style_linebr)
d = plot(strategy.position_size < 0 ? TP1 : na, color=color.new(#2e7e00, 30), linewidth = 2, style=plot.style_linebr)

g = plot(strategy.position_size >= 0 ? na : EP, color=color.new(#ffffff, 50), style=plot.style_linebr)
h = plot(strategy.position_size <= 0 ? na : EP, color=color.new(#ffffff, 50), style=plot.style_linebr)


// those are plot for the TP2 and SL2, they are optional if you want to add them.

//e = plot(strategy.position_size > 0 ? TP2 : na, color=color.new(#00ced1, 0), style=plot.style_linebr)
//f = plot(strategy.position_size < 0 ? TP2 : na, color=color.new(#00ced1, 0), style=plot.style_linebr)


//those are the plot for the ema and wma strategy for short and long signal. they are not really a good strategy, I just used them as an example
//but you have the option to plot them or not.
// do not use this strategy, it's just an exmaple !! The goal from this script is to show you TP and SL based on PIPS

//plot(ema, title='ema', color=color.new(#fff176, 0))
//plot(wma, title='wma', color=color.new(#00ced1, 0))

Mehr