장점 이동 평균 브레이크 트렌드 추적 시스템

저자:차오장, 날짜: 2023-11-15 11:00:25
태그:

img

전반적인 설명

이것은 고전적인 트렌드 추후 시스템이다. 트렌드 방향을 결정하기 위해 이동 평균 크로스오버를 사용하여 가격이 돈치안 채널에서 벗어날 때 입력된다. 단기 시장 소음을 필터링하기 위해 돈치안 채널 매개 변수는 50 일로 설정된다. 이동 평균은 40 일 및 120 일 기하급수적 이동 평균이며, 중장기 트렌드를 더 잘 파악할 수 있다. 단기 거래에서 손실을 효과적으로 제어하기 위해 가격 아래 4 배의 ATR로 중지 손실이 설정된다.

전략 논리

이 전략은 주로 다음과 같은 요점들에 기반을 두고 있습니다.

  1. 40일 및 120일 기하급수적 이동 평균은 트렌드 결정 지표를 구성하는 데 사용됩니다. 빠른 선이 아래에서 느린 선 위에 넘어가면 상승 추세를 나타내는 황금 십자 신호입니다. 빠른 선이 위에서 느린 선 아래에 넘어가면 하락 추세를 나타내는 죽음의 십자 신호입니다.

  2. 돈치안 채널 매개 변수는 시장 소음을 필터링하기 위해 50 일로 설정되어 있습니다. 가격이 상위 대역 이상으로 돌파 할 때만 길게 이동하고, 가격이 함락되지 않도록 하위 대역 아래로 돌파 할 때만 짧게 이동합니다.

  3. 스톱 로스는 가격 아래의 ATR의 4배로 설정된다. ATR은 시장 변동성과 위험을 효과적으로 측정할 수 있다. 스톱 로스를 그 배수로 설정하면 개별 트레이드에서 손실을 제어할 수 있다.

  4. 기하급수적인 이동 평균은 현재 가격 추세에 더 잘 맞고, 간단한 이동 평균은 너무 부드럽습니다.

  5. 50일 채널 기간은 40일 및 120일 이동 평균과 함께 잘 작동하여 잘못된 브레이크를 효과적으로 필터링합니다.

이점 분석

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

  1. 이동 평균 조합은 시장 트렌드 방향을 효과적으로 결정할 수 있습니다. 40 일 MA는 단기 트렌드를 포착하고 120 일 MA는 장기 트렌드를 판단합니다.

  2. 돈치안 채널은 잡음을 필터링하고 상위와 하위 추격을 피합니다. 채널 브레이크오웃에 들어가는 것 만이 중앙의 통합 영역을 효과적으로 거래하는 것을 피합니다.

  3. 스톱 로스 설정은 개별 거래에서 손실을 제어하고 계정 폭을 피하기 위해 합리적입니다. 단일 거래 손실을 제어하면 수익 지속가능성을 보장합니다.

  4. 기하급수적인 이동 평균은 가격 변화 추세에 더 잘 맞고, 트렌드 거래 아이디어에 맞는 더 긴 보유 기간을 허용합니다.

  5. 이동 평균 매개 변수는 트렌드 캡처 감수성과 노이즈 필터 안정성 사이의 균형을 찾습니다.

위험 분석

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

  1. 장기 보유 기간 위험: 트렌드를 따르는 전략으로서, 길게 길게 나선 범위 또는 트렌드 역전 시 큰 손실이 발생할 수 있습니다.

  2. 가짜 브레이크오웃 위험: 가격이 채널 밴드 근처에 닿을 때 일부 가짜 브레이크오웃 비율이 발생할 수 있으며 불필요한 거래가 발생할 수 있습니다.

  3. 위험 설정 매개 변수: 이동 평균 및 채널의 설정은 주관적입니다. 다른 시장은 조정된 조합이 필요합니다. 그렇지 않으면 시스템 안정성이 영향을 받는다.

  4. 너무 긴 스톱 손실 위험: 너무 긴 스톱 손실을 설정하면 수익성에 영향을 미치는 너무 많은 스톱 아웃이 발생할 수 있습니다.

해결책:

  1. 장기 보유 기간 위험을 피하기 위해 보유 기간을 신중하게 결정합니다.
  2. 파격 신호를 안정적이고 신뢰할 수 있도록 매개 변수를 최적화합니다.
  3. 다른 시장에서 데이터를 테스트하고 매개 변수 조합을 최적화합니다.
  4. 너무 자주 멈추지 않기 위해 합리적으로 느슨하게 멈추십시오.

