Handelsstrategie für den Durchbruch des gleitenden Durchschnitts des Kanals

Schriftsteller:ChaoZhang, Datum: 2024-01-29 14:31:25
Tags:

img

Übersicht

Diese Strategie basiert auf den Prinzipien des goldenen Kreuzes und des Todeskreuzes einfacher gleitender Durchschnitte und trifft Kauf- und Verkaufsentscheidungen basierend auf dem Crossover von 7-Tage- und 14-Tage-gleitenden Durchschnitten. Sie erzeugt ein Kaufsignal, wenn der 7-Tage-MA von unten über den 14-Tage-MA überschreitet, und ein Verkaufssignal, wenn der 7-Tage-MA von oben unter den 14-Tage-MA überschreitet. Die Strategie verfügt auch über Stop-Loss-, Take-Profit- und Trailing-Stop-Funktionen, um Gewinne und Risiken zu kontrollieren.

Strategie Logik

Die Kern-Handelslogik dieser Strategie basiert auf den Crossover-Prinzipien der 7-Tage- und 14-Tage- gleitenden Durchschnitte. Der 7-Tage-MA spiegelt kurzfristige Preistrends wider, während der 14-Tage-MA mittelfristige Trends widerspiegelt. Wenn der kurzfristige MA von unten über den mittelfristigen MA überschreitet, signalisiert dies, dass der kurzfristige Trend stärker wird, was es zu einer guten Zeit macht, lang zu gehen. Umgekehrt signalisiert der kurzfristige MA, wenn er unter den mittelfristigen MA von oben überschreitet, dass der kurzfristige Trend schwächt, so dass man Positionen schließen oder kurz gehen sollte.

Diese Strategie berechnet speziell die 7-Tage- und 14-Tage-Simple Moving Averages mit dem SMA-Indikator. Nach jeder Candlestick-Form vergleicht sie die aktuellen Werte der 7-Tage-Linie und der 14-Tage-Linie. Wenn die 7-Tage-Linie über die 14-Tage-Linie überschreitet, wird ein Long-Signal generiert, um lang zu gehen. Wenn die 7-Tage-Linie unterhalb der 14-Tage-Linie überschreitet, wird ein Short-Signal generiert, um kurz zu gehen.

Darüber hinaus setzt die Strategie auch Stop-Loss-, Take-Profit- und Trailing-Stop-Funktionen, um Gewinne zu erzielen und Risiken zu kontrollieren.

Vorteile

Diese Strategie hat folgende Vorteile:

  1. Einfache und klare Regeln, leicht verständlich und umsetzbar, für Anfänger geeignet.
  2. Die Grundsätze der gleitenden Durchschnittsüberschneidungen sind bewährt und wirksam, mit relativ hohen Gewinnraten.
  3. Ausgestattet mit Stop-Loss, Take-Profit und Trailing-Stop, um Risiken effektiv zu kontrollieren.
  4. Wenige Parameter, bequem für Tests und Optimierungen.

Risiken und Gegenmaßnahmen

Diese Strategie birgt auch einige Risiken:

  1. Die gleitenden Durchschnittswerte können bei der Abbildung von Trendänderungen verzögert sein und bei einer Umkehrung des Trends möglicherweise zu großen Verlusten führen.
  2. Häufige Crossover-Signale auf verschiedenen Märkten erzeugen mehr falsche Signale, was die Wirksamkeit der Strategie untergräbt.

Um diesen Risiken entgegenzuwirken, können folgende Gegenmaßnahmen in Betracht gezogen werden:

  1. Hinzufügen anderer Indikatoren wie MACD und KDJ, um Crossover-Signale zu filtern und falsche Signale an Trendwendepunkten zu vermeiden.
  2. Erweitern Sie den Stop-Loss-Bereich, verkürzen Sie die Haltedauer, um die Auswirkungen von Einzelverlusten zu reduzieren.
  3. Optimierung der gleitenden Durchschnittsparameter auf der Grundlage unterschiedlicher Marktbedingungen unter Verwendung längerer Perioden für unterschiedliche Märkte.

