Niedrige Volatilität Richtungskauf mit Gewinnübernahme und Stop Loss

Schriftsteller:ChaoZhang, Datum: 2023-12-18 12:00:07
Tags:

img

Übersicht

Die Strategie trägt den Namen Low Volatility Directional Buy with Profit Taking and Stop Loss. Sie nutzt einen gleitenden Durchschnitts-Crossover als Kaufsignal und kombiniert Profit Taking und Stop Loss, um Gewinn zu erzielen.

Strategie Logik

Die Strategie verwendet 3 gleitende Durchschnitte mit verschiedenen Perioden: 50-Perioden, 100-Perioden und 200-Perioden.

Dies signalisiert einen Ausbruch aus dem niedrigen Volatilitätsbereich und den Beginn eines Trends. Ein schneller Anstieg der 50-Perioden-MA bedeutet eine Stärkung der kurzfristigen Dynamik; ein Anstieg der 100-Perioden-MA zeigt auch auf eine mittelfristige Kraft, die sich dem Aufwärtstrend anschließt.

Nach dem Einstieg verwendet die Strategie Profit Taking und Stop Loss, um Gewinne zu erzielen. Der Take Profit wird auf 8% des Einstiegspreises festgelegt. Der Stop Loss wird auf 4% des Einstiegspreises festgelegt. Mit einem höheren Take Profit über dem Stop Loss wird sichergestellt, dass die Strategie insgesamt profitabel bleibt.

Analyse der Vorteile

Die Vorteile dieser Strategie:

  1. Genaue Erfassung von Trendchancen aus Niedrigvolatilitätsausbrüchen.
  2. Einfache und klare Logik mit gleitenden Durchschnitten, die leicht zu berechnen und zu testen sind.
  3. Eine angemessene Gewinn- und Stop-Loss-Einstellung sorgt für stabile Gewinne.
  4. Flexible konfigurierbare Parameter machen Optimierungen einfach.

Risikoanalyse

Es gibt auch einige Risiken:

  1. Falsche Ausbruchssignale können Verluste verursachen.
  2. Es ist schwer, Verluste zu stoppen, wenn sich die Märkte umkehren.
  3. Unzulässige Einstellungen von Profittaking- und Stop-Loss-Parametern beeinträchtigen die Rentabilität.

Lösungen:

  1. Hinzufügen anderer Indikatoren zum Filtern von Signalen und Sicherstellung der Breakout-Gültigkeit.
  2. Verkürzung der Stop-Loss-Periode zur Verringerung von Verlusten durch Umkehrungen.
  3. Testen Sie verschiedene Profit-taking- und Stop-Loss-Verhältnisse, um das optimale zu finden.

Optimierungsrichtlinien

Optimierungen können in folgenden Bereichen vorgenommen werden:

  1. Versuche verschiedene gleitende Durchschnittsperioden, um die beste Kombination zu finden.
  2. Zusätzliche Volumen usw. bestätigen den Trend.
  3. Dynamische Anpassung der Profit- und Stop-Loss-Prozentsätze.
  4. Einbeziehen von maschinellem Lernen usw., um die Erfolgsrate von Ausbrüchen vorherzusagen.
  5. Anpassung der Parameter anhand unterschiedlicher Marktbedingungen und Münzen.

Zusammenfassend lässt sich sagen, dass die Strategie insgesamt eine klare Logik aufweist und durch die Konfiguration von gleitenden Durchschnittszeiten und Profit-Taking/Stop-Loss-Prozentsatz einen geringen Risikogewinn erzielt. Sie kann flexibel im quantitativen Handel angewendet werden. Weitere Optimierungen können in Bereichen wie Einstiegssignale und Stop-Loss-Methoden durchgeführt werden, kombiniert mit Parameter-Tuning, um beste Ergebnisse zu erzielen.


/*backtest
start: 2023-12-10 00:00:00
end: 2023-12-17 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(shorttitle='Low volatility Buy w/ TP & SL (by Coinrule)',title='Low volatility Buy w/ TP & SL', overlay=true, initial_capital = 1000, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 10,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2019, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false       // create function "within window of time"

//MA inputs and calculations
movingaverage_fast = sma(close, input(50))
movingaverage_slow = sma(close, input(200))
movingaverage_normal= sma(close, input(100))



//Entry 
strategy.entry(id="long", long = true, when = movingaverage_slow > movingaverage_normal and movingaverage_fast > movingaverage_normal)

//Exit
longStopPrice  = strategy.position_avg_price * (1 - 0.04)
longTakeProfit = strategy.position_avg_price * (1 + 0.08)

strategy.close("long", when = close < longStopPrice or close > longTakeProfit and window())

//PLOT

plot(movingaverage_fast, color=color.orange, linewidth=2)
plot(movingaverage_slow, color=color.purple, linewidth=3)
plot(movingaverage_normal, color=color.blue, linewidth=2)


Mehr