Momentum-Indikator kombiniert mit gleitendem Durchschnitt für eine Long-Strategie


Erstellungsdatum: 2024-02-29 11:57:18 zuletzt geändert: 2024-02-29 11:57:18
Kopie: 7 Klicks: 536
1
konzentrieren Sie sich auf
1617
Anhänger

Momentum-Indikator kombiniert mit gleitendem Durchschnitt für eine Long-Strategie

Überblick

Die Strategie kombiniert MACD-Dynamik- und DMI-Trend-Indikatoren, um mehrere Handlungen zu machen, wenn sie qualifiziert sind. Ihre Exits haben eine feste Stop-Option und einen benutzerdefinierten volatilen Trailing Stop, um den Gewinn zu sperren.

Grundsätze

Die Einträge der Strategie basieren auf den MACD- und DMI-Indikatoren:

  • Wenn der MACD positiv ist (die MACD-Linie ist höher als die Signal-Linie), bedeutet dies, dass die Marktschwankungen verstärkt sind
  • Wenn DI+ in DMI höher ist als DI-, ist der Markt in einer Aufwärtstrendphase

Wenn die beiden oben genannten Bedingungen erfüllt sind, wird eine zusätzliche Position eröffnet.

Position exits haben zwei Kriterien:

  • Fixed Stop: close Prozentsatz des Preisanstiegs, der die eingestellte Stop erreicht
  • Trailing Stop Loss: Berechnung eines dynamisch angepassten Stop-Loss-Positions mit ATR und den aktuellsten Höchstpreisen. Dieser kann trailing stop loss basierend auf der Marktvolatilität erfolgen

Vorteile

  • Die Kombination von MACD und DMI ermöglicht eine zuverlässigere Beurteilung der Richtung des Markttrends und reduziert Fehltritts
  • Die Stop-Loss-Bedingung kombiniert eine feste Stop-Loss-Bedingung mit einer fluktuierenden Stop-Loss-Bedingung, die eine flexible Gewinnschließung ermöglicht.

Die Gefahr

  • MACD und DMI können falsche Signale erzeugen, was zu unnötigen Verlusten führt
  • Die Festplatte könnte die Gewinnmaximierung beeinträchtigen
  • Trails mit schwankenden Stopps können unpassend, zu radikal oder konservativ sein

Optimierungsrichtung

  • Es kann in Erwägung gezogen werden, andere Kennzahlen zu verwenden, um Eintrittssignale zu filtern, z. B. die KDJ-Kennzahl, um zu bestimmen, ob ein Überkauf oder Überverkauf vorliegt.
  • Verschiedene Parameter können getestet werden, um eine bessere Stop-Loss-Effekt zu erhalten
  • Die Parameter wie beispielsweise der Moving Average können je nach Transaktionsart angepasst werden, um das System zu optimieren

Zusammenfassen

Diese Strategie kombiniert mehrere Indikatoren, um Markttrends und -bedingungen zu beurteilen. Sie greift bei wahrscheinlichen Gewinnszenarien ein. Die Stop-Off-Bedingungen sind optimiert und berücksichtigen die Flexibilität der Gewinnschließung, während sie einen gewissen Gewinn garantieren. Durch die Anpassung der Parameter und die weitere Risikomanagement kann die Strategie zu einem quantifizierten Handelssystem mit stabilen Ausgängen werden.

Strategiequellcode
/*backtest
start: 2024-01-29 00:00:00
end: 2024-02-28 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
//@version=4
strategy(shorttitle='(MACD + DMI Scalping with Volatility Stop',title='MACD + DMI Scalping with Volatility Stop by (Coinrule)', overlay=true, initial_capital = 100, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value=0.1)

// Works better on 3h, 1h, 2h, 4h

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2021, 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()  => true

// DMI and MACD inputs and calculations

[pos_dm, neg_dm, avg_dm] = dmi(14, 14)
[macd, macd_signal, macd_histogram] = macd(close, 12, 26, 9)


Take_profit= ((input (3))/100)

longTakeProfit = strategy.position_avg_price * (1 + Take_profit)

length = input(20, "Length", minval = 2)
src = input(close, "Source")
factor = input(2.0, "vStop Multiplier", minval = 0.25, step = 0.25)
volStop(src, atrlen, atrfactor) =>
    var max     = src
    var min     = src
    var uptrend = true
    var stop    = 0.0
    atrM        = nz(atr(atrlen) * atrfactor, tr)
    max         := max(max, src)
    min         := min(min, src)
    stop        := nz(uptrend ? max(stop, max - atrM) : min(stop, min + atrM), src)
    uptrend     := src - stop >= 0.0
    if uptrend != nz(uptrend[1], true)
        max    := src
        min    := src
        stop   := uptrend ? max - atrM : min + atrM
    [stop, uptrend]

[vStop, uptrend] = volStop(src, length, factor)


closeLong = close > longTakeProfit or crossunder(close, vStop)


//Entry 
strategy.entry(id="long", long = true, when = crossover(macd, macd_signal) and pos_dm > neg_dm and window())


//Exit
strategy.close("long", when = closeLong and window())