
Diese Strategie heißtStrategie für die TSI-IndikatorenDie Kernidee der Strategie besteht darin, die Preisveränderungen in der doppelten EMA-Schiebefenster zu glätten und die Trendrichtung zu kombinieren, um ein dynamisches Indikator zu erstellen, das die Kauf- und Verkaufskraft des Marktes widerspiegelt, den TSI, und seine Kauf- und Verkaufsentscheidungen als Handelssignale zu formulieren.
Diese Strategie verwendet zwei Schiebefenster mit einem binären Index-Moving-Average, um die Preisänderung zu berechnen. Die äußere Fensterperiode ist länger, die innere Fensterperiode ist kürzer. Durch das Doppelschleifen wird die teilweise Zufälligkeit der Preisdaten entfernt.
Zuerst berechnen wir die Veränderung der Einheiten des Preises:
pc = change(price)
Die Preise werden dann mit einem Doppelschieber-Fenster doppelt glatt:
double_smoothed_pc = double_smooth(pc, long, short)
Der absolute Wert der Preisänderung wird berechnet und mit einem doppelten Gleitfenster doppelt ausgeglichen:
double_smoothed_abs_pc = double_smooth(abs(pc), long, short)
Schließlich wird der TSI-Wert, der die Kauf- und Verkaufskraft widerspiegelt, durch die Absolute der Preisänderung nach der Glättung berechnet:
tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)
Durch die Einrichtung von langen und kurzen Fensterperioden unterschiedlicher Länge kann ein gewisses Maß an kurzfristigen Marktlärm gefiltert werden, so dass der TSI die Kauf- und Verkaufskraft in mittelfristigen Trends besser widerspiegelt. Ein Kaufsignal wird erzeugt, wenn der TSI seinen Moving Average überquert.
Optimierung durch Anpassung der Fensterphase-Parameter und angemessene Verkürzung der Signaldurchschnittslänge; bei Marktschwankungen kann der Handel vorübergehend eingestellt werden, um das Risiko zu kontrollieren.
Diese Strategie basiert auf der Doppel-Gleichung der Berechnung der TSI-Dynamik, die die Kauf- und Verkaufskraft widerspiegelt. Die Doppel-Schiebefenster filtern die Geräusche. Die Veränderungen der Preisänderung sind auch doppelt glatt, der Indikator ist stabiler und zuverlässiger.
/*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)