Doppelter Gewinn, Stop-Loss, gleitender Durchschnitt, Crossover, quantitative Strategie


Erstellungsdatum: 2023-11-14 16:04:33 zuletzt geändert: 2023-11-14 16:04:33
Kopie: 0 Klicks: 682
1
konzentrieren Sie sich auf
1621
Anhänger

Doppelter Gewinn, Stop-Loss, gleitender Durchschnitt, Crossover, quantitative Strategie

Überblick

Diese Strategie verwendet einfache Moving Average-Cross- und Double-Stop-Techniken, um Risiken zu kontrollieren und die Gewinnwahrscheinlichkeit zu erhöhen. Die Strategie ist für mittlere und kurzfristige Geschäfte geeignet, um Chancen bei Trendänderungen zu erfassen.

Strategieprinzip

Die Strategie basiert auf der Kreuzung von EMA und WMA, um die Kursentwicklung zu beurteilen. Wenn die EMA über die WMA geht, machen Sie mehr; wenn die EMA unter die WMA geht, machen Sie weniger.

Jedes Mal, wenn eine Position eröffnet wird, setzt die Strategie zwei Stop-Levels ein. Der erste Stop-Level ist auf den Eröffnungspreis + 20 Punkte festgelegt, der zweite Stop-Level auf den Eröffnungspreis + 40 Punkte. Gleichzeitig wird ein Stop-Loss-Level auf den Eröffnungspreis - 20 Punkte festgelegt.

Wenn der Preis das erste Stop-Livell berührt, wird die halbe Position platziert. Die verbleibenden Positionen werden weiter gehalten, um das zweite Stop-Livell zu erreichen oder zu verlieren.

In diesem Fall hat jede Transaktion drei mögliche Ergebnisse:

  1. Der Preis löst den Stop-Loss aus und führt zu einem direkten Verlust von 2%.

  2. Der Preis löst den ersten Stopp aus, platziert eine halbe Position und sperrt 1% Gewinn, dann läuft er weiter, bis er gestoppt wird, endlich ausgeglichen ist und null Gewinn erzielt.

  3. Der Preis setzt nach dem ersten Stopp fort und trifft dann den zweiten Stopp, was zu einem Gewinn von 1% + 2% = 3% führt.

Analyse der Stärken

Der größte Vorteil dieser doppelten Stop-Loss-Strategie besteht darin, dass man das Risiko kontrollieren kann, um einen großen Einmalverlust zu vermeiden. Wenn der Markt schlecht ist, kann der Stop-Loss den Verlust innerhalb von 2% halten.

Im Vergleich zu einer einzigen Stop-Loss-Strategie hat diese Strategie drei Ergebnisse: Verlust, Gewinn und kein Verlust, was die Wahrscheinlichkeit eines Stop-Losses verringert. Selbst bei einem Stop-Loss ist der Maximalverlust bei 2% begrenzt. Im Vergleich zu einer herkömmlichen Stop-Loss-Strategie verringert diese Double-Stop-Strategie den DD erheblich und erhöht die Gewinnrate.

Ein weiterer Vorteil ist die Einfachheit der Bedienung. EMA und WMA sind bekannte Indikatoren, die leicht verständlich sind. Die Stop-Loss-Logik ist sehr klar und kann leicht überwacht werden.

Risikoanalyse

Obwohl diese Strategie einige Vorteile hat, gibt es einige Risiken, die es zu beachten gilt.

Erstens sind EMAs und WMAs als Durchschnittsindikatoren schwach in der Erkennung von Erschütterungen. Es kann zu viel falsches Signal erzeugt werden, wenn der Trend nicht sichtbar ist, was zu häufigem Handel führt.

Zweitens kann der festgelegte Stop-Loss-Punkt nicht mit den Marktschwankungen übereinstimmen. Wenn die Schwankungen größer sind, kann der Stop-Loss durchbrochen werden und kann nicht als Schutz wirken.

Schließlich kann die Strategie nicht auf unvorhergesehene Ereignisse reagieren und es besteht die Gefahr, dass sie eingeschränkt wird. Bei einem wichtigen Nachrichtenereignis kann es zu einem starken Sprung kommen, der direkt durch die Stop-Line geht und zu großen Verlusten führt.

Optimierungsrichtung

Die Strategie kann in folgenden Bereichen weiter optimiert werden:

  1. Verbesserte Eingangssignale. Sie können eine bessere Durchschnitts- oder Trendanzeige als EMA und WMA ausprobieren, um die Signalqualität zu verbessern.

  2. Die Stop-Loss-Liste kann in Echtzeit angepasst werden, so dass sie dynamisch mit dem Markt verläuft.

  3. Hinzufügen von Filterbedingungen. Sie können die Anzahl der Transaktionen oder die Bestätigung der Nebenindikatoren vor der Goldfork hinzufügen, um zu vermeiden, dass sie eingestellt werden. Sie können auch nach dem Kalender der wichtigsten Ereignisse auswählen, ob sie gehandelt werden sollen.

  4. Optimierung des Positionsmanagements. Die spezifische Positionsgröße für jeden Handel kann nach den Prinzipien des Geldmanagements optimiert werden.