최적화 방향

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

  1. 최적의 매개 변수를 찾기 위해 다른 이동 평균 조합을 테스트하십시오. 다양한 단순, 기하급수적, 헐 이동 평균을 테스트 할 수 있습니다.

  2. 채널 기간과 설정을 최적화하여 브레이크오웃 신호를 더 효과적으로 만듭니다. 시장 변동 주파수를 기반으로 최적화합니다.

  3. 스톱 로스 전략을 최적화한다. 트렌드 기간 동안 트레일링 스톱과 트렌드 종료 후 고정 스톱을 채택한다.

  4. MACD, KD와 같은 확인 지표를 추가하여 신호의 정확성을 향상시킵니다.

  5. 포지션 사이즈 전략을 도입합니다. 수익을 최적화하기 위해 트렌드 기간 동안 피라미드

  6. 다른 제품 특성에 따라 매개 변수 조합을 선택하여 시스템을 더 견고하게 만듭니다.

결론

전체적으로 이것은 전형적이고 간단한 트렌드 추적 시스템이다. 핵심은 이동 평균과 채널 브레이크오웃을 사용하는 데 있다. 스톱 로스 전략은 또한 고전적이고 실용적입니다. 전략은 양자 시스템 개발의 기본 프레임워크로 작동 할 수 있으며 비교적 안정적인 이익을 위해 직접 배치 될 수도 있습니다. 테스트를 통해 추가 최적화는 시스템 안정성과 수익성을 향상시킬 수 있습니다. 요약하자면, 전략은 사용 편의성과 다재다능성을 갖추고 있으며 근본적인 양자 거래 전략으로 적합합니다.


/*backtest
start: 2023-10-15 00:00:00
end: 2023-11-14 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/
// © Robrecht99

//@version=5
strategy("Long Term Trend Following System", overlay=true, margin_long=0, margin_short=0, pyramiding=4)

// Backtest Range //

Start = input(defval = timestamp("01 Jan 2017 00:00 +0000"), title = "Backtest Start Date", group = "backtest window")
Finish = input(defval = timestamp("01 Jan 2100 00:00 +0000"), title = "Backtest End Date", group = "backtest window")

//Moving Averages //

len1 = input.int(40, minval=1, title="Length Fast EMA", group="Moving Average Inputs")
len2 = input.int(120, minval=1, title="Length Slow EMA", group="Moving Average Inputs")
src1 = input(close, title="Source Fast MA")
src2 = input(close, title="Source Slow MA")
maFast = input.color(color.new(color.red, 0), title = "Color Fast EMA", group = "Moving Average Inputs", inline = "maFast")
maSlow = input.color(color.new(color.blue, 0), title = "Color Slow EMA", group = "Moving Average Inputs", inline = "maSlow")
fast = ta.ema(src1, len1)
slow = ta.ema(src2, len2)
plot(fast, color=maFast, title="Fast EMA")
plot(slow, color=maSlow, title="Slow EMA")

// Donchian Channels //

Length1 = input.int(title="Length Upper Channel", defval=50, minval=1, group="Donchian Channels Inputs")
Length2 = input.int(title="Length Lower Channel", defval=50, minval=1, group="Donchian Channels Inputs")
h1 = ta.highest(high[1], Length1)
l1 = ta.lowest(low[1], Length2)
fillColor = input.color(color.new(color.purple, 95), title = "Fill Color", group = "Donchian Channels Inputs")
upperColor = input.color(color.new(color.orange, 0), title = " Color Upper Channel", group = "Donchian Channels Inputs", inline = "upper")
lowerColor = input.color(color.new(color.orange, 0), title = " Color Lower Channel", group = "Donchian Channels Inputs", inline = "lower")
u = plot(h1, "Upper", color=upperColor)
l = plot(l1, "Lower", color=upperColor)
fill(u, l, color=fillColor)
strategy.initial_capital = 50000
//ATR and Position Size //

length = input.int(title="ATR Period", defval=14, minval=1, group="ATR Inputs")
risk = input(title="Risk Per Trade", defval=0.01, group="ATR Inputs")
multiplier = input(title="ATR Multiplier", defval=2, group="ATR Inputs")
atr = ta.atr(length)
amount = (risk * strategy.initial_capital / (multiplier * atr))

// Buy and Sell Conditions //

entrycondition1 = ta.crossover(fast, slow)
entrycondition2 = fast > slow
sellcondition1 = ta.crossunder(fast, slow)
sellcondition2 = slow > fast

// Buy and Sell Signals //

if (close > h1 and entrycondition2)
    strategy.entry("long", strategy.long, qty=amount)
    stoploss = close - atr * 4
    strategy.exit("exit sl", stop=stoploss, trail_offset=stoploss)
if (sellcondition1 and sellcondition2)
    strategy.close(id="long")

if (close < l1 and sellcondition2)
    strategy.entry("short", strategy.short, qty=amount)
    stoploss = close + atr * 4
    strategy.exit("exit sl", stop=stoploss, trail_offset=stoploss)
if (entrycondition1 and entrycondition2)
    strategy.close(id="short")

더 많은