
Die Strategie kombiniert mehrere Indikatoren wie die Ichimoku-Wolkenkarte, den Moving Average, den MACD, den Stochastic und den ATR, um eine Trenderkennung und -verfolgung über mehrere Zeiträume zu ermöglichen. Nach dem Erhalt eines Trendsignals mit einer höheren Wahrscheinlichkeit wird die Risikokontrolle mit der ATR-Zyklus-Stoppschaltung durchgeführt.
Ichimoku-Cloud-Diagramm, um die Richtung der mittleren langen Linie zu bestimmen. Die Wendelinie und die Benchmarklinie, die den Cloud-Diagramm über dem CLOSE-Preis durchqueren, sind mehrköpfige Signale und die unteren durchqueren ein leeres Signal.
Der MACD beurteilt die Kurz- und Überkauftrends. Die MACD-Säulen werden als mehrköpfige und die unteren als leere Signale durchdrungen.
Stochastic KD beurteilt überkaufende und überverkaufende Bereiche. Auf der K-Linie ist 20 ein Mehrkopfsignal, auf der Unterseite 80 ein Leerkopfsignal.
Der Moving Average beurteilt die mittelfristige Tendenz. Der Moving Average ist ein mehrköpfiges Signal am Ende des Kurses und ein leeres Signal am Ende.
Zusammensetzung mehrerer der oben genannten Indikatoren, Filterung von falschen Signalen und Bildung eines anhaltenden Trendsignals mit hoher Wahrscheinlichkeit.
Auf Basis des ATR berechnet man den Stop-Loss-Preis. Mit einem bestimmten ATR-Multiplikator als Stop-Loss- und Stop-Off-Bereich wird die Risikokontrolle erreicht.
Mehrfache Zeitrahmen erkennen Trends und verbessern die Signalgenauigkeit.
Der Einsatz von Indicator Combination Filtertechniken wirkt auf falsche Signale ab.
ATR-Periodic Stop-Loss-Stopp, maximaler Einzelschaden-Kontrolle
Anpassbare Aufnahmebedingungen für unterschiedliche Risikopräferenzen
Das ist eine sehr schwierige Aufgabe, denn die meisten Unternehmen, die sich mit Trend-Tracking beschäftigen, sind nicht in der Lage, eine Umkehrung zu erkennen, die von einem Ereignis ausgelöst wird.
ATR-Periodic Loss ist möglicherweise zu idealisiert und kann nicht vollständig auf der Festplatte reproduziert werden.
Die falsche Einstellung der Parameter kann zu einer zu hohen Transaktionsfrequenz oder zu einer unzureichenden Signalerkennungsgenauigkeit führen.
Die Parameter müssen angepasst werden, um ein Gleichgewicht zu finden, das sich an die verschiedenen Sorten und Marktbedingungen anpasst.
Die Entwicklung von Anwendungen, die auf die Entwicklung von Trends ausgerichtet sind, wird durch die Entwicklung von Algorithmen unterstützt.
Optimierung der Parameter für ATR-Multiplikatoren, unterschiedliche Multiplikatoren für verschiedene Sorten.
In Kombination mit anderen Faktoren wie Handelsvolumenveränderungen erhöht sich die Genauigkeit der Durchbruchsignale.
Die Optimierung der Parameter nach Rückmeldungsergebnissen führt zu einer optimalen Parameterkombination.
Die Strategie verwendet mehrere Indikatoren wie Ichimoku Cloud Graph, MACD, Stochastic und andere, um Trends in mehreren Zeitrahmen zu identifizieren, um Trends zu erfassen und gleichzeitig zu vermeiden, dass Sie in die Falle von Ereignissen geraten. Die ATR-Periodische Stop-Loss-Methode ist eine empfohlene Trend-Tracking-Strategie, um einzelne Verluste effektiv zu kontrollieren.
/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © FXFUNDINGMATE
//@version=4
strategy(title="FXFUNDINGMATE TREND INDICATOR", overlay=true)
//Ichimoku Cloud
conversionPeriods = input(9, minval=1, title="Conversion Line Length")
basePeriods = input(26, minval=1, title="Base Line Length")
laggingSpan2Periods = input(52, minval=1, title="Lagging Span 2 Length")
displacement = input(26, minval=1, title="Displacement")
donchian(len) => avg(lowest(len), highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)[displacement - 1]
leadLine2 = donchian(laggingSpan2Periods)[displacement - 1]
//macd
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA (Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA (Signal Line)", type=input.bool, defval=false)
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal
//kd
periodK = input(5, title="%K Length", minval=1)
smoothK = input(3, title="%K Smoothing", minval=1)
periodD = input(3, title="%D Smoothing", minval=1)
k = sma(stoch(close, high, low, periodK), smoothK)
d = sma(k, periodD)
//atr
atrlength = input(title="Atr Length", defval=8, minval=1)
SMulti = input(title="Stop loss multi Atr", defval=1.0)
TMulti = input(title="Take profit multi Atr", defval=1.0)
smoothing = input(title="Smoothing", defval="RMA", options=["RMA", "SMA", "EMA", "WMA"])
ma_function(source, length) =>
if smoothing == "RMA"
rma(source, length)
else
if smoothing == "SMA"
sma(source, length)
else
if smoothing == "EMA"
ema(source, length)
else
wma(source, length)
atr = ma_function(tr(true), atrlength)
operation_type = input(defval = "Both", title = "Position side", options = ["Long", "Short", "Both"])
operation = operation_type == "Long" ? 1 : operation_type == "Short" ? 2 : 3
showlines = input(true, title="Show sl&tp lines")
// MA
sma_len = input(100, title="MA Length", type=input.integer)
sma = sma(close, sma_len)
longCond = crossover(k, 20) and macd > 0 and close > sma and close > leadLine1 and close > leadLine2
shortCond = crossunder(k, 80) and macd < 0 and close < sma and close < leadLine1 and close < leadLine2
entry_price = float(0.0) //set float
entry_price := strategy.position_size != 0 or longCond or shortCond ? strategy.position_avg_price : entry_price[1]
entry_atr = valuewhen(longCond or shortCond, atr,0)
short_stop_level = float(0.0) //set float
short_profit_level = float(0.0) //set float
long_stop_level = float(0.0) //set float
long_profit_level = float(0.0) //set float
short_stop_level := entry_price + SMulti * entry_atr
short_profit_level := entry_price - TMulti * entry_atr
long_stop_level := entry_price - SMulti * entry_atr
long_profit_level := entry_price + TMulti * entry_atr
// Strategy Backtest Limiting Algorithm
i_startTime = input(defval = timestamp("1 Jan 2020 00:00 +0000"), title = "Backtesting Start Time", type = input.time)
i_endTime = input(defval = timestamp("31 Dec 2025 23:59 +0000"), title = "Backtesting End Time", type = input.time)
timeCond = true
if (operation == 1 or operation == 3)
strategy.entry("long" , strategy.long , when=longCond and timeCond, alert_message = "Long")
strategy.exit("SL/TP", from_entry = "long" , limit = long_profit_level , stop = long_stop_level , alert_message = "Long exit")
if (operation == 2 or operation == 3)
strategy.entry("short", strategy.short, when=shortCond and timeCond, alert_message="Short")
strategy.exit("SL/TP", from_entry = "short", limit = short_profit_level , stop = short_stop_level , alert_message = "Short exit")
if time > i_endTime
strategy.close_all(comment = "close all", alert_message = "close all")
plot(showlines and strategy.position_size <= 0 ? na : long_stop_level, color=color.red, style=plot.style_linebr, linewidth = 2)
plot(showlines and strategy.position_size <= 0 ? na : long_profit_level, color=color.lime, style=plot.style_linebr, linewidth = 2)
plot(showlines and strategy.position_size >= 0 ? na : short_stop_level, color=color.red, style=plot.style_linebr, linewidth = 2)
plot(showlines and strategy.position_size >= 0 ? na : short_profit_level, color=color.lime, style=plot.style_linebr, linewidth = 2)
//}