TSI 지표와 Hull 이동평균을 기반으로 한 양적 전략


생성 날짜: 2023-12-18 16:56:22 마지막으로 수정됨: 2023-12-18 16:56:22
복사: 0 클릭수: 452
1
집중하다
1166
수행원

TSI 지표와 Hull 이동평균을 기반으로 한 양적 전략

개요

이 전략은 TSI 지수와 헐 이동 평균을 기반으로 한 양적 거래 전략이라고 불립니다. 주요 아이디어는 TSI 지수와 헐 이동 평균을 결합하여 주식, 디지털 화폐 또는 외환의 트렌드를 식별하고 트렌드가 시작되면 거래 신호를 생성하는 것입니다.

전략 원칙

이 전략은 가격의 추세와 동력을 판단하기 위해 TSI 지표를 사용합니다. TSI 지표는 가격 변화율에 기반한 이중 평평한 이동 평균입니다. TSI 값이 자신의 이동 평균을 통과하면 구매 신호를 생성하고, 아래로 통과하면 판매 신호를 생성합니다.

이 전략은 또한 Hull 이동 평균을 사용하여 가격 흐름을 판단한다. Hull 이동 평균은 두 배의 중화 이동 평균을 통해 구성되어 있으며, 시장 소음을 효과적으로 필터링 할 수 있다. 빠른 선에서 느린 선을 통과 할 때 상승 추세로 판단하고, 낮은 선을 통과 할 때 하락 추세로 판단한다.

TSI 지표가 신호를 보내는 동시에, Hull 이동 평균도 같은 방향의 추세를 확인하면, 그에 따른 거래 신호가 발생한다. 또한, 전략은 K선 엔티티의 방향을 확인하기 위해 K선 엔티티의 방향을 검사한다. 지표 신호, Hull 신호 및 K선 엔티티의 방향이 일치하는 경우에만 거래 신호를 발송한다.

우위 분석

이 전략은 트렌드, 동력 및 평균의 여러 지표를 결합하여 시장 트렌드의 시작을 효과적으로 식별하고 많은 가짜 신호를 피합니다. 듀얼 플라이트 이동 평균은 또한 일부 잡음을 필터링 할 수 있습니다.

단일 지표에 비해, 이 전략은 여러 지표의 조합을 통해 필터링 신호를 통해 신호 품질을 크게 향상시킬 수 있다. 여러 확인 조건은 또한 전략이 신호를 생성할 때 매우 강력한 확실성을 갖는다.

위험 분석

이 전략은 트렌드 시작을 효과적으로 식별할 수 있지만, 시장의 흔들림이 있을 때 특정 잘못된 신호와 과도한 거래가 발생할 수 있다. 또한, 파라미터를 적절히 설정하지 않으면 불필요한 평형상태가 발생할 수 있다.

위험을 줄이기 위해, 적절하게 Hull 이동 평균 주기 또는 TSI 매개 변수를 조정할 수 있으며, 손실을 제어하기 위해 스톱을 추가할 수도 있다. 최적화 과정에서 신호-소음 비율에 주의를 기울여야 최적의 매개 변수를 얻을 수 있다.

최적화 방향

이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.

  1. 헐 이동 평균 파라미터를 최적화하고, 가짜 신호를 필터링하여 곡선을 매끄럽게 합니다.
  2. TSI 파라미터를 최적화하여 민감성과 안정성을 균형을 맞추는 것
  3. 손실을 제어하는 전략에 참여
  4. 신호 길이를 조정하여 단기 잡음을 필터링합니다
  5. 다양한 종류의 전략과 시간적 주기를 테스트합니다.
  6. 다른 지표와 결합하여 신호 검증을 수행합니다.

요약하다

이 전략은 TSI 지표와 Hull 이동 평균을 결합하여 시장 동향을 확인한 후 거래 신호를 생성한다. 전략은 높은 타이밍과 신호 품질을 가지고 있다. 매개 변수 최적화와 전략 조합을 통해 수익성을 크게 높이고 위험을 줄일 수 있다. 이 전략은 중장선 동향을 식별하는 데 적합하며, 특히 디지털 통화 및 외환 시장에서 광범위한 응용 가능성을 가지고 있다.

전략 소스 코드
/*backtest
start: 2022-12-11 00:00:00
end: 2023-12-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("TSI/HullMA/VWMA strategy", shorttitle="TSI/HullMA/VWMA", overlay=true, default_qty_type=strategy.percent_of_equity, max_bars_back=420, default_qty_value=100, calc_on_order_fills=true, calc_on_every_tick=true, pyramiding=0)
TP = input(defval=200.00, title="TargetPoint in $", type=float, step=1)
SL = input(defval=-2000.00, title="StopLoss in $", type=float, step=1)
signal = input(title="Signal Length",  defval=6)
keh=input(title="HullMA cross",defval=2)
a=input(title="VWMA",defval=2)
long=35,short=35,linebuy=4,linesell=-4,ot=1,p=ohlc4[0]
double_smooth(src, long, short) =>
    fist_smooth = ema(src, long)
    ema(fist_smooth, short)
pc = change(p)
rvwma=vwma(p,round(a))
rvwma2=vwma(p,round(a*2))
n2ma=2*wma(p,round(keh/2))
nma=wma(p,keh)
diff=n2ma-nma
sqn=round(sqrt(keh))
n2ma1=2*wma(p[1],round(keh/2))
nma1=wma(p[1],keh)
diff1=n2ma1-nma1
sqn1=round(sqrt(keh))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
hullbuy=n1>n2 and n1>n2[1] and rvwma>rvwma2
hullsell=n1<n2 and n1<n2[1] and rvwma<rvwma2
candlebuy=ohlc4[0]>ohlc4[1] and ohlc4[0]>ohlc4[2] and ohlc4[0]>ohlc4[3]
candlesell=ohlc4[0]<ohlc4[1] and ohlc4[0]<ohlc4[2] and ohlc4[0]<ohlc4[3]
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)
strategy.entry("buy", true, na, when = tsi_value>ema(tsi_value, signal) and candlebuy and hullbuy)
strategy.entry("sell", false, na, when = tsi_value<ema(tsi_value, signal) and candlesell and hullsell)
strategy.close_all(when = strategy.openprofit>TP or strategy.openprofit<SL)