Die Strategie trägt den Namen
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
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.
Die Vorteile dieser Strategie:
Es gibt auch einige Risiken:
Lösungen:
Optimierungen können in folgenden Bereichen vorgenommen werden:
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)