리소스 로딩... 로딩...

동적 돈치안 채널과 간단한 이동 평균의 조합 양적 전략

저자:차오장, 날짜: 2024-06-17 17:29:48
태그:SMA

img

전반적인 설명

이 전략은 두 가지 기술 지표: 돈치안 채널과 간단한 이동 평균 (SMA) 를 결합합니다. 가격이 돈치안 채널의 하단역 아래로 넘어와 SMA 위에 닫을 때 긴 포지션을 개척합니다. 반대로, 가격이 돈치안 채널의 상단역 위에 넘어와 SMA 아래로 닫을 때 짧은 포지션을 개척합니다. 가격이 돈치안 채널의 상단역에 도달하면 긴 포지션은 닫히고 가격이 하단역에 도달하면 짧은 포지션은 닫습니다. 이 전략은 강한 트렌드가있는 시장에 적합합니다.

전략 원칙

  1. 돈치안 채널의 상부와 하부 대역을 계산합니다. 상부 대역은 지난 n 기간 동안 가장 높고, 하부 대역은 지난 n 기간 동안 가장 낮습니다.
  2. 간단한 이동 평균을 계산합니다. SMA는 지난 m 기간 동안의 종료 가격의 수학적 평균입니다.
  3. 롱 엔트리: 가격이 돈치안 채널의 하단 지대 아래와 닫기 가격이 SMA 위에 있을 때 롱 포지션을 개시합니다.
  4. 쇼트 엔트리: 가격이 돈치안 채널의 상단 범위를 넘고 종료 가격이 SMA를 넘으면 쇼트 포지션을 개척합니다.
  5. 긴 출구: 가격이 돈치안 채널의 상단에 도달하면 긴 포지션을 닫습니다.
  6. 쇼트 출구: 가격이 돈치안 채널의 하단 지대에 도달하면 쇼트 포지션을 닫습니다.

전략적 장점

  1. 두 가지 시장 요소: 트렌드 및 변동성을 결합합니다. SMA는 트렌드를 포착하고, Donchian 채널은 변동성을 포착하여 트렌드 시장에서 인하 기회를 포착 할 수 있습니다.
  2. 명확한 이윤 취득 조건은 적시에 이윤을 확보하는 데 도움이 됩니다. 가격이 각각 돈치안 채널의 상위 및 하위 대역에 도달하면 긴 위치와 짧은 위치가 닫히며, 트렌드가 역전되기 전에 전략이 수익성있는 거래를 종료 할 수 있습니다.
  3. 몇 가지 매개 변수가 최적화를 더 쉽게 만듭니다. 전략은 단 세 가지 매개 변수: 돈치안 채널 기간, 오프셋 및 SMA 기간, 최적화를 단순화합니다.

전략 위험

  1. 빈번한 거래. 전략은 높은 거래 비용의 시장에서 수익을 침식 할 수있는 높은 포지션 입출 빈도를 가지고 있습니다. 입시 조건을 완화하거나 시간 프레임을 늘림으로써 완화 될 수 있습니다.
  2. 범위 시장에서 낮은 성과. 트렌드가 불분명할 때 전략은 더 많은 손실을 입을 수 있습니다. 변동성 지표는 범위 시장을 식별하고 전략을 중단하는 데 사용될 수 있습니다.
  3. 파라미터 안정성이 부족하다. 최적의 파라미터들은 다른 기기와 시간 틀에 따라 크게 달라질 수 있어 파라미터 안정성이 떨어지는 것을 나타낸다. 라이브 성능은 백테스트와 일치하지 않을 수 있다. 파라미터 안정성을 확인하기 위해 광범위한 샘플 외부 테스트와 민감성 분석이 필요하다.

전략 최적화 방향

  1. 다른 지표와 결합된 선택적 엔트리 조건을 추가하십시오. 예를 들어, DMI의 ADX가 특정 진입 문턱 이상으로 요구하거나 RSI가 과잉 판매 구역을 떠날 때만 장을 입력하십시오. 이것은 엔트리의 승률을 향상시킬 수 있습니다.
  2. 수익 후속 기능을 달성하기 위해 고정 된 돈치안 채널 라인 대신 동적 인 이윤을 취하는 라인을 사용하십시오. 예를 들어, 가격이 긴 포지션의 돈치안 채널의 상단 범위에 도달 한 후, ATR 스톱-러스 라인 또는 SAR 스톱-러스 라인에서 포지션을 닫는 것으로 전환하십시오.
  3. 변동성 수준에 따라 동적으로 돈치안 채널 기간을 조정합니다. 높은 변동성 시장 조건에서 돈치안 채널 기간을 단축하고 낮은 변동성 조건에서 기간을 연장합니다. 이것은 다른 시장에 적응하는 데 도움이됩니다.

요약

동적 돈치안 채널 및 간단한 이동 평균 조합 전략은 간단하고 사용하기 쉬운 양적 거래 전략 프레임워크입니다. 트렌드 추적 및 변동성 브레이크오웃의 관점에서 입출 로직을 구성하여 강력한 트렌드를 가진 도구에 적합합니다. 그러나 전략은 종종 범위 제한 시장에서 성능이 좋지 않으며 매개 변수 안정성은 중간합니다. 보조 입시 조건, 동적 수익 취득 및 매개 변수 자체 적응 메커니즘을 도입하여 전략의 적응성과 안정성을 향상시킬 수 있습니다. 전반적으로이 전략은 더 고급 양적 전략을 만들기 위해 추가로 수정 및 개선 될 기본 프레임워크 전략으로 사용될 수 있습니다.


/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("FBK Donchian Channel Strategy", overlay=true)

// Inputs
donchian_period = input.int(20, title="Donchian Channel Period")
donchian_offset = input.int(1, title="Donchian Channel Offset")
sma_period = input.int(200, title="SMA Period")
start_date = input(timestamp("2023-01-01 00:00 +0000"), title="Start Date")
end_date = input(timestamp("2023-12-31 23:59 +0000"), title="End Date")
trade_type = input.string("Both", title="Trade Type", options=["Buy Only", "Sell Only", "Both"])

// Calculate indicators
donchian_upper = ta.highest(high, donchian_period)[donchian_offset]
donchian_lower = ta.lowest(low, donchian_period)[donchian_offset]
sma = ta.sma(close, sma_period)

// Plot indicators
plot(donchian_upper, color=color.red, title="Donchian Upper")
plot(donchian_lower, color=color.green, title="Donchian Lower")
plot(sma, color=color.blue, title="SMA")

// Helper function to check if within testing period
is_in_testing_period() => true

// Entry conditions
long_condition = low <= donchian_lower and close > sma
short_condition = high >= donchian_upper and close < sma

// Exit conditions
exit_long_condition = high >= donchian_upper
exit_short_condition = low <= donchian_lower

// Open long position
if (is_in_testing_period() and (trade_type == "Buy Only" or trade_type == "Both") and long_condition)
    strategy.entry("Long", strategy.long)

// Close long position
if (is_in_testing_period() and exit_long_condition)
    strategy.close("Long")

// Open short position
if (is_in_testing_period() and (trade_type == "Sell Only" or trade_type == "Both") and short_condition)
    strategy.entry("Short", strategy.short)

// Close short position
if (is_in_testing_period() and exit_short_condition)
    strategy.close("Short")

// Close all positions at the end of the testing period
if not is_in_testing_period()
    strategy.close_all()


관련

더 많은