
Cette stratégie s’appelleStratégie de l’indicateur TSIL’idée centrale de cette stratégie est d’utiliser les doubles fenêtres de glissement des EMAs pour lisser les fluctuations de prix, puis de combiner les changements de direction de la tendance pour construire un indicateur dynamique qui reflète la force d’achat et de vente du marché, l’indicateur TSI, et de l’utiliser comme signal de négociation pour prendre des décisions d’achat et de vente.
Cette stratégie utilise des moyennes mobiles bilatérales à double indice pour calculer les variations de prix. La période de la fenêtre extérieure est plus longue et la période de la fenêtre intérieure plus courte.
Commençons par calculer le changement de prix en unités:
pc = change(price)
Le prix est ensuite doublé en utilisant une double fenêtre de glissement:
double_smoothed_pc = double_smooth(pc, long, short)
Calculer à nouveau la valeur absolue de la variation des prix, en utilisant la même double vitre de glissement:
double_smoothed_abs_pc = double_smooth(abs(pc), long, short)
Enfin, on obtient l’indicateur TSI qui reflète la force d’achat et de vente en divisant la variation de prix après l’assouplissement par la valeur absolue de la variation de prix après l’assouplissement:
tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)
En définissant des périodes de fenêtres plus ou moins longues de différentes longueurs, le bruit du marché à court terme peut être filtré dans une certaine mesure, ce qui permet au TSI de mieux refléter la force d’achat et de vente dans les tendances à moyen et long terme. Un signal d’achat est généré lorsque l’indicateur TSI traverse sa moyenne mobile et un signal de vente lorsque l’indicateur TSI traverse sa moyenne mobile.
L’optimisation peut être réalisée en ajustant les paramètres de la fenêtre de périodes et en raccourcissant la longueur moyenne du signal; les transactions peuvent être suspendues temporairement pour contrôler les risques en cas de choc du marché.
Cette stratégie est basée sur le calcul de la double fluctuation de l’indicateur de dynamique TSI qui reflète la force d’achat et de vente, le bruit du filtre à double vitres, les changements de changement de prix sont également doubles, l’indicateur est plus stable et plus fiable; l’utilisation d’un ratio standardisé, avec comparabilité; l’indicateur de direction et de la force de changement de prix intégré, comme un signal de haute qualité; la sensibilité de l’indicateur peut être librement contrôlée par l’ajustement des paramètres.
/*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)