Optimierungsrichtlinien

Diese Strategie kann in folgenden Aspekten optimiert werden:

  1. Versuche verschiedene MA-Kombinationen und -Parameter, um die optimale Einstellung zu finden.
  2. Hinzufügen anderer Indikatoren für die Signalfilterung zur Verbesserung der Wirksamkeit der Strategie.
  3. Optimieren Sie den Stop-Loss, nehmen Sie Gewinnparameter, um den Drawdown zu reduzieren und die Gewinnquote zu erhöhen.
  4. Feinabstimmungsparameter basierend auf verschiedenen Produkten und Handelssitzungen.

Schlussfolgerung

Zusammenfassend ist diese Strategie sehr geeignet für Anfänger zu lernen. Die Logik ist einfach und leicht zu verstehen und umzusetzen. Es hat auch eine relativ gute Marktanpassungsfähigkeit, mit ausreichend Raum für Parameteranpassung und Optimierung, um stetige Gewinne zu erzielen. Es lohnt sich für quantitative Handelsanfänger, sie zum Einstieg und Lernen zu verwenden.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © bensonsuntw

strategy("Strategy Template[Benson]", pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

backtest_year = input(2019, type=input.integer, title='backtest_year')
backtest_month = input(01, type=input.integer, title='backtest_month', minval=1, maxval=12)
backtest_day = input(01, type=input.integer, title='backtest_day', minval=1, maxval=31)
start_time = timestamp(backtest_year, backtest_month, backtest_day, 00, 00)
stop_loss_and_tp = input(title="Enable Stop Loss and Take Profit", type=input.bool, defval=true)
trail_stop = input(title="Enable Trail Stop", type=input.bool, defval=true)
buy_stop_loss = input(0.2, type=input.float, title='buy_stop_loss')
sell_stop_loss = input(0.1, type=input.float, title='sell_stop_loss')
buy_tp = input(0.4, type=input.float, title='buy_tp')
sell_tp =input(0.2, type=input.float, title='sell_tp')
trail_stop_long = input(1.1, type=input.float, title='trail_stop_long')
trail_stop_short = input(0.9, type=input.float, title='trail_stop_short')
trail_stop_long_offset = input(0.05, type=input.float, title='trail_stop_long_offset')
trail_stop_short_offset = input(0.05, type=input.float, title='trail_stop_short_offset')


// you can set your own logic here
shortCondition = crossunder(sma(close,7),sma(close,14))
longCondition = crossover(sma(close,7),sma(close,14))

strategy.entry("Buy", strategy.long, when=longCondition  )
strategy.close("Buy", when=shortCondition)
strategy.exit("Close Buy","Buy", limit= stop_loss_and_tp?strategy.position_avg_price * (1+buy_tp):na, stop = stop_loss_and_tp?strategy.position_avg_price * (1-buy_stop_loss):na,trail_price=trail_stop?strategy.position_avg_price *trail_stop_long:na,trail_offset=trail_stop?-strategy.position_avg_price *trail_stop_long_offset:na)

strategy.entry("Sell", strategy.short, when=shortCondition)
strategy.close("Sell", when=longCondition)
strategy.exit("Close Sell","Sell", limit= stop_loss_and_tp?strategy.position_avg_price * (1-sell_tp):na, stop = stop_loss_and_tp?strategy.position_avg_price * (1+sell_stop_loss):na,trail_price=trail_stop?strategy.position_avg_price *trail_stop_short:na,trail_offset=trail_stop?strategy.position_avg_price *trail_stop_short_offset:na)


net_profit = strategy.netprofit + strategy.openprofit

plot(net_profit, title="Net Profit", linewidth=2, style=plot.style_area, transp=50, color=net_profit >= 0 ? #26A69A : color.red)






Mehr