Dies ist eine Trend-Tracking-Strategie, die auf der Basis von Gleichgewichtstabellen ausgelegt ist. Die Strategie nutzt die Umrechnungslinien, die Benchmarks und die Form der Wolken des Gleichgewichtstabels und setzt sehr strenge Eintrittsbedingungen vor, während die Orders mit einem einfachen Stop-Loss-Methode geschlossen werden.
Die Strategie verwendet die Wechselkurve, die Benchmark, die Marginal A, die Marginal B und die Beziehung zwischen dem Trend und der Stärke des Preises selbst. Die Kriterien sind:
Ein Kaufsignal wird erzeugt, wenn alle oben genannten Bedingungen gleichzeitig erfüllt sind; ein Verkaufssignal wird erzeugt, wenn alle Bedingungen umgekehrt sind.
Die Strategie setzt gleichzeitig die Frontline A als Stop-Line. Wenn der Preis die Stop-Line überschreitet, wird die entsprechende Position ausgeglichen.
Es handelt sich um eine sehr strenge Strategie, die die Störung durch falsche Signale wirksam verhindert und so die Chancen auf einen großen Trend blockiert. Die Strategie nutzt gleichzeitig mehrere Indikatoren, um Trends zu beurteilen, und vermeidet das systematische Risiko, dass ein einzelner Indikator falsch ist.
Die Strategie ist für die langfristige Haltung geeignet und kann die Häufigkeit der Transaktionen reduzieren, was dazu beiträgt, die Auswirkungen der Transaktionskosten und der Gleitpunkte zu verringern.
Die Stop-Loss-Linie der Strategie ist relativ locker, die zukünftige Marge A. Dies kann zu einem höheren Risiko für einzelne Verluste führen. Es kann in Erwägung gezogen werden, die Stop-Loss-Linie zu verschärfen oder die Risikokontrolle mit Hilfsindikatoren durchzuführen.
Außerdem gibt es weniger Strategie-Signale und es ist möglich, dass einige Short-Line-Möglichkeiten verpasst werden. Wenn Sie nach einem Handel mit höherer Frequenz streben, können Sie erwägen, die Strenge einiger Eintrittsvoraussetzungen zu senken.
Es kann in Betracht gezogen werden, die Eintrittsbedingungen locker auszugleichen, um die Eintrittsschwelle zu senken, um mehr Signale zu erhalten; oder die Standards zu erhöhen, um mehr Geräusche zu filtern und weniger feine Signale zu sperren.
Verlustbewältigungsmethoden können optimiert werden, indem Methoden wie automatische Verlustbewältigung oder Fernverlustbewältigung getestet werden, um einzelne Verluste zu kontrollieren.
Die Auswirkungen verschiedener Parameter auf das Ergebnis können getestet werden, um die optimale Kombination von Parametern zu finden. Es können auch andere Indikatoren hinzugefügt werden, um eine genauere Auftragsverwaltung zu erzielen.
Dies ist eine sehr strenge Trend-Tracking-Strategie. Es nutzt mehrere Indikatoren der Gleichgewichtstabelle, um die Richtung und Stärke des Trends zu bestimmen und falsche Signale zu vermeiden. Es ist eine hervorragende Strategie, die durch die Optimierung von Parametern und Stop-Losses zu einer sehr praktischen Quantifizierungsstrategie werden kann.
/*backtest
start: 2024-01-10 00:00:00
end: 2024-01-17 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(title="BadaBing Ichimoku", shorttitle="BadaBing", overlay=true)
atr_period = input(title="ATR Period", defval=20)
conversion_period = input(title="Conversion Line Period", defval=9, minval=1)
base_period = input(title="Base Line Period", defval=26, minval=1)
span_b_period = input(title="Span B Period", defval=52, minval=1)
displacement = input(title="Displacement", defval=26, minval=1)
min_current_cloud_atr = input(title="Min Current Cloud ATR", type=float, defval=1.0)
min_future_cloud_atr = input(title="Min Future Cloud ATR", type=float, defval=0)
check_base_line_above_cloud = input(title="Check Base Line above Cloud?", type=bool, defval=true)
check_conversion_line_above_base_line = input(title="Check Conversion Line above Base Line?", type=bool, defval=true)
check_price_above_conversion_line = input(title="Check Price above Conversion Line?", type=bool, defval=true)
check_span_a_point_up = input(title="Check Current Span A is pointing Up?", type=bool, defval=false)
check_span_b_point_up = input(title="Check Current Span B is pointing Up?", type=bool, defval=false)
check_future_span_a_point_up = input(title="Check Future Span A is pointing Up?", type=bool, defval=true)
check_future_span_b_point_up = input(title="Check Future Span B is pointing Up?", type=bool, defval=true)
check_base_line_point_up = input(title="Check Base Line is Pointing Up?", type=bool, defval=true)
check_conversion_line_point_up = input(title="Check Conversion Line is Pointing Up?", type=bool, defval=true)
bullish_color = #ccff99
bearish_color = #ff704d
span_a_color = #0000cc
span_b_color = #000066
conversion_color = #ff99ff
base_color = #4da6ff
bull_signal_color = #228b22
bear_signal_color = #990000
donchian(len) => avg(lowest(len), highest(len))
bchange(series) => series and not series[1]
conversion_line = donchian(conversion_period)
base_line = donchian(base_period)
future_span_a = avg(conversion_line, base_line)
future_span_b = donchian(span_b_period)
span_a = future_span_a[displacement]
span_b = future_span_b[displacement]
current_atr = atr(atr_period)
min_cloud_width = min_current_cloud_atr * current_atr
current_cloud_long_flag = span_a > (span_b + min_cloud_width)
current_cloud_short_flag = span_a < (span_b - min_cloud_width)
future_cloud_long_flag = future_span_a > (future_span_b + min_cloud_width)
future_cloud_short_flag = future_span_a < (future_span_b - min_cloud_width)
base_line_long_flag = check_base_line_above_cloud ? (base_line > span_a) : true
base_line_short_flag = check_base_line_above_cloud ? (base_line < span_a) : true
conversion_line_long_flag = check_conversion_line_above_base_line ? (conversion_line > base_line) : true
conversion_line_short_flag = check_conversion_line_above_base_line ? (conversion_line < base_line) : true
price_long_flag = check_price_above_conversion_line ? (close > conversion_line) : true
price_short_flag = check_price_above_conversion_line ? (close < conversion_line) : true
span_a_point_long_flag = check_span_a_point_up ? (span_a > span_a[1]) : true
span_a_point_short_flag = check_span_a_point_up ? (span_a < span_a[1]) : true
span_b_point_long_flag = check_span_b_point_up ? (span_b > span_b[1]) : true
span_b_point_short_flag = check_span_b_point_up ? (span_b < span_b[1]) : true
future_span_a_point_long_flag = check_future_span_a_point_up ? (future_span_a > future_span_a[1]) : true
future_span_a_point_short_flag = check_future_span_a_point_up ? (future_span_a < future_span_a[1]) : true
future_span_b_point_long_flag = check_future_span_b_point_up ? (future_span_b > future_span_b[1]) : true
future_span_b_point_short_flag = check_future_span_b_point_up ? (future_span_b < future_span_b[1]) : true
base_line_point_long_flag = check_base_line_point_up ? (base_line > base_line[1]) : true
base_line_point_short_flag = check_base_line_point_up ? (base_line < base_line[1]) : true
conversion_line_point_long_flag = check_conversion_line_point_up ? (conversion_line > conversion_line[1]) : true
conversion_line_point_short_flag = check_conversion_line_point_up ? (conversion_line < conversion_line[1]) : true
bada_long = bchange(current_cloud_long_flag)
or bchange(future_cloud_long_flag)
or bchange(base_line_long_flag)
or bchange(conversion_line_long_flag)
or bchange(price_long_flag)
or bchange(span_a_point_long_flag)
or bchange(span_b_point_long_flag)
or bchange(future_span_a_point_long_flag)
or bchange(future_span_b_point_long_flag)
or bchange(base_line_point_long_flag)
or bchange(conversion_line_point_long_flag)
bada_short = bchange(current_cloud_short_flag)
or bchange(future_cloud_short_flag)
or bchange(base_line_short_flag)
or bchange(conversion_line_short_flag)
or bchange(price_short_flag)
or bchange(span_a_point_short_flag)
or bchange(span_b_point_short_flag)
or bchange(future_span_a_point_short_flag)
or bchange(future_span_b_point_short_flag)
or bchange(base_line_point_short_flag)
or bchange(conversion_line_point_short_flag)
bada_color = bada_long ? bull_signal_color : bear_signal_color
plotshape(bada_long or bada_short, title="bada",
style=shape.circle,
location=location.belowbar,
color=bada_color,
transp=50)
bing_long = current_cloud_long_flag
and future_cloud_long_flag
and base_line_long_flag
and conversion_line_long_flag
and price_long_flag
and span_a_point_long_flag
and span_b_point_long_flag
and future_span_a_point_long_flag
and future_span_b_point_long_flag
and base_line_point_long_flag
and conversion_line_point_long_flag
bing_short = current_cloud_short_flag
and future_cloud_short_flag
and base_line_short_flag
and conversion_line_short_flag
and price_short_flag
and span_a_point_short_flag
and span_b_point_short_flag
and future_span_a_point_short_flag
and future_span_b_point_short_flag
and base_line_point_short_flag
and conversion_line_point_short_flag
bing_color = bing_long ? bull_signal_color : bear_signal_color
plotshape(bchange(bing_long or bing_short), title="bing",
style=shape.diamond,
location=location.abovebar,
color=bing_color,
transp=0)
c = plot(conversion_line, color=conversion_color, title="Conversion Line", linewidth=2)
b = plot(base_line, color=base_color, title="Base Line", linewidth=2)
p1 = plot(future_span_a, offset = displacement, color=span_a_color, title="Span A", linewidth=3)
p2 = plot(future_span_b, offset = displacement, color=red, title="Span B", linewidth=3)
fill(p1, p2, color = future_span_a > future_span_b ? bullish_color : bearish_color, transp = 60)
strategy.entry("long", true, 1, when=bing_long)
strategy.exit("stop", "long", stop=span_a)
strategy.close("long", when=close < base_line)
strategy.entry("short", false, 1, when=bing_short)
strategy.exit("stop", "short", stop=span_a)
strategy.close("short", when=close > base_line)