Zusammenfassen

Diese Strategie ist insgesamt eine einfache und praktische Trend-Tracking-Strategie. Sie verwendet EMA und WMA, um Handelssignale zu erzeugen, und verwendet eine doppelte Stop-Stop-Technik, um das Risiko zu kontrollieren. Im Vergleich zu herkömmlichen Strategien hat sie die Vorteile einer höheren Gewinnwahrscheinlichkeit und eines geringeren Risikos.

Strategiequellcode
/*backtest
start: 2023-11-06 00:00:00
end: 2023-11-13 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("FS ATR & PS (MA)", overlay=true)

// Strategy
Buy  = input(true)
Sell = input(true)

// Time Period
start_year   = input(title='Start year'   ,defval=2019)
start_month  = input(title='Start month'  ,defval=1)
start_day    = input(title='Start day'    ,defval=1)
start_hour   = input(title='Start hour '  ,defval=0)
start_minute = input(title='Start minute' ,defval=0)
end_time     = input(title='set end time?',defval=false)
end_year     = input(title='end year'     ,defval=2019)
end_month    = input(title='end month'    ,defval=12)
end_day      = input(title='end day'      ,defval=31)
end_hour     = input(title='end hour'     ,defval=23)
end_minute   = input(title='end minute'   ,defval=59)

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

// Entry Condition
longCondition  = 
 crossover(ema,wma) and Buy and
 nz(strategy.position_size) == 0 and
 time > timestamp(start_year, start_month, start_day, start_hour, start_minute) and
 (end_time?(time < timestamp(end_year, end_month, end_day, end_hour, end_minute)):true)
 
shortCondition = 
 crossunder(ema,wma) and Sell and
 nz(strategy.position_size) == 0 and
 time > timestamp(start_year, start_month, start_day, start_hour, start_minute) and
 (end_time?(time < timestamp(end_year, end_month, end_day, end_hour, end_minute)):true)

// Exit Condition
a = input(20)*10
b = input(40)*10
c = a*syminfo.mintick
d = b*syminfo.mintick

long_stop_level     = float(na)
long_profit_level1  = float(na)
long_profit_level2  = float(na)
long_even_level     = float(na)

short_stop_level    = float(na)
short_profit_level1 = float(na)
short_profit_level2 = float(na)
short_even_level    = float(na)

long_stop_level     := longCondition  ? close - c : long_stop_level     [1]
long_profit_level1  := longCondition  ? close + c : long_profit_level1  [1]
long_profit_level2  := longCondition  ? close + d : long_profit_level2  [1]
long_even_level     := longCondition  ? close + 0 : long_even_level     [1]

short_stop_level    := shortCondition ? close + c : short_stop_level    [1]
short_profit_level1 := shortCondition ? close - c : short_profit_level1 [1]
short_profit_level2 := shortCondition ? close - d : short_profit_level2 [1]
short_even_level    := shortCondition ? close + 0 : short_even_level    [1] 

// Position Sizing
Risk = input(defval=10, title="Risk per trade%", step=1, minval=0, maxval=100)/100
size  = 1

// Strategy
if longCondition
    strategy.entry("Buy"  , strategy.long, qty=size)
    strategy.exit ("Exit1", stop=long_stop_level, limit=long_profit_level1, qty=size/2)
    strategy.exit ("Exit2", stop=long_stop_level, limit=long_profit_level2)
    
if shortCondition
    strategy.entry("Sell" , strategy.short, qty=size)
    strategy.exit ("Exit3", stop=short_stop_level, limit=short_profit_level1, qty=size/2)
    strategy.exit ("Exit4", stop=short_stop_level, limit=short_profit_level2)
    
// Plot
plot(strategy.position_size <= 0 ? na : long_stop_level    , color=#dc143c, style=plot.style_linebr, linewidth=1)
plot(strategy.position_size <= 0 ? na : long_profit_level1 , color=#00ced1, style=plot.style_linebr, linewidth=1)
plot(strategy.position_size <= 0 ? na : long_profit_level2 , color=#00ced1, style=plot.style_linebr, linewidth=1)
plot(strategy.position_size <= 0 ? na : long_even_level    , color=#ffffff, style=plot.style_linebr, linewidth=1)
plot(strategy.position_size >= 0 ? na : short_stop_level   , color=#dc143c, style=plot.style_linebr, linewidth=1)
plot(strategy.position_size >= 0 ? na : short_profit_level1, color=#00ced1, style=plot.style_linebr, linewidth=1)
plot(strategy.position_size >= 0 ? na : short_profit_level2, color=#00ced1, style=plot.style_linebr, linewidth=1)
plot(strategy.position_size >= 0 ? na : short_even_level   , color=#ffffff, style=plot.style_linebr, linewidth=1)
plot(ema,color=#00ced1)
plot(wma,color=#dc143c)