EMA-Strategie mit mehreren kostengewichteten Durchschnittskosten basierend auf dynamischem Stop-Loss und Zielgewinn


Erstellungsdatum: 2024-01-19 15:16:53 zuletzt geändert: 2024-01-19 15:16:53
Kopie: 2 Klicks: 778
1
konzentrieren Sie sich auf
1617
Anhänger

EMA-Strategie mit mehreren kostengewichteten Durchschnittskosten basierend auf dynamischem Stop-Loss und Zielgewinn

Überblick

Die Strategie verwendet dynamische Multiple Index Moving Averages als Markteintrittssignale, um Risiken und Gewinne in Kombination mit Stop-Loss- und Target-Profit-Mechanismen zu verwalten. Die Strategie nutzt die glatte Natur der EMA, um Trends zu identifizieren und die Kosten durch mehrere DCA-Investitionen zu kontrollieren. Darüber hinaus wird die Einrichtung von dynamischen Stop-Loss- und Target-Profit-Einstellungen integriert, um die gesamte Strategie intelligenter und automatisierter zu machen.

Strategieprinzip

Indikatorberechnung

  • EMA5, EMA10, EMA20, EMA50, EMA100 und EMA200
  • ATR-Durchschnittswirkungsgrad

Eintrittszeichen

Die EMA-Zyklen können angepasst werden, typischerweise mit 5, 10, 20, 50, 100 und 200 Zyklen. Diese Strategie verwendet Preise in der 1% -Reihe von EMAs als Einstiegsbedingungen.

Risikomanagement

Die Integration mehrerer Risikomanagementmechanismen:

  1. ATR-Stopp: Liquidationsstopp, wenn der ATR die eingestellte Schwelle überschreitet
  2. Maximale Markteinführung: Vermeiden Sie Überinvestitionen
  3. Dynamische Tracking-Stopp: Trailing-Stopp basierend auf den Preisschwankungen in Echtzeit

Gewinnmechanismen

Setzen Sie sich ein Ziel, um ein Gewinn zu erzielen, und gehen Sie aus, wenn der Preis über dem Ziel liegt

Strategische Stärkenanalyse

  1. Die EMA kann Trends erkennen und kurzfristige Schwankungen filtern.
  2. DCA-Kosten sind verteilt und es wird vermieden, zu kaufen oder zu verkaufen.
  3. Mehrfache EMA-Portfolio, Erfolg bei der Börsengang
  4. Dynamische Stop-Losses mit REAL-TIME-Kontrollverlust
  5. Das Ziel ist klar, nicht zu viel Geld zu verschwenden

Risiken und Verbesserung

  1. Die Auswahl der EMA-Faktoren muss optimiert werden, da die Wirksamkeit der Kombinationszyklen in verschiedenen Märkten stark variiert.
  2. Zu viele DCAs könnten zu einer Überbeanspruchung führen
  3. Die Stop-Loss-Wert-Einstellung erfordert eine Rückmessoptimierung.

Strategische Optimierungsideen

  1. Trends mit Hilfe von EMA-Systemen
  2. Optimale DCA-Zyklen und Stop-Loss-Margen für die Multivariate Optimierung
  3. Hinzugefügt wird ein maschinelles Lernmodell, um Preisänderungen vorherzusagen.
  4. Integrierte Kapitalverwaltungsmodule zur Steuerung der Gesamtinvestitionen

Zusammenfassen

Die Strategie integriert mehrere Mechanismen wie EMA-Identifizierung, DCA-Kostenkontrolle, dynamische Verfolgung von Stop-Losses und Zielgewinn-Exits. Es gibt noch viel Optimierungsraum in Bezug auf Parameteranpassung und Risikokontrolle. Insgesamt ist die Strategie sehr anpassungsfähig und skalierbar und kann zu einem stabilen Plus für Investoren führen.

Strategiequellcode
/*backtest
start: 2023-01-12 00:00:00
end: 2024-01-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("EMA DCA Strategy with Trailing Stop and Profit Target", overlay=true )

// Define the investment amount for when the condition is met
investment_per_condition = 6

// Define the EMAs
ema5 = ema(close, 5)
ema10 = ema(close, 10)
ema20 = ema(close, 20)
ema50 = ema(close, 50)
ema100 = ema(close, 100)
ema200 = ema(close, 200)

// Define ATR sell threshold
atr_sell_threshold = input(title="ATR Sell Threshold", type=input.integer, defval=10, minval=1)

// Helper function to find if the price is within 1% of the EMA
isWithin1Percent(price, ema) =>
    ema_min = ema * 0.99
    ema_max = ema * 1.01
    price >= ema_min and price <= ema_max

// Control the number of buys
var int buy_count = 0
buy_limit = input(title="Buy Limit", type=input.integer, defval=3000)

// Calculate trailing stop and profit target levels
trail_percent = input(title="Trailing Stop Percentage", type=input.integer, defval=1, minval=0, maxval=10)
profit_target_percent = input(title="Profit Target Percentage", type=input.integer, defval=3, minval=1, maxval=10)

// Determine if the conditions are met and execute the strategy
checkConditionAndBuy(emaValue, emaName) =>
    var int local_buy_count = 0 // Create a local mutable variable
    if isWithin1Percent(close, emaValue) and local_buy_count < buy_limit
        strategy.entry("Buy at " + emaName, strategy.long, qty=investment_per_condition / close, alert_message ="Buy condition met for " + emaName)
        local_buy_count := local_buy_count + 1
        // alert("Buy Condition", "Buy condition met for ", freq_once_per_bar_close)
        
    local_buy_count // Return the updated local_buy_count

// Add ATR sell condition
atr_condition = atr(20) > atr_sell_threshold
if atr_condition
    strategy.close_all()
    buy_count := 0 // Reset the global buy_count when selling

// Strategy execution
buy_count := checkConditionAndBuy(ema5, "EMA5")
buy_count := checkConditionAndBuy(ema10, "EMA10")
buy_count := checkConditionAndBuy(ema20, "EMA20")
buy_count := checkConditionAndBuy(ema50, "EMA50")
buy_count := checkConditionAndBuy(ema100, "EMA100")
buy_count := checkConditionAndBuy(ema200, "EMA200")

// Calculate trailing stop level
trail_offset = close * trail_percent / 100
trail_level = close - trail_offset

// Set profit target level
profit_target_level = close * (1 + profit_target_percent / 100)

// Exit strategy: Trailing Stop and Profit Target
strategy.exit("TrailingStop", from_entry="Buy at EMA", trail_offset=trail_offset, trail_price=trail_level)
strategy.exit("ProfitTarget", from_entry="Buy at EMA",  when=close >= profit_target_level)

// Plot EMAs
plot(ema5, title="EMA 5", color=color.red)
plot(ema10, title="EMA 10", color=color.orange)
plot(ema20, title="EMA 20", color=color.yellow)
plot(ema50, title="EMA 50", color=color.green)
plot(ema100, title="EMA 100", color=color.blue)
plot(ema200, title="EMA 200", color=color.purple)