Ichimoku Balance Line Trend-Tracking-Strategie

Schriftsteller:ChaoZhang, Datum: 2023-10-12 17:29:46
Tags:

Übersicht

Diese Strategie verwendet die Konversionslinie, die Basislinie und die Wolkengrenzen des Ichimoku Kinko Hyo-Indikators, um die Trendrichtung zu identifizieren und Trends zu verfolgen. Es geht lang, wenn der Preis über die Wolkenoberfläche bricht, und kurz, wenn der Preis unter die Wolkenoberfläche bricht. Gewinne werden erzielt, wenn eine vorgegebene Gewinnquote erreicht wird. Verluste werden gekürzt, wenn eine vorgegebene Verlustquote erreicht wird.

Strategie Logik

Die Strategie verwendet hauptsächlich die folgenden Ichimoku-Indikatorlinien:

  • Umrechnungslinie (Tenkan-sen): stellt kurzfristigen Trend dar, berechnet als Durchschnitt des höchsten Höchststandes und des niedrigsten Tiefstandes in den letzten neun Perioden.
  • Basislinie (Kijun-sen): Darstellt die mittelfristige Entwicklung, berechnet als Durchschnitt des höchsten Höchststandes und des niedrigsten Tiefstandes in den letzten 26 Perioden
  • Leading Span A (Senkou Span A): Mittelwert der Umrechnung und der Basislinien
  • Leading Span B (Senkou Span B): Durchschnitt des höchsten Hochs und des tiefsten Tiefs in den letzten 52 Perioden

Es geht lang, wenn der Preis über die Wolke bricht und kurz, wenn der Preis unter die Wolke bricht. Eintritts- und Ausstiegsgründe werden ausgelöst, wenn der Preis die Wolke oben und unten bricht. Ausgänge werden ausgelöst, wenn Gewinn- oder Verlustquoten erreicht werden.

Analyse der Vorteile

  • Benutzt Ichimoku, um die Trendrichtung zu identifizieren und falsche Signale vom Marktlärm zu vermeiden
  • Das Brechen von Wolken oben/unten identifiziert Trendumkehrpunkte effizient
  • Gewinn- und Stop-Loss-Punkte helfen, Gewinne zu erzielen und das Risiko zu kontrollieren

Risikoanalyse

  • Ichimoku hat Verzögerungen und kann die besten Einstiegspunkte verpassen.
  • Schlechte Parameter-Tuning von Linien wie Conversion Line könnte falsche Signale verursachen
  • Stop-Loss-Satz zu enge Risiken zu frühem Ausstieg; zu lockere Risiken große Verluste

Optimierungsrichtlinien

  • Um die Genauigkeit zu verbessern, sollten andere Indikatoren kombiniert werden.
  • Dynamische Optimierung von Parametern für verschiedene Zeiträume und Märkte
  • Verwenden Sie Trailing Stop Loss, um Stops anhand der Kursentwicklung anzupassen und einen vorzeitigen Ausstieg zu vermeiden
  • Entwicklung einer automatisierten Gewinn-Verlust-Strategie zur intelligenten Anpassung von Punkten auf der Grundlage von Volatilität

Zusammenfassung

Diese Strategie nutzt die Ichimoku-Cloud, um Trends zu identifizieren und einfaches Trend-Tracking umzusetzen. Trotz einiger Verzögerungen und falscher Signale können Optimierungen in Parametern, Stops und der Verwendung anderer Indikatoren sie verbessern.


/*backtest
start: 2023-10-04 00:00:00
end: 2023-10-08 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Estratégia com Ichimoku" , pyramiding=0, calc_on_every_tick = true, initial_capital = 20000, commission_type = strategy.commission.cash_per_order, commission_value = 10.00)

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////Ichimoku Clouds////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////(VERSÃO 40.0)//////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

periodoLinhaDeConversao = input(defval=9, title="Tenkan-sen (Linha de Conversão)",  minval=1)
periodoLinhaBase = input(defval=26, title="Kijun-sen (Linha Base)",  minval=1)
periodoNivelAdiantadoB = input(defval=52, title="Senkou Span B (Nível adiantado B)",  minval=1)
deslocamento = input(defval=26, title="Deslocamento",  minval=1)

linhaDeConversao = (highest(high,periodoLinhaDeConversao)+lowest(low,periodoLinhaDeConversao))/2
linhaBase = (highest(high,periodoLinhaBase)+lowest(low,periodoLinhaBase))/2
nivelAdiantadoA = (linhaDeConversao + linhaBase)/2
nivelAdiantadoB = (highest(high,periodoNivelAdiantadoB)+lowest(low,periodoNivelAdiantadoB))/2

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
strategy.initial_capital = 50000
//Hardcoded quantity - strategy.entry(qty=)
capitalInicial = strategy.initial_capital
lotes = (strategy.initial_capital - (strategy.initial_capital % (open*100)))/open

//Percentage input goal - strategy.exit(profit=)
percentGoal = input (defval = 5.0, title = "Goal (%)", type = float, minval=0.0, step=0.1)
longGoal = (strategy.position_avg_price * (percentGoal/100)) * 100
shortGoal = (strategy.position_avg_price - (strategy.position_avg_price / (1+(percentGoal/100)))) * 100

//Percentage input stop - strategy.exit(loss=)
percentStop = input (defval = 0.5, title = "Stop (%)", type = float, minval=0.0, step=0.1)
longStop = (strategy.position_avg_price * (percentStop/100)) * 100
shortStop = (strategy.position_avg_price * (percentStop/100)) * 100

strategy.entry('entryLong', strategy.long, lotes, when = strategy.position_size == 0 and crossover(close,max(nivelAdiantadoA[deslocamento], nivelAdiantadoB[deslocamento])))
strategy.entry('entryShort', strategy.short, lotes, when = strategy.position_size == 0 and crossunder(close,min(nivelAdiantadoA[deslocamento], nivelAdiantadoB[deslocamento])))
strategy.exit('exitLong', 'entryLong', profit = longGoal, loss = longStop)
strategy.exit('exitShort', 'entryShort', profit = shortGoal, loss = shortStop)

plot(strategy.equity, title="Variação de capital", color=white)
//plot(strategy.position_size, color=red)

Mehr