이 전략은 TSI 지표와 헐 이동 평균에 기초한 양적 거래 전략 (Quantitative Trading Strategy Based on TSI Indicator and Hull Moving Average) 이라고 불린다. 주요 아이디어는 TSI 지표와 헐 이동 평균을 결합하여 주식, 암호화폐 또는 외환의 트렌드를 식별하고 트렌드가 시작되면 거래 신호를 생성하는 것입니다.
이 전략은 TSI 지표를 사용하여 가격 추세와 동력을 결정합니다. TSI 지표는 가격 변화율의 이중 평형 이동 평균에 기반합니다. TSI 값이 이동 평균을 넘을 때 구매 신호를 생성하고 그 아래를 넘을 때 판매 신호를 생성합니다.
이 전략은 또한 헐 이동 평균을 사용하여 가격 추세를 결정한다. 헐 이동 평균은 이중 가중 이동 평균으로 구성되어 있으며 시장 소음을 효과적으로 필터링할 수 있다. 빠른 선이 느린 선 위에 넘어가면 상승 추세가 확인되고, 아래를 넘어가면 하락 추세가 확인된다.
TSI 지표가 신호를 생성할 때, 헐 이동 평균이 같은 방향으로의 경향을 확인하면 해당 거래 신호가 트리거됩니다. 또한, 전략은 또한 경향을 확인하기 위해 촛불 몸의 방향을 검사합니다. 신호는 표시 신호, 헐 신호 및 촛불 몸의 방향이 일관되게 정렬되었을 때만 생성됩니다.
트렌드, 모멘텀 및 이동 평균의 지표를 결합함으로써이 전략은 시장 트렌드의 시작을 효과적으로 식별하고 과도한 잘못된 신호를 피할 수 있습니다. 이중 매끄러운 이동 평균은 또한 약간의 소음을 필터합니다.
단일 지표 전략과 비교하면, 이 전략은 여러 지표를 결합하여 신호를 필터링하여 신호의 품질을 크게 향상시킬 수 있다. 여러 확인 조건은 또한 신호가 트리거될 때 매우 신뢰할 수 있게 한다.
이 전략은 트렌드 시작을 효과적으로 식별 할 수 있지만 시장 통합 중 일부 잘못된 신호와 과도한 거래를 일으킬 수 있습니다. 부적절한 매개 변수 설정은 불필요한 출구로 이어질 수 있습니다.
위험을 줄이기 위해, 허크 기간 또는 TSI 매개 변수를 적절히 조정 할 수 있습니다. 또한 제어 손실에 정지 할 수 있습니다. 최적화 과정에서 최상의 매개 변수를 위해 높은 신호-소음 비율을 보장하는 데 주의가 필요합니다.
이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.
이 전략은 TSI 지표와 홀 이동 평균을 결합하여 시장 추세를 확인한 후 거래 신호를 생성합니다. 이 전략은 높은 타이밍과 신호 품질을 가지고 있습니다. 매개 변수 최적화 및 전략 조합을 통해 수익성이 크게 향상되고 위험을 줄일 수 있습니다. 이 전략은 중장기 트렌드를 식별하는 데 적합하며 특히 암호화폐 및 외환 시장에서 유망한 응용 전망이 있습니다.
/*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)