Marktpotenzial Ichimoku - Bullish Cloud Strategie

Schriftsteller:ChaoZhang, Datum: 2024-02-02 16:57:46
Tags:

img

Übersicht

Diese Strategie ist eine langlebige Ichimoku-Cloud-Handelsstrategie. Sie geht lang, wenn die Konversionslinie über die Basislinie geht, und schließt die Position, wenn die Basislinie unter der Konversionslinie geht. Außerdem überprüft sie beim Öffnen oder Schließen von Positionen auch die Lagging Span, um zu sehen, ob sie über oder unter der Wolke liegt.

Strategie Logik

Die Strategie verwendet mehrere Linien aus dem Ichimoku-Indikator.

  1. Umrechnungslinie: Der Durchschnitt des Höchst- und Tiefstands der letzten 9 Tage, der die kurzfristige Trendumrechnung darstellt.

  2. Basislinie: Der Durchschnitt des Höchst- und Tiefstands der letzten 26 Tage, der die durchschnittliche Preisbewegung in diesem Zeitraum darstellt.

  3. Leading Span A: Durchschnitt der Umrechnung und der Basislinien.

  4. Leading Span B: Der Durchschnitt des Höchststandes und des Tiefstands der letzten 52 Tage, ein führender Indikator für mittelfristige und langfristige Trends.

  5. Verzögerungszeitraum: Der Schlusskurs, der 26 Tage zurückliegt und die Dynamik des Trends darstellt.

Um eine Position zu eröffnen, muss die Konversionslinie über die Basislinie und die Lagging Span über der Wolke liegen.

Um eine Position zu schließen, muss die Basislinie unterhalb der Konversionslinie kreuzen UND die Lagging Span muss unterhalb der Wolke sein.

Vorteile der Strategie

  1. Benutzt die Ichimoku-Wolke, um die Trendrichtung genau zu bestimmen.

  2. Die Kombination mehrerer Leitungen verhindert falsche Signale.

  3. Lang-only entspricht den langfristigen Aufwärtstrends der meisten Kryptowährungen.

  4. Eine strenge Zustandsfilterung liefert hochwertige Signale.

Risiken der Strategie

  1. Erlaubt nur volle Position oder flache, kann Position Größe nicht anpassen.

  2. Er schlägt sich sehr gut auf dem Bullenmarkt ab, riskiert aber große Verluste auf dem Bärenmarkt.

  3. Standardparameter, die für Krypto eingestellt sind, müssen möglicherweise für andere Vermögenswerte angepasst werden.

  4. Weniger Handelssignale bedeuten, dass einige Chancen verpasst werden könnten.

Verbesserungen

  1. Hinzufügen einer Positionsgrößenfunktion, um einen Teil der Position zu schließen, wenn der Verlust einen Schwellenwert erreicht.

  2. Hinzufügen von Leerverkaufssignalen, wenn die wichtigsten Unterstützungsniveaus durchbrechen, um Verluste zu reduzieren.

  3. Optimieren Sie die Parameter, um mehr Symbole zu finden und die Robustheit zu verbessern.

  4. Die Risikopositionen werden in der Tabelle 1 aufgeführt.

Zusammenfassung

Als eine langfristige Ichimoku-Strategie bestimmt dieser Ansatz zuverlässig Trendumkehrungen, indem er mehrere Ichimoku-Linien kombiniert. Es funktioniert besonders gut für Vermögenswerte mit anhaltenden Aufwärtstrends wie Kryptowährungen. Weitere Verbesserungen des Risikomanagements wie Stop-Losses und Positionsgrößen können diese Strategie in verschiedenen Marktumgebungen und Vermögensarten robuster machen.


/*backtest
start: 2024-01-02 00:00:00
end: 2024-02-01 00:00:00
period: 1h
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/
// Simple long-only Ichimoku Cloud Strategy
// Enter position when conversion line crosses base line up, and close it when the opposite happens. 
// Additional condition for open / close the trade is lagging span, it should be higher than cloud to open position and below - to close it.
//@version=4
strategy("Ichimoku Cloud Strategy Long Only", shorttitle="Ichimoku Cloud Strategy (long only)", overlay=true )

conversion_length = input(9, minval=1, title="Conversion Line Periods"),
base_length = input(26, minval=1, title="Base Line Periods")
lagging_length = input(52, minval=1, title="Lagging Span 2 Periods"),
delta = input(26, minval=1, title="Delta")

average(len) => avg(lowest(len), highest(len))

conversion_line = average(conversion_length) // tenkan sen - trend
base_line = average(base_length) // kijun sen - movement
lead_line_a = avg(conversion_line, base_line) // senkou span A
lead_line_b = average(lagging_length) // senkou span B
lagging_span = close // chikou span - trend / move power

plot(conversion_line, color=color.blue, linewidth=2, title="Conversion Line")
plot(base_line, color=color.white, linewidth=2, title="Base Line")
plot(lagging_span, offset = -delta, color=color.purple, linewidth=2, title="Lagging Span")

lead_line_a_plot = plot(lead_line_a, offset = delta, color=color.green, title="Lead 1")
lead_line_b_plot = plot(lead_line_b, offset = delta, color=color.red, title="Lead 2")
fill(lead_line_a_plot, lead_line_b_plot, color = lead_line_a > lead_line_b ? color.green : color.red)

// Strategy logic

long_signal = crossover(conversion_line,base_line) and ((lagging_span) > (lead_line_a)) and ((lagging_span) > (lead_line_b))
short_signal = crossover(base_line, conversion_line) and ((lagging_span) < (lead_line_a)) and ((lagging_span) < (lead_line_b))

strategy.entry("LONG", strategy.long, when=strategy.opentrades == 0 and long_signal, alert_message='BUY')
strategy.close("LONG", when=strategy.opentrades > 0 and short_signal, alert_message='SELL')
    
    // === Backtesting Dates === thanks to Trost

testPeriodSwitch = input(true, "Custom Backtesting Dates")
testStartYear = input(2021, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, testStartHour, 0)
testStopYear = input(2021, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(1, "Backtest Stop Day")
testStopHour = input(0, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, testStopHour, 0)
testPeriod() => true
testPeriod_1 = testPeriod()
isPeriod = testPeriodSwitch == true ? testPeriod_1 : true
// === /END

if not isPeriod
    strategy.cancel_all()
    strategy.close_all()

Mehr