Trendfolgestrategie für den doppelten gleitenden Durchschnittkanal

SMA EMA RSI MACD
Erstellungsdatum: 2024-09-26 16:28:19 zuletzt geändert: 2024-09-26 16:28:19
Kopie: 2 Klicks: 748
1
konzentrieren Sie sich auf
1617
Anhänger

Trendfolgestrategie für den doppelten gleitenden Durchschnittkanal

Überblick

Die Strategie ist ein Trend-Tracking-System, basierend auf einer doppelten Mittellinie und einem Kanal. Sie nutzt die Kreuzung der Kurz- und Langzeit-Moving Averages in Verbindung mit den Kanälen, die durch den Index-Moving Average (EMA) gebildet werden, um Markttrends zu erfassen und zu handeln. Die Strategie ist sowohl für den Mehrwert- als auch für den Leerwertmarkt geeignet, um Risiken und Gewinne zu verwalten, indem Sie Stop-Loss- und Stop-Stops setzen.

Strategieprinzip

Die Kernlogik der Strategie umfasst die folgenden Schlüsselelemente:

  1. Zwei einfache Moving Averages ((SMA) als Haupttrendindikatoren, 55-Perioden- und 300-Perioden-SMA.
  2. Die Handelskanäle werden mit zwei Index-Moving Averages (EMA) gebildet, EMAs für 576-Perioden und 676-Perioden.
  3. Wenn ein kurzer SMA einen langen SMA oder EMA trägt, wird ein Mehrsignal ausgelöst. Wenn ein kurzer SMA einen langen SMA oder EMA trägt, wird ein Leerlaufsignal ausgelöst.
  4. Stop-and-Stop-Strategien mit festen Punkten, mit einem Stop-Loss-Satz von 170 des Einstiegspreises und einem Stop-Satz von 1140 des Einstiegspreises.
  5. Wenn der Gewinn 300 Punkte erreicht hat, wird der mobile Stop-Loss-Mechanismus aktiviert, um die erzielten Gewinne zu schützen.
  6. Die Strategie beinhaltet außerdem die automatische Befreiung von Schaden, wenn der Preis die Stop-Loss- oder Stop-Through-Punkte erreicht.

Strategische Vorteile

  1. Multi-Indikator-Kombination: Durch die Kombination von mehreren Moving Averages und EMA-Kanälen wird die Genauigkeit der Trendbeurteilung verbessert.
  2. Zwei-Wege-Trading: Die Strategie kann sowohl in den Mehrkopf- als auch in den Leerkopf-Märkten profitieren, was die Effizienz der Kapitalnutzung erhöht.
  3. Risikomanagement: Stop-Loss- und Stop-Stops mit festen Punkten, um das Risiko pro Handel effektiv zu kontrollieren.
  4. Gewinnschutz: Die Verwendung eines mobilen Stop-Loss-Mechanismus, um einen Teil des Gewinns zu sperren, wenn der Trend anhält.
  5. Flexibilität: Strategieparameter können an unterschiedliche Marktbedingungen angepasst werden.

Strategisches Risiko

  1. Das Risiko von Marktschwankungen: In einem horizontal schwankenden Markt kann es zu häufigen Fehlsignalen kommen, die zu fortlaufenden Verlusten führen.
  2. Rutschrisiko: In einem sehr volatilen Markt kann der tatsächliche Kaufpreis von dem idealen Preis abweichen.
  3. Übertriebenheit: Häufige Handelssignale können zu hohen Handelskosten führen.
  4. Parameter-Sensitivität: Die Strategie kann sehr sensibel auf Parameter-Einstellungen reagieren, die häufig angepasst werden müssen.

Richtung der Strategieoptimierung

  1. Einführung von Volatilitätsindikatoren: Erwägen Sie die Einbeziehung des ATR (Average True Range) zur dynamischen Anpassung der Stop-Loss- und Stop-Out-Punkte an unterschiedliche Marktschwankungen.
  2. Erhöhung der Trendstärke-Filterung: Die ADX kann eingeführt werden, um schwache Trendsignale zu filtern und den Verlust durch falsche Durchbrüche zu reduzieren.
  3. Optimieren Sie die Eintrittszeit: Berücksichtigen Sie die Kombination von RSI (relativ starke Schwäche) oder MACD (Moving Average Convergence Spread) zur Optimierung der Eintrittszeit und zur Erhöhung der Gewinnrate.
  4. Optimierung der Kapitalverwaltung: Dynamische Positionsverwaltung, die den Anteil des Kapitals pro Transaktion an den Nettowert der Konten und den Marktschwankungen anpasst.
  5. Ausdehnung des Rückprüfungszyklus: Die Strategie wird in längeren Zeiträumen zurückgetestet, um ihre Stabilität in verschiedenen Marktumgebungen zu überprüfen.

Zusammenfassen

Diese Trend-Tracking-Strategie bietet ein umfassendes Handelssystem durch die Kombination mehrerer technischer Indikatoren. Sie ist nicht nur in der Lage, die wichtigsten Trends zu erfassen, sondern verfügt auch über Risikomanagement und Gewinnschutzmechanismen. Obwohl einige potenzielle Risiken bestehen, hat die Strategie durch kontinuierliche Optimierung und Parameteranpassung das Potenzial, unter verschiedenen Marktbedingungen gut zu funktionieren.

Strategiequellcode
/*backtest
start: 2024-08-26 00:00:00
end: 2024-09-24 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("RC BTC Vegas 5min free ", overlay=true )

// 定义输入参数
short_ma_length = input.int(55, title="Short MA Length")
long_ma_length = input.int(300, title="Long MA Length")

ema1_length = input.int(576, title="EMA 1 Length")
ema2_length = input.int(676, title="EMA 2 Length")
// 计算移动平均线 
short_ma = ta.sma(close, short_ma_length)
long_ma = ta.sma(close, long_ma_length)
ema1 = ta.ema(close, ema1_length)
ema2 = ta.ema(close, ema2_length)
// 确定买入和卖出信号 
enter_long = ta.crossover(short_ma +5 , ema1)
enter_long2 = ta.crossover(short_ma +5 , long_ma)
enter_long3 =ta.crossover(long_ma+5  , ema1)

exit_long = ta.crossunder(short_ma -5, ema1) 
exit_long2 = ta.crossunder(short_ma -5, long_ma) 
exit_long3 = ta.crossunder(long_ma-5 , ema1)

// 记录进场价格
var float long_stop_loss = na
var float long_take_profit = na

if (enter_long or exit_long  )
    long_stop_loss := close

if (enter_long or exit_long)
    long_take_profit := close

// 根据进场价格计算止损和止盈点数 
stop_loss_points = long_stop_loss /70
take_profit_points  = long_take_profit /140
// 设置固定点数的止损和止
Along_stop_loss = close - stop_loss_points
Along_take_profit = close + take_profit_points
short_stop_loss = close + stop_loss_points
short_take_profit = close - take_profit_points

// 检查持仓利润是否达到300点
long_profit_target_reached = (strategy.position_size > 0 and (close - strategy.position_avg_price) >= take_profit_points)
short_profit_target_reached = (strategy.position_size < 0 and (strategy.position_avg_price - close) >= take_profit_points)

// 即时止损和止盈检查
long_stop_loss_hit = (strategy.position_size > 0 and close <= strategy.position_avg_price - stop_loss_points)
long_take_profit_hit = (strategy.position_size > 0 and close >= strategy.position_avg_price + take_profit_points)
short_stop_loss_hit = (strategy.position_size < 0 and close >= strategy.position_avg_price + stop_loss_points)
short_take_profit_hit = (strategy.position_size < 0 and close <= strategy.position_avg_price - take_profit_points)
// 上一根K棒的止盈止损检查
long_stop_loss_hit_prev = (strategy.position_size > 0 and low[1] <= strategy.position_avg_price - stop_loss_points)
long_take_profit_hit_prev = (strategy.position_size > 0 and high[1]>= strategy.position_avg_price + take_profit_points)
short_stop_loss_hit_prev = (strategy.position_size < 0 and high[1] >= strategy.position_avg_price + stop_loss_points)
short_take_profit_hit_prev = (strategy.position_size < 0 and low[1] <= strategy.position_avg_price - take_profit_points)

// 创建警报条件
alertcondition(long_stop_loss_hit, title="Long Stop Loss Hit", message="Long position stop loss hit")
alertcondition(long_take_profit_hit, title="Long Take Profit Hit", message="Long position take profit hit")
alertcondition(short_stop_loss_hit, title="Short Stop Loss Hit", message="Short position stop loss hit")
alertcondition(short_take_profit_hit, title="Short Take Profit Hit", message="Short position take profit hit")
// 移动止损输入
initialProfitLevel = input.float(9, title="Initial Profit Level (points)")
trailingStopIncrement = input.float(3, title="Trailing Stop Increment (points)")
if (close - long_take_profit >= 150)
    strategy.exit("多單移平", from_entry="Buy", trail_price=close+5 , trail_offset=5  )
if (close - long_take_profit <= -150)
    strategy.exit("空單移平", from_entry="Sell", trail_price=close-5 , trail_offset=5)

// 执行多单交易
if (enter_long or enter_long2  )
    strategy.entry("Buy", strategy.long, qty=1 , comment = "做多")

if (long_stop_loss_hit or long_take_profit_hit  ) 
    strategy.close("Buy",comment = "多單平倉")
//死亡交叉才跟著做空就打開
if (exit_long  or exit_long2  )
    strategy.entry("Sell" ,strategy.short, qty=1 , comment = "做空")

// 执行空单交易
if ( short_take_profit_hit or short_stop_loss_hit ) 
    strategy.close("Sell",comment = "空單平倉")

// 绘制移动平均线
plot(short_ma, title="Short MA", color=color.blue)
plot(long_ma, title="Long MA", color=color.red)

// 绘制进场和出场点
plotshape(series=enter_long, location=location.belowbar, color=color.green, style=shape.labelup, text="做多")
plotshape(series=exit_long , location=location.abovebar, color=color.red, style=shape.labeldown, text="做空") 
plotshape(series=long_take_profit_hit , location=location.abovebar, color=color.yellow, style=shape.labeldown, text="多單止盈")  
plotshape(series=short_take_profit_hit , location=location.abovebar, color=color.yellow, style=shape.labeldown, text="空單止盈") 
plotshape(series=short_stop_loss_hit , location=location.abovebar, color=color.black, style=shape.labeldown, text="空單止損") 
plotshape(series=long_stop_loss_hit , location=location.abovebar, color=color.black, style=shape.labeldown, text="多單止損") 
 
// 绘制止盈和止损点
plot(series=enter_long ? Along_take_profit : na, title="Take Profit", color=color.green, linewidth=2, style=plot.style_linebr)
plot(series=enter_long ? Along_stop_loss : na, title="Stop Loss", color=color.red, linewidth=2, style=plot.style_linebr)