Die Strategie basiert auf der Kreuzung von Moving Averages und ATR-Indikatoren, um einen automatisierten Trend-Tracking-Handel zu realisieren. Wenn die schnelle EMA-Linie die langsame EMA-Linie überschreitet, wird eine Mehrkopfposition eingehalten; wenn die schnelle EMA-Linie die langsame EMA-Linie unterbricht, wird eine Kurzkopfposition eingehalten.
Die Strategie basiert hauptsächlich auf zwei technischen Indikatoren:
EMA-Mittellinie: EMA-Mittellinie mit zwei verschiedenen Parametern, die als Mehrkopfsignal betrachtet wird, wenn die schnelle Linie die langsame Linie durchbricht, und als Leerkopfsignal, wenn sie die untere Linie durchbricht.
ATR-Indikator: Der ATR-Indikator ist in der Lage, die Größe und Stärke der Preisschwankungen zu beurteilen und somit die Trendhaftigkeit des aktuellen Trends zu beurteilen. Wenn der ATR-Wert niedriger ist, ist es nicht ratsam, eine Position zu eröffnen. Wenn der ATR-Wert größer ist und nach oben geht, ist er im Trendmarkt und wartet darauf, dass die EMA Goldforke mehr macht.
Die EMA-Gleichgewicht-Kreuzung ist ein Mittel, um nach Kauf- und Verkaufsmöglichkeiten zu suchen, während die ATR-Indikatoren dazu dienen, schwache Trendsignale zu filtern und zu vermeiden, dass sie während der Marktschwankungen eingesperrt werden.
Diese Strategie hat folgende Vorteile:
Es ist wichtig, nur dann zu handeln, wenn der ATR-Indikator als Trend beurteilt wird, um zu vermeiden, dass ein unbekannter Schwankung in eine Gefängnis gefangen wird.
Die Methode der schnellen und mittleren Kreuzung ist einfach und effektiv, um einen Kauf- und Verkaufspunkt zu finden.
Die Sensitivität und Glattigkeit der EMA-Gleichlinie kann durch Parameter-Anpassung an die persönlichen Vorlieben angepasst werden.
Ein vollständiges automatisches Handelssystem, das mit nur zwei einfachen Indikatoren realisiert werden kann, kann leicht für die Strategieentwicklung und -optimierung über den Pine-Editor verwendet werden.
Einfache ParameterSet- und Forget-Strategien ohne häufige Anpassung von Parametern.
Die Strategie birgt auch einige Risiken, die zu beachten sind:
EMA-Kreuzungen sind leicht zu falschen Signalen und können zu unnötigen Verlusten führen. Einige Indikatoren können durch Anpassung der EMA-Parameter glatter gemacht werden.
Der ATR-Indikator kann auch manchmal fehlerhafte Einschätzungen über Konzentration und Trends vornehmen, was zu verpassten Handelsmöglichkeiten führt. Die numerische Schwelle für den ATR kann entsprechend gelockert werden.
Die Strategie selbst berücksichtigt keine Größenanalyse, und es ist schwierig, durch schnelle, lineare Überschneidungen zu beurteilen, wenn eine wichtige Nachrichtenseite eine Umkehrung erlebt, was zu einer künstlichen Intervention führt.
Die Auswirkungen dieser Risiken können durch Optimierungen verringert werden.
Die Strategie beinhaltet folgende Optimierungsmöglichkeiten:
Es kann in Erwägung gezogen werden, andere Indikatoren einzubeziehen, um eine Kombination von Indikatoren zu bilden und die Genauigkeit der Signale zu verbessern. Zum Beispiel kann der RSI in Verbindung mit dem RSI verwendet werden, um das Risiko von Überkauf und Überverkauf zu vermeiden.
Die Parameter können für verschiedene Handelsarten und Handelsbereiche ausgewählt werden, um die EMA- und ATR-Parameter den aktuellen Markteigenschaften anzupassen.
Dynamische Parameteroptimierungen können durch Methoden wie maschinelles Lernen realisiert werden. So können die Indikatorparameter an die realen Marktbedingungen angepasst werden, anstatt feste, statische Werte zu verwenden.
Die Strategie insgesamt ist eine sehr praktische Trend-Tracking-Strategie. Die Kombination von nur zwei einfachen Indikatoren ermöglicht ein relativ vollständiges Handelssystem. Durch die Anpassung der Parameter kann die Strategie an die unterschiedlichen Präferenzen der Händler angepasst werden.
/*backtest
start: 2022-12-05 00:00:00
end: 2023-12-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This strategy has been created for GMT trade 4h by Zhukov
//@version=5
strategy('ZhukovTrade', overlay=true, calc_on_every_tick=true, currency=currency.USD)
// INPUT:
// Options to enter fast and slow Exponential Moving Average (EMA) values
emaFast = input.int(title='Fast EMA', defval=100, minval=1, maxval=9999)
emaSlow = input.int(title='Slow EMA', defval=200, minval=1, maxval=9999)
// Option to select trade directions
tradeDirection = input.string(title='Trade Direction', options=['Long', 'Short', 'Both'], defval='Both')
// Options that configure the backtest date range
startDate = input(title='Start Date', defval=timestamp('01 Jan 2023 00:00'))
endDate = input(title='End Date', defval=timestamp('31 Dec 2023 23:59'))
// CALCULATIONS:
// Use the built-in function to calculate two EMA lines
fastEMA = ta.ema(close, emaFast)
slowEMA = ta.ema(close, emaSlow)
emapos = ta.ema(close,200)
// PLOT:
// Draw the EMA lines on the chart
plot(series=fastEMA, color=color.new(color.orange, 0), linewidth=2)
plot(series=slowEMA, color=color.new(color.blue, 0), linewidth=2)
plot(series=emapos, color=color.new(color.red, 0), linewidth=2)
// CONDITIONS:
// Check if the close time of the current bar falls inside the date range
inDateRange = true
// Translate input into trading conditions
longOK = tradeDirection == 'Long' or tradeDirection == 'Both'
shortOK = tradeDirection == 'Short' or tradeDirection == 'Both'
// Decide if we should go long or short using the built-in functions
longCondition = ta.crossover(fastEMA, slowEMA)
shortCondition = ta.crossunder(fastEMA, slowEMA)
// ORDERS:
// Set take profit and stop loss percentages
take_profit_percent = input(0, title="Take Profit Percent")
stop_loss_percent = input(0, title="Stop Loss Percent")
// Submit entry (or reverse) orders
atrPeriod = input(12, "ATR Length")
factor = input.float(3.0, "Factor", step = 0.01)
[supertrend, direction] = ta.supertrend(factor, atrPeriod)
bodyMiddle = plot((open + close) / 2, display=display.none)
upTrend = plot(direction < 0 ? supertrend : na, "Up Trend", color = color.green, style=plot.style_linebr)
downTrend = plot(direction < 0? na : supertrend, "Down Trend", color = color.red, style=plot.style_linebr)
fill(bodyMiddle, upTrend, color.new(color.green, 90), fillgaps=false)
fill(bodyMiddle, downTrend, color.new(color.red, 90), fillgaps=false)
if longCondition and inDateRange
if longOK and direction<0
strategy.entry(id='long', direction=strategy.long, alert_message = "LONG")
if shortCondition and inDateRange
if shortOK and direction>0
strategy.entry(id='short', direction=strategy.short, alert_message = "SHORT")
// Submit exit orders in the cases where we trade only long or only short
if strategy.position_size > 0 and take_profit_percent
strategy.exit(id='tp long',from_entry ="long",profit = take_profit_percent)
if strategy.position_size > 0 and stop_loss_percent
strategy.exit(id='sl long',from_entry="long",loss=stop_loss_percent)
if strategy.position_size < 0 and stop_loss_percent
strategy.exit(id='sl short',from_entry="short",loss=stop_loss_percent)
if strategy.position_size < 0 and take_profit_percent
strategy.exit(id='tp short',from_entry="short",profit = take_profit_percent)