
Эта стратегия называетсяДвигательная двойная скользящая витринаОсновная идея этой стратегии заключается в том, чтобы использовать двойные скользящие окна EMA для сглаживания ценовых изменений, а затем, в сочетании с изменениями в направлении тенденции, создать динамический показатель, отражающий рыночную покупательскую силу, то есть показатель TSI, и использовать его в качестве торгового сигнала для принятия решений о покупке и продаже.
Эта стратегия использует двойные скользящие окна с двойными скользящими средними для расчета изменения цены. Внешние окна имеют более длинный период, а внутренние - более короткий.
Сначала рассмотрим изменение цены в единицах:
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)
Установка длинных и коротких оконных периодов различной длины позволяет отфильтровывать до некоторой степени краткосрочный рыночный шум, чтобы показатель TSI лучше отражал силу покупок и продаж в среднесрочных и долгосрочных тенденциях. При пересечении его движущейся средней по TSI появляются сигналы покупки; при пересечении его движущейся средней по TSI появляются сигналы продажи.
Оптимизация может быть достигнута путем корректировки параметров окна и соответствующего сокращения средней длины сигнала; при рыночных колебаниях торговля может быть временно приостановлена для контроля риска.
Эта стратегия основана на двойном сглаживании, рассчитывающем динамический индикатор ТСИ, отражающий силы покупки и продажи, двойной фильтр шума, изменения изменения цены также делают двойной сглаживание, индикатор более стабилен и надежный; использование стандартизированного соотношения, имеет сопоставимость; индикатор объединяет направление и силу изменения цены в качестве высококачественного сигнала; чувствительность индикатора может быть свободно контролирована с помощью параметров. В случае оптимизации параметров и контроля риска, это очень практичный выбор количественной стратегии торговли.
/*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)