모멘텀 더블 슬라이딩 윈도우 TSI 인디케이터


생성 날짜: 2024-01-08 11:20:35 마지막으로 수정됨: 2024-01-08 11:20:35
복사: 1 클릭수: 359
1
집중하다
1166
수행원

모멘텀 더블 슬라이딩 윈도우 TSI 인디케이터

전략 개요

이 전략은동력 쌍 슬라이드 창TSI 지표 전략이 전략의 핵심 아이디어는 쌍 EMA 슬라이딩 창을 사용하여 가격 변화를 평형시키고, 추세의 방향 변화를 결합하여, 시장의 매매력을 반영하는 동력 지표, 즉 TSI 지표를 구성하고, 거래 신호로 구매 또는 판매 결정을 수립하는 것입니다.

2. 전략 원칙

이 전략은 두 개의 슬라이드 창 두 개의 지수 이동 평균을 사용하여 가격 변화를 계산합니다. 외면 창 기간이 길고 내면 창 기간이 짧습니다. 두 개의 평준화를 통해 가격 데이터의 일부 무작위성을 제거합니다.

먼저 가격의 단위 변화를 계산해 봅시다.

pc = change(price)

다음으로, 이중 슬라이드 창을 사용하여 가격 변화를 두 번 조정합니다.

double_smoothed_pc = double_smooth(pc, long, short)

가격변동의 절대값을 다시 계산하고, 이중 슬라이딩 창을 사용하여 이중 평준화를 합니다:

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

마지막으로, 평준화 후의 가격 변화를 평준화 후의 가격 변화의 절대값으로 나누면 구매와 판매의 힘을 나타내는 TSI 지표가 나옵니다.

tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)

다양한 길이의 긴 창 기간을 설정함으로써 단기 시장 소음을 어느 정도 필터링 할 수 있으며, TSI 지표가 중장기 트렌드에서 매매 힘을 더 잘 반영 할 수 있습니다. TSI 지표에 이동 평균을 통과하면 구매 신호가 발생하고, TSI 지표 아래에 이동 평균을 통과하면 판매 신호가 발생합니다.

세, 전략적 장점

  1. 이중 슬라이딩 창을 사용하여 단기 시장 소음을 효과적으로 필터링하여 지표 반응이 더 정확합니다.
  2. 가격 변화를 계산하는 데도 이중 평준화가 이루어져 TSI 지표가 더 안정적이고 신뢰할 수 있습니다.
  3. 가격변동과 가격변동의 절대값의 비율을 사용하여 자동 표준화, 더 비교 가능
  4. 거래 결정에 대한 우수한 지표로서 가격 변화의 방향과 강도를 종합적으로 고려합니다.
  5. 다른 매개 변수를 설정하여 필요에 따라 지표의 민감도를 조정할 수 있습니다

네, 전략적 위험

  1. 시장이 장기적으로 흔들리면 TSI 지표가 잘못된 신호를 보낼 수 있습니다.
  2. 파라미터를 잘못 설정하면 지표와 신호의 품질에도 영향을 줄 수 있습니다.
  3. 이중 슬라이딩 창이 있음에도 불구하고 지표는 단기 시장 소음에 민감합니다.
  4. 길고 짧은 창 간격이 너무 커지면 지표와 신호가 지연될 수 있습니다.

창 기간 파라미터를 조정하여 신호 평균 길이를 적절히 단축하여 최적화 할 수 있습니다. 시장이 흔들렸을 때 위험을 제어하기 위해 거래를 일시 중단 할 수 있습니다.

다섯째, 최적화

  1. 다양한 긴, 짧은 창 기간의 파라미터 조합을 테스트하여 최적의 파라미터를 찾습니다.
  2. 다른 종류의 이동 평균을 시도해보세요.
  3. 지표의 매끄러움을 높이고, 트리플 또는 멀티 슬라이딩 창을 구성
  4. 다른 보조적인 지표와 함께 구매 및 판매 지점을 최적화합니다.
  5. 단독 손실을 엄격하게 통제하기 위해 손실을 막는 전략을 세웁니다.

VI. 결론

이 전략은 가격변동에 기초한 이중 평준화 계산으로 매매력을 반영하는 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)