Momentum-Anzeiger für die TSI "Doppel bewegliche Fenster"

Schriftsteller:ChaoZhang, Datum: 2024-01-08 11:20:35
Tags:

img

I. Überblick über die Strategie

Diese Strategie wird alsMomentum-Doppelbewegungsfenster-TSI-IndikatorstrategieDie Kernidee dieser Strategie besteht darin, doppelte EMA-Schiebefenster zu verwenden, um Preisschwankungen zu verringern, und dann die Richtungsänderungen des Trends zu kombinieren, um einen Dynamikindikator zu konstruieren, der die Kauf- und Verkaufskraft auf dem Markt widerspiegelt, nämlich den TSI-Indikator, und ihn als Handelssignal für Kauf- und Verkaufsentscheidungen zu verwenden.

II. Strategieprinzip

Diese Strategie verwendet zwei gleitende Fenster doppelte exponentielle gleitende Durchschnitte, um Preisänderungen zu berechnen. Die äußere Fensterperiode ist länger und die innere Fensterperiode kürzer. Durch doppelte Glättung wird ein Teil der Zufälligkeit in den Preisdaten entfernt.

Berechnen Sie zuerst die Preisänderung pro Einheit:

pc = change(price)

Verwenden Sie dann zwei gleitende Fenster, um die Preisänderungen doppelt zu glätten:

double_smoothed_pc = double_smooth(pc, long, short)

Dann berechnet man den absoluten Wert der Preisänderung, die ebenfalls mit Hilfe von zwei gleitenden Fenstern doppelt glättet wird:

double_smoothed_abs_pc = double_smooth(abs(pc), long, short)

Schließlich wird die glatte Preisänderung geteilt durch die glatte absolute Preisänderung verwendet, um den TSI-Indikator zu erhalten, der die Kauf- und Verkaufskraft widerspiegelt:

tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)

Durch die Festlegung unterschiedlicher Längen von langen und kurzen Fensterperioden kann kurzfristig das Marktlärm bis zu einem gewissen Grad ausgefiltert werden, so dass der TSI-Indikator die Kauf- und Verkaufskraft in mittelfristigen und langfristigen Trends besser widerspiegeln kann.

III. Strategische Vorteile

  1. Die Verwendung von Doppelschleiffenstern filtert kurzfristige Marktgeräusche für genauere Indikatorreaktionen effektiv aus
  2. Die Preisänderung wird ebenfalls doppelt glättet, wodurch der TSI-Indikator stabiler und zuverlässiger wird
  3. Es wird das Verhältnis der Preisänderung zur absoluten Preisänderung verwendet, das automatisch standardisiert und vergleichbarer ist.
  4. Umfassende Prüfung der Richtung und des Umfangs der Preisänderungen als Qualitätsindikator für Handelsentscheidungen
  5. Durch die Einstellung verschiedener Parameter kann die Empfindlichkeit des Indikators flexibel angepasst werden.

IV. Strategische Risiken

  1. Der TSI-Indikator kann falsche Signale geben, wenn der Markt langfristig schwankt
  2. Falsche Einstellungen von Parametern können auch die Qualität von Indikatoren und Signalen beeinträchtigen
  3. Obwohl es zwei gleitende Fenster gibt, ist der Indikator immer noch auf kurzfristige Marktlärm empfindlich
  4. Wenn der Unterschied zwischen langen und kurzen Fensterperioden zu groß ist, können Indikatoren und Signale verzögert sein.

Der Markt kann optimiert werden, indem die Fensterperiodenparameter angepasst und die gleitende Durchschnittslänge des Signals angemessen verkürzt wird.

V. Optimierungsrichtlinien

  1. Versuchskombinationen verschiedener Parameter für den langen und kurzen Fensterzeitraum zur Ermittlung optimaler Parameter
  2. Versuchen Sie andere Arten von gleitenden Durchschnitten, wie z.B. lineare gewichtete gleitende Durchschnitte
  3. Erhöhen Sie die Glättlichkeit der Indikatoren durch den Bau von drei- oder mehrfach gleitenden Fenstern
  4. Kombination anderer Hilfsindikatoren zur Optimierung der Auswahl der Kauf-/Verkaufspunkte
  5. Festlegen von Stop-Loss-Strategien zur strikten Kontrolle einzelner Verluste

VI. Zusammenfassung

Diese Strategie berechnet den TSI-Impulsindikator, der die Kauf- und Verkaufskraft auf der Grundlage der doppelten Glättung von Preisänderungen widerspiegelt. Die doppelten gleitenden Fenster filtern Lärm aus. Die doppelte Glättung von Preisänderungsvariationen macht den Indikator auch stabiler und zuverlässiger. Das standardisierte Verhältnis macht ihn vergleichbar. Der Indikator kombiniert die Richtung und Größe der Preisänderungen als hochwertige Signalquelle. Durch die Anpassung von Parametern kann die Indikatorempfindlichkeit frei kontrolliert werden. Mit Parameteroptimierung und Risikokontrolle ist es eine sehr praktische quantitative Handelsstrategiewahl.


/*backtest
start: 2023-01-01 00:00:00
end: 2024-01-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("True Strength Indicator BTCUSD 2H", shorttitle="TSI BTCUSD 2H",initial_capital=1000, commission_value=0.2, commission_type =strategy.commission.percent, default_qty_value=100 , overlay = false, pyramiding=10, default_qty_type=strategy.percent_of_equity)

//BASED ON True Strength Indicator MTF
resCustom = input(title="Timeframe",  defval="120" )
long = input(title="Long Length",  defval=25)
short = input(title="Short Length",  defval=13)
signal = input(title="Signal Length",  defval=13)

length = input(title="Период",  defval=300)

FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2017, title = "From Year", minval = 2017)
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 2017)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => true // create function "within window of time"

price = request.security(syminfo.tickerid,resCustom,close)


double_smooth(src, long, short) =>
    fist_smooth = ema(src, long)
    ema(fist_smooth, short)
pc = change(price)
double_smoothed_pc = double_smooth(pc, long, short)
double_smoothed_abs_pc = double_smooth(abs(pc), long, short)
tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)
tsi2=ema(tsi_value, signal)
plot(tsi_value, color=lime,linewidth=2)
plot(tsi2, color=red,linewidth=2)

hline(30, title="Zero")
hline(50, title="Zero",linewidth=2)
hline(70, title="Zero")

buy = crossover(tsi_value, tsi2)
sell = crossunder(tsi_value, tsi2)

if(buy)
    strategy.entry("BUY", strategy.long, when = window())
if(sell)
    strategy.entry("SELL", strategy.short, when = window()) 

//greentsi =tsi_value
//redtsi = tsi2

//bgcolor( greentsi>redtsi and rsiserie > 50 ? lime : na, transp=90)
//bgcolor( greentsi<redtsi and rsiserie < 50 ? red : na, transp=90)

//yellow1= redtsi > greentsi and rsiserie > 50 
//yellow2 = redtsi < greentsi and rsiserie < 50 
//bgcolor( yellow1 ? yellow : na, transp=80)
//bgcolor( yellow2  ? yellow : na, transp=50)

//bgcolor( yellow1 and yellow1[1] ? yellow : na, transp=70)
//bgcolor( yellow2  and yellow2[2] ? yellow : na, transp=70)

//bgcolor( rsiserie > 70 ? lime : na, transp=60)
//bgcolor( rsiserie < 30  ? red : na, transp=60)

Mehr