이동 평균 전략의 트렌드 오차 지수

저자:차오장, 날짜: 2023-11-06 14:46:40
태그:

img

전반적인 설명

이 전략은 가격의 트렌드 오차 지수 (TSI) 를 계산하고, 이동 평균과 TSI를 처리하고, TSI의 이동 평균 라인을 형성합니다. 가격 촛불 방향과 결합하여 현재 가격이 상승 추세 또는 하락 추세인지 결정하고, 따라서 구매 및 판매 신호를 생성합니다.

원칙

이 전략의 주요 단계는 다음과 같습니다.

  1. 가격 변화 비율을 계산합니다.
  2. HMA와 함께 이중 매끄러운 pct를 얻으려면 double_smoothed_pc
  3. 절대 pct의 이중 HMA를 계산하여 double_smoothed_abs_pc를 얻습니다.
  4. 계산 TSI 값: (100 * (double_smoothed_pc / double_smoothed_abs_pc))
  5. HMA와 함께 TSI 값을 처리하여 TSI 이동 평균 라인 tsihmaline를 얻으십시오.
  6. TSI 값과 TSI 이동 평균 라인을 비교합니다. 이동 평균의 위는 상승 추세이고 아래는 하락 추세입니다.
  7. 상승 추세에서, 가격도 상승하는 경우, 구매 신호를 생성
  8. 하락 추세에서, 가격도 떨어지고 있다면, 판매 신호를 생성

위의 단계를 통해 전체 트렌드 방향을 결정하고 실제 가격 움직임과 결합하여 거래 신호를 생성합니다.

장점

  1. 이중 HMA 평평화 단기 소음 및 주요 트렌드 잠금 필터
  2. TSI와 그 이동평균선은 전반적인 경향 방향을 결정합니다.
  3. 가격 촛불과 결합하면 가짜 브레이크오웃을 피하고 신호 신뢰성을 향상시킵니다.
  4. 사용자 정의 가능한 매개 변수는 다른 사이클 시장에 적응합니다
  5. 그래픽 시각화, 상승 추세를 표시하는 녹색, 하락 추세를 표시하는 빨간색

위험성

  1. 범위에 묶인 시장에서 여러 가지 잘못된 신호를 생성 할 수 있습니다.
  2. 전환점에서의 이동평균선 지연, 아마도 가장 좋은 입문 지점을 놓치고 있습니다.
  3. 변화하는 시장에 적응하기 위해 자주 매개 변수를 조정해야합니다.
  4. 단일 TSI 지표에 기초하여 다른 지표와 최적화 할 수 있습니다.

강화

  1. 통합 중에 잘못된 신호를 피하기 위해 필터를 추가
  2. 트렌드 반전 지점을 확인하기 위해 다른 지표를 추가합니다.
  3. 기계 학습 등을 통해 매개 변수를 자동 최적화
  4. 단일 거래 손실을 통제하기 위해 스톱 손실을 도입하십시오.

결론

이 전략은 트렌드 방향을 결정하기 위해 TSI를 사용하여 가격 촛불과 결합하여 트렌드를 효과적으로 파악하고 상승 추세에서 구매하고 하락 추세에서 판매 할 수있는 거래 신호를 생성합니다. 그러나 안정성을 향상시키기 위해 최적화를 필요로하는 위험도 있습니다. 전반적으로이 전략은 직관적이고 이해하기 쉽습니다. 기술 지표에 익숙한 거래자에게 적합합니다.


/*backtest
start: 2023-10-29 00:00:00
end: 2023-11-05 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="TSIHULLBOT", shorttitle="TSICCIHULL", default_qty_type=strategy.percent_of_equity, default_qty_value=100)
long = input(title="Long Length", type=input.integer, defval=50)
short = input(title="Short Length", type=input.integer, defval=50)
signal = input(title="Signal Length", type=input.integer, defval=7)
price = input(title="Source",type=input.source,defval=open)
lineupper = input(title="Upper Line", type=input.integer, defval=250)
linelower = input(title="Lower Line", type=input.integer, defval=-250)
double_smooth(price, long, short) =>
    fist_smooth = hma(price, long)
    hma(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))*5
tsihmaline=(hma(tsi_value,signal))*5
clr = tsihmaline < tsi_value ? color.red : color.lime
clr2 = tsi_value < tsi_value[1] ? color.red : color.lime
i1=plot(lineupper+3, color=color.black, linewidth=3)
i2=plot(linelower+3, color=color.black, linewidth=3)
i3=plot(lineupper, color=clr)
i4=plot(linelower, color=clr)
trendv=tsihmaline/5.6
plot(trendv, linewidth=7,  color=color.black)
plot(trendv, linewidth=4,  color=color.yellow)
j1=plot(tsi_value, linewidth=5, color=color.black)
j2=plot(tsi_value[1], linewidth=5, color=color.black)
j3=plot(tsi_value, color=clr2)
j4=plot(tsi_value[1], color=clr2)
fill(i3,i4,color=clr,transp=90)
fill(j3,j4,color=clr2,transp=15)
longCondition = tsihmaline>tsihmaline[1] and price>price[1]
if (longCondition)
    strategy.entry("Buy ⤴️", strategy.long)
shortCondition = tsihmaline<tsihmaline[1] and price<price[1]
if (shortCondition)
    strategy.entry("Sell ⤵️", strategy.short)

더 많은