Turtle Breakout EMA Kreuzstrategie

Schriftsteller:ChaoZhang, Datum: 2023-11-07 15:40:08
Tags:

img

Übersicht

Diese Strategie verwendet zwei EMA-Linien unterschiedlicher Perioden, um Trendumkehrungen durch ihre Kreuzungen als Ein- und Ausstiegssignale zu identifizieren.

Strategie Logik

Die Strategie berechnet zwei EMA-Linien mit Ta.ema, eine mit einer Länge von 10 für den kurzfristigen und eine mit einer Länge von 20 für den langfristigen Trend. Sie identifiziert EMA-Crossovers und Crossunders mit Ta.crossover und Ta.crossunder, um Ein- und Ausstiegspunkte zu bestimmen. Wenn die kurze EMA über die lange EMA überschreitet, geht sie lang. Wenn die kurze EMA unter die lange EMA überschreitet, geht sie kurz. Auf diese Weise werden die EMA-Crossovers verwendet, um Wendepunkte im Trend zu erfassen.

Die Strategie verwendet auch eine Variable lastCrossTime, um die Zeit des letzten Crossovers aufzuzeichnen, um wiederholte Signale zu vermeiden. Bei jedem gültigen Crossover schließt sie zuerst alle aktuellen Positionen und öffnet dann eine neue Position in Richtung des Crossovers.

Vorteile

  1. Die Strategielogik ist einfach und klar, leicht verständlich und umsetzbar.

  2. Die Verwendung von EMA-Crossovers zur Ermittlung von Trendumkehrpunkten ist eine häufig verwendete effektive technische Indikatorstrategie.

  3. Die Einführung von EMAs für verschiedene Zeiträume hilft, die Empfindlichkeit gegenüber kurzfristigen Bewegungen zu verbessern und gleichzeitig große Trends zu erfassen.

  4. Profit und Stop-Loss helfen, das Risiko und die Belohnung jedes Handels zu kontrollieren.

  5. Die lastCrossTime-Variable filtert Doppelsignale und vermeidet unnötige Trades.

Risiken

  1. EMA-Kreuzungen können falsche Signale erzeugen, mit einem gewissen Whipsaw-Risiko.

  2. Festbetragliche TP und SL können sich möglicherweise nicht an veränderte Marktbedingungen anpassen.

  3. Systeme, die ausschließlich auf EMA-Crossover angewiesen sind, können Verluste auf verschiedenen Märkten erleiden.

  4. Handelskosten wie Spread werden nicht berücksichtigt, was sich auf die tatsächliche Performance auswirkt.

  5. Die Strategie funktioniert besser bei Trends als bei Märkten.

Verbesserungen können durch Optimierung von TP/SL, Hinzufügen von Filtern, Kombination anderer Indikatoren usw. erzielt werden. Eine strenge Risikokontrolle und die Vermeidung großer Einzelverluste sind für den Live-Handel unerlässlich.

Erweiterung

  1. Testen und optimieren Sie EMA-Perioden, um bessere Kombinationen zu finden.

  2. Hinzufügen anderer Indikatoren wie KDJ, MACD usw. zur Verbesserung der Signalqualität und Vermeidung von Whipsaws.

  3. Verwenden Sie dynamische Take Profit und Stop Loss, wie zum Beispiel Trailing Stop entlang des Trends.

  4. Betrachten Sie das Handelsvolumen, um die Signale zu bestätigen.

  5. Einbeziehen Sie Preis-Aktionsmuster wie Breakouts, um Signale zu stärken.

  6. Es werden Handelskosten wie Spreads berücksichtigt und TP/SL-Level entsprechend optimiert.

Schlussfolgerung

Die Strategie identifiziert Trendumkehrungen mit EMA-Crossovers auf einfache und unkomplizierte Weise. TP/SL werden zur Kontrolle von Risiken und Belohnungen verwendet. Es ist einfach zu implementieren, aber EMA-Crossovers haben Whipsaw-Risiken. Weitere Optimierungen können durch Abstimmen von Parametern, Hinzufügen von Filtern und Kombination anderer Indikatoren zur Verbesserung der Robustheit durchgeführt werden.


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

//@version=5
strategy('XXXquang', overlay=true)

// Sử dụng hàm input.int() và input.float() để tạo các trường nhập liệu với giới hạn giá trị
length1 = input.int(10, title="Length EMA Short", minval=1)
length2 = input.int(20, title="Length EMA Long", minval=1)
lotSize = input.int(1, title="Lot Size", minval=1)

takeProfitLevel = input.int(600, title="Take Profit Level", minval=1)
stopLossLevel = input.int(200, title="Stop Loss Level", minval=1)

ema1 = ta.ema(close, length1)
ema2 = ta.ema(close, length2)

var float lastCrossTime = na

if ta.crossover(ema1, ema2)
    if na(lastCrossTime)
        strategy.close_all()
    strategy.entry('Buy Order', strategy.long, qty=lotSize)
    strategy.exit('Exit Buy', 'Buy Order', profit=takeProfitLevel / syminfo.pointvalue, loss=stopLossLevel / syminfo.pointvalue)
    lastCrossTime := timenow

if ta.crossunder(ema1, ema2)
    if na(lastCrossTime)
        strategy.close_all()
    strategy.entry('Sell Order', strategy.short, qty=lotSize)
    strategy.exit('Exit Sell', 'Sell Order', profit=takeProfitLevel / syminfo.pointvalue, loss=stopLossLevel / syminfo.pointvalue)
    lastCrossTime := timenow

plot(ema1, title='EMA Short', color=color.new(color.blue, 0), linewidth=2)
plot(ema2, title='EMA Long', color=color.new(color.red, 0), linewidth=2)


Mehr