ZigZag 지표를 기반으로 한 추세 추종 거래 전략


생성 날짜: 2024-01-08 10:13:24 마지막으로 수정됨: 2024-01-08 10:13:24
복사: 0 클릭수: 1089
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

ZigZag 지표를 기반으로 한 추세 추종 거래 전략

개요

이 문서에서 소개하는 거래 전략은 ZigZag 지표에 기반한 트렌드 추적 거래 전략이라고 한다. 이 전략은 ZigZag 지표를 사용하여 가격 트렌드를 식별하고, 트렌드가 역전될 때 포즈를 열어 트렌드를 추적한다. 전략 파인 코드에서 ZigZag 지표는 가격을 확인하는 새로운 최고점과 새로운 최저점으로 사용된다. 가격이 ZigZag 지표선을 뚫을 때 거래 신호로 사용된다.

전략 원칙

이 전략의 핵심은 ZigZag 지표를 사용하여 가격의 극한점을 위치시키고 가격 추세를 보여줍니다. ZigZag 지표는 높은 낮은 가격의 Exponential Moving Average로 구성됩니다. 구체적으로 다음과 같은 몇 가지 단계로 구성됩니다.

  1. 클로즈 가격의 지수 이동 평균 EMA를 계산하고, 3개의 이동 평균을 포함합니다: 빠른 라인, 중간 라인, 느린 라인.

  2. 가격 상승 추세인지 판단한다. 즉, 현재 중간선이 상위 K 선의 중간선보다 높다.

  3. 만약 현재 상승 추세라면, 지난 물결의 하위점부터 계산된 검출주기의 최저 가격을 찾아서, 지그자그의 값으로 니다.

  4. 현재 하향 추세인 경우, 이전 파도의 최고점부터 계산되는 검출주기의 최고값을 찾아서 ZigZag의 값으로 니다.

  5. 그래서 가격 변동의 극한 지점을 나타내는 지그자그 지표가 생겨났다.

이를 바탕으로 우리는 지그자그 라인을 기준으로 가격 트렌드를 판단한다. 즉, 가격이 상승할 때 지그자그 지시 라인을 돌파하면 우리는 더 많이 하고, 가격이 떨어질 때 지그자그 지시 라인을 돌파하면 우리는 더 많이 한다.

우위 분석

지그자그 지표를 사용하여 가격 동향을 판단하고 가격 극한점을 추적하는 장점은 다음과 같습니다.

  1. 시장의 소음을 효과적으로 필터링하여 주요 트렌드를 파악할 수 있습니다.

  2. 가격 상승과 하락의 돌파구에 기반한 거래 신호로 인해 효율적으로 수익을 얻을 수 있습니다.

  3. ZigZag 선은 부드럽고, 가짜 신호를 줄일 수 있다.

  4. 지그자그 변수를 조정하여 전략을 쉽게 최적화할 수 있다.

위험 분석

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

  1. 장기 운영은 급격한 변동으로 인해 갇혀있을 수 있습니다.

  2. ZigZag 지표는 파라미터에 민감하다. 부적절한 설정으로 거래 기회를 놓치거나 가짜 신호를 생성할 수 있다. 적절한 테스트와 최적화 파라미터가 필요하다.

  3. 트렌드 추적 전략은 트렌드 행성에 더 의존한다. 만약 충격이 발생하면 이 전략은 효과가 좋지 않다.

위와 같은 위험을 대비하기 위해, 우리는 단독 손실을 제어하는 스톱 메커니즘을 설정할 수 있습니다. 동시에 포지션 규모를 조정하여 포지션 전체 운영을 추구하지 마십시오. 마지막으로, 다양한 유형의 전략의 조합을 사용하십시오.

최적화 방향

이 전략은 다음의 몇 가지 측면에서 계속 개선될 수 있습니다.

  1. 이동식 스톱 또는 가격 회수폭을 설정하는 스톱

  2. 다른 지표와 결합하여 필터링한다. 예를 들어, 강화형 에너지 지표, 충분한 동력이 있는지 확인한다. 또는 거래량 지표, 방량 특성이 있는지 확인한다.

  3. 다른 시장 환경에 따라 다른 파라미터 구성을 사용한다.

  4. 다양한 EMA 평균선 변수를 테스트하여 최적의 변수 조합을 찾습니다.

요약하다

이 전략은 ZigZag 지표를 사용하여 가격 추세를 판단하고 극한 지점 근처에서 추적 포지션을 구축한다. 이 전략의 장점은 순차적이고 효율적으로 수익을 창출하는 것이다. 동시에, 피지배 위험도 존재한다. 우리는 스톱로스, 최적화 파라미터를 설정하고 거래 전략의 조합을 사용하여 위험을 제어 할 수 있다. 이 전략은 중장선 추세 거래에 더 적합하다. 적절하게 제어하고 조합하면 안정적인 수익을 얻을 수 있다.

전략 소스 코드
/*backtest
start: 2023-12-31 00:00:00
end: 2024-01-07 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "Noro's ZigTrend Strategy v1.0", shorttitle = "ZigTrend 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
length = input(4)
ExtremeDetection = input(4)
src = input(close)
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//ZigZag
f_zz(_length, _detection)=>
    _hls = ema(ema(ema(src, _length), round(_length*0.66)), round(_length*0.33))
    _isRising = _hls >= _hls[1]
    _zigzag = _isRising and not _isRising[1] ? lowest(_detection) :  not _isRising and _isRising[1] ? highest(_detection) : na
zigzag = f_zz(length, ExtremeDetection)
plot(zigzag, color=black, linewidth=2)

//Signals
up = close > zigzag
dn = close < zigzag

//Trading
lot = 0.0
lot := strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1]
if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)