이중 상자 트렌드 추적 시스템

저자:차오장, 날짜: 2023-11-02 17:19:22
태그:

전반적인 설명

트렌드 추적 시스템 (Trend Following System) 은 이중 상자 시스템을 기반으로 하는 트렌드 추적 전략이다. 장기 상자를 사용하여 전체 트렌드 방향을 결정하고 단기 상자가 트리거될 때 주요 트렌드와 일치하는 신호를 취한다. 이 전략은 위험을 관리하면서 트렌드를 따른다.

전략 논리

전략은 트렌드를 결정하기 위해 두 개의 상자를 사용합니다. 장기 상자는 주요 트렌드 방향을 판단하기 위해 더 긴 기간을 사용하며 단기 상자는 거래 신호를 생성하기 위해 더 짧은 기간을 사용합니다.

우선 전략은 주요 트렌드 방향을 결정하기 위해 장기 상자의 가장 높고 가장 낮은 가격을 계산합니다. 트렌드 방향은 다음과 같습니다.

  • 가장 높은 가격이 이전 바의 가장 높은 가격을 넘으면 상승 추세로 정의되며 1의 값을 부여합니다.
  • 가장 낮은 가격이 이전 바의 가장 낮은 가격 아래로 넘어가면 -1의 값을 부여하는 하락 추세로 정의됩니다.
  • 그렇지 않으면 원래 트렌드 방향 유지

주요 트렌드를 결정한 후 전략은 단기 상자 신호를 기반으로 포지션을 취하기 시작합니다. 구체적으로:

  • 주요 트렌드가 상승하고 단기 상자의 최저가격이 이전 상자의 최저가격과 같고 현재 단기 상자의 최저가격보다 낮을 때, 긴 거래가 됩니다.
  • 주요 트렌드가 하락하고 단기 상자의 최고가격이 이전 상자의 최고가격과 같고 현재 단기 상자의 최고가격보다 높을 때, 단기 상점에 가십시오.

또한, 스톱 로즈와 영업 취득은 다음과 같이 구성됩니다.

  • 긴 스톱 손실은 장기 상자의 가장 낮은 가격이고 짧은 스톱 손실은 장기 상자의 가장 높은 가격입니다.
  • 긴 취득은 단기 상자의 가장 높은 가격이고 짧은 취득은 단기 상자의 가장 낮은 가격입니다.

주요 트렌드가 역전되면 모든 포지션을 닫습니다.

이점 분석

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

  1. 이중 상자 시스템은 트렌드 방향을 효과적으로 식별하고 잘못된 거래를 줄입니다.
  2. 주요 트렌드에 부합하는 반전 신호만 받아들이면 단기 시장 소음으로 인해 오해를 피할 수 있습니다.
  3. 긴 기간과 짧은 기간의 조합은 위치 조정 유연성을 유지하면서 주요 트렌드를 포착하는 것을 보장합니다.
  4. 트렌드를 따르면서 합리적인 스톱 로스 및 수익점 관리 위험
  5. 주요 트렌드가 역전될 때 모든 포지션을 빠르게 평평화하면 손실을 최소화합니다.

위험 분석

이 전략의 위험은 다음과 같습니다.

  1. 부적절한 장기 및 단기 설정은 과도한 거래 또는 놓친 기회를 유발할 수 있습니다.
  2. 단기적 반전은 장기적인 경향 변화를 나타내지 않을 수 있지만 여전히 손실 위험을 야기합니다.
  3. 너무 가까운 스톱 손실은 조기에 중단 될 수 있습니다.
  4. 너무 느슨하게 수익을 취하면 수익을 극대화하지 않을 수 있습니다.
  5. 주요 추세에 대한 잘못된 판단은 손실로 이어집니다.
  6. 해결책은 조정 기간, 정지/목적 최적화, 필터 추가 등입니다.

최적화 방향

이 전략은 다음과 같이 개선될 수 있습니다.

  1. 가짜 브레이크를 피하기 위해 필터를 추가합니다.
  2. 다양한 제품에 대한 길고 짧은 기간 최적화
  3. 동적으로 스톱 로스 및 수익을 취하는 수준을 조정합니다.
  4. 포지션 사이즈링 규칙을 포함
  5. 트렌드 변화의 신뢰성을 판단하기 위해 부피 등을 사용
  6. 매개 변수와 필터를 자동으로 최적화하기 위해 기계 학습을 활용

요약

트렌드 추적 시스템 (Trend Following System) 은 트렌드 결정과 단기 조정을 결합한 실용적인 트렌드 트레이딩 전략이다. 지속적인 최적화로 위험 조절을 통해 트렌드를 추적하는 강력한 자동화 시스템으로 변할 수 있다. 트렌드 트레이딩의 핵심 철학을 포함하고 있으며 심도 있는 연구를 할 가치가 있다.

[/trans]


/*backtest
start: 2023-10-25 00:00:00
end: 2023-10-26 07:00:00
period: 5m
basePeriod: 1m
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/
// © LonesomeTheBlue

//@version=4
strategy("Grab Trading System", overlay = true)
flb = input(defval = 80, title = "Longterm Period", minval = 1)
slb = input(defval = 21, title = "Shortterm Period", minval = 1)
showtarget = input(defval = true, title = "Show Target")
showtrend = input(defval = true, title = "Show Trend")

major_resistance = highest(flb)
major_support = lowest(flb)
minor_resistance = highest(slb)
minor_support = lowest(slb)

var int trend = 0
trend := high > major_resistance[1] ? 1 : low < major_support[1] ? -1 : trend
strategy.entry("Buy", true, when = trend == 1 and low[1] == minor_support[1] and low > minor_support)
strategy.entry("Sell", false, when = trend == -1 and high[1] == minor_resistance[1] and high < minor_resistance)

if strategy.position_size > 0
    strategy.exit("Buy", stop = major_support, comment = "Stop Buy")
    if high[1] == minor_resistance[1] and high < minor_resistance
        strategy.close("Buy", comment ="Close Buy")
    
if strategy.position_size < 0
    strategy.exit("Sell", stop = major_resistance, comment = "Stop Sell")
    if low[1] == minor_support[1] and low > minor_support
        strategy.close("Sell", comment ="Close Sell")

if strategy.position_size != 0 and change(trend)
    strategy.close_all()
    
majr = plot(major_resistance, color = showtrend and trend == -1 and trend[1] == -1 ? color.red : na)
majs = plot(major_support, color = showtrend and trend == 1 and trend[1] == 1 ? color.lime : na)
minr = plot(minor_resistance, color = showtarget and trend == 1 and strategy.position_size > 0 ? color.yellow : na, style = plot.style_circles)
mins = plot(minor_support, color = showtarget and trend == -1 and strategy.position_size < 0 ? color.yellow : na, style = plot.style_circles)

fill(majs, mins, color = showtrend and trend == 1 and trend[1] == 1 ? color.lime : na, transp = 85)
fill(majr, minr, color = showtrend and trend == -1 and trend[1] == -1 ? color.red : na, transp = 85)


더 많은