트렌드 트래킹 전략 (True Strength Index) 과 결합된 듀얼 버텍스 지표 (Dual Vortex Indicator) 를 기반으로

저자:차오장, 날짜: 2023-12-12 16:23:10
태그:

img

전반적인 설명

이 전략은 트렌드 추적 전략으로 듀얼 버텍스 지표와 트루 스트리트 인덱스를 결합한 트렌드 추적 전략이라고 불린다. 이 트렌드 트래킹 전략은 듀얼 버텍스 지표와 트루 스트리트 인덱스가 구매 및 판매 신호를 발행할 때 긴 및 짧은 포지션을 열고, 중장기 트렌드를 포착하기 위해 특정 가격 움직임 후에 포지션을 닫는다.

전략 논리

이 전략은 이중 소용돌이 지표와 실제 강도 지표 (TSI) 를 모두 사용합니다. 이중 소용돌이 지표는 각각 상승 및 하락 모멘텀의 크기를 반영하는 VI + 및 VI- 라인으로 구성됩니다. TSI는 가격 변화의 강도와 방향을 측정하는 빨간색과 파란색 라인을 가지고 있습니다.

VI+가 상승하고 VI-가 하락할 때 상승 추세가 강화되고 하락 추세 동력이 약화되는 것을 나타냅니다. 이중 소용돌이 지표는 긴 신호를 생성합니다. 동시에 TSI 파란색 선이 빨간 선 위에 넘어가면 TSI도 긴 신호를 발산합니다. 전략은 두 지표가 동시에 긴 신호를 발산하면 긴 포지션을 열 것입니다.

반대로, VI+가 떨어지고 VI-가 상승하여 상승 동력이 약화되고 하락 동력이 강화되는 것을 신호하면 이중 소용돌이는 짧은 신호를 발산합니다. TSI 파란색 선이 빨간 선 아래를 넘으면 TSI도 짧은 신호를 생성합니다. 전략은 정렬 된 짧은 신호를 수신하면 짧은 포지션을 개척합니다.

두 지표의 신호를 이렇게 결합함으로써 전략은 중장기 트렌드를 파악하고 추적할 수 있다. 트렌드가 끝나면 출구 신호가 생성된다. 따라서 이 전략은 시장에서 큰 트렌드를 따르는 움직임을 효과적으로 포착할 수 있다.

이점 분석

이 전략의 주요 장점은 다음과 같습니다.

  1. 이중 표시 필터는 신호 신뢰성을 향상시키고 잘못된 신호를 피합니다.
  2. 중장기 지표를 채택하면 더 큰 경향을 파악 할 수 있습니다. 단기 신호는 시장 소음으로 방해되는 경향이 있습니다.
  3. 매개 변수 조정을 통해 보유 기간을 유연하게 조정합니다. 이것은 트렌드 추적과 단일 거래 위험 통제를 가능하게합니다.
  4. 트렌드 추적 및 리스크 관리의 균형. 지표는 트렌드를 잘 식별합니다. 리스크는 출구 가격 파도를 설정하여 제어됩니다.

위험 분석

또한 다음과 같은 위험 요소가 있습니다.

  1. 중장기 보유는 스톱 손실을 위해 윙사 가격 행동으로 직면 할 수 있습니다. 출구 파동 기간을 줄이거나 스톱 손실을 적절히 조정함으로써 이를 완화 할 수 있습니다.
  2. 이중 지표 필터에도 불구하고 잘못된 신호의 확률은 여전히 존재합니다. 추가 지표 확인 또는 매개 변수 조정이 도움이됩니다.
  3. 자본 사용 효율이 상대적으로 낮습니다. 자본은 더 긴 보유 기간 동안 보유됩니다. 포지션 크기는 자금 활용을 최적화하기 위해 조정 될 수 있습니다.
  4. 트렌딩 시장에 의존합니다. 불필요한 손실을 피하기 위해 범위 시장에서 포지션 크기를 줄여야합니다.

최적화 방향

전략을 최적화하는 몇 가지 방법은 다음과 같습니다.

  1. 더 많은 지표 조합을 도입하여 여러 필터링을 통해 신호 품질을 강화합니다.
  2. 다양한 제품 특성에 더 잘 맞게 매개 변수를 최적화합니다.
  3. 동적인 포지션 사이징을 추가하여 트렌딩 포지션을 확장하면서 다양한 시장의 사이즈를 줄입니다.
  4. 스톱 로스 메커니즘을 포함하고, 트래일링 스톱 로스 및 부분 클로즈 스톱 로스 등의 스톱 로스 메커니즘을 사용하여 리스크를 제어합니다.
  5. 엘리엇 파동 분석을 결합하여 방향 필터로 더 큰 차원 경향을 식별합니다.
  6. 기계 학습을 활용하여 자동 최적화 매개 변수와 규칙을 사용하여 적응력을 향상시킵니다.

결론

요약하자면, 이 전략은 중장기 트렌드 다음 접근법으로 우수하다. 이중 소용돌이 지표와 TSI의 기술을 활용함으로써, 신흥 중장기 트렌드를 안정적으로 인식할 수 있다. 적절한 매개 변수 조정으로, 거래 리스크를 관리할 수 있다. 더 많은 지표와 리스크 제어 기법을 통합함으로써 더 많은 최적화가 성과를 향상시킬 수 있다. 중장기 트렌드 트레이딩에 관심 있는 투자자들에게 적합하다.


/*backtest
start: 2023-11-11 00:00:00
end: 2023-12-11 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © hydrelev

//@version=4
strategy("Vortex TSI strategy", overlay=false)
///////////////////INDICATOR TSI
long = input(title="Long Length", type=input.integer, defval=25)
short = input(title="Short Length", type=input.integer, defval=13)
signal = input(title="Signal Length", type=input.integer, defval=13)
price = 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_blue = 100 * (double_smoothed_pc / double_smoothed_abs_pc)
tsi_red = ema(tsi_blue, signal)
// plot(tsi_blue, color=#3BB3E4)
// plot(tsi_red, color=#FF006E)
// hline(0, title="Zero")

/////////////////INDICATOR VI
period_ = input(14, title="Period", minval=2)
VMP = sum( abs( high - low[1]), period_ )
VMM = sum( abs( low - high[1]), period_ )
STR = sum( atr(1), period_ )
VIP_blue = VMP / STR
VIM_red = VMM / STR
// plot(VIP_blue, title="VI +", color=#3BB3E4)
// plot(VIM_red, title="VI -", color=#FF006E)

////////////////////STRATEGY
bar=input(1, title="Close after x bar", minval=1, maxval=50)

tsi_long = crossover(tsi_blue, tsi_red)
tsi_short = crossunder(tsi_blue, tsi_red)
vi_long = crossover(VIP_blue, VIM_red)
vi_short = crossunder(VIP_blue, VIM_red)

LongConditionOpen = tsi_long and vi_long ? true : false
LongConditionClose = tsi_long[bar] and vi_long[bar] ? true : false
ShortConditionOpen = tsi_short and vi_short ? true : false
ShortConditionClose = tsi_short[bar] and vi_short[bar] ? true : false

if (LongConditionOpen)
    strategy.entry("Long Entry", strategy.long)
if (LongConditionClose)
    strategy.close("Long Entry")

if (ShortConditionOpen)
    strategy.entry("Short Entry", strategy.short)
if (ShortConditionClose)
    strategy.close("Short Entry")

더 많은