Gann 각도를 기반으로 한 동적 추세 추종 거래 전략

GANN SMA SL TP
생성 날짜: 2024-07-30 15:53:39 마지막으로 수정됨: 2024-07-30 15:53:39
복사: 0 클릭수: 483
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

Gann 각도를 기반으로 한 동적 추세 추종 거래 전략

개요

칸스 각도를 기반으로 한 동적 추세를 추적하는 거래 전략은 칸스 이론과 휘어지는 높은 낮은 시점을 결합한 양적 거래 방법이다. 이 전략은 칸스 각도를 사용하여 시장 추세를 식별하고 가격이 이러한 각도선을 돌파 할 때 거래 신호를 생성한다. 전략의 핵심은 칸스 각도선을 동적으로 조정하여 다양한 시장 환경의 가격에 적응할 수 있도록하는 것이다. 운동은 중지 및 중지 수준을 설정하여 전략을 효과적으로 관리하고 전반적인 거래 성능을 향상시킬 수 있습니다.

전략 원칙

  1. 스윙 하위점 식별: 스윙 하위점과 하위점을 식별하기 위해 사용자가 정의한 주기 (기본 14[default]) 를 사용한다. 이 점들은 칸시각선을 그리는 기초이다.

  2. 칸시각선 계산: 인식된 흔들림의 높고 낮은 점을 기반으로, 전략은 각각 위와 아래로 칸시각선을 계산한다. 칸시는 사용자 지정할 수 있으며, 기본적으로 45도이다.

  3. 거래 신호 생성:

    • 가격 상승이 스 각선을 뚫고 올라갈 때, 더 많은 신호가 발생한다.
    • 가격 하향이 하향 간스 각선을 돌파했을 때, 공백 신호를 유발한다.
  4. 리스크 관리: 전략은 각 거래의 리스크 을 제어하기 위해 사용자 정의 가능한 중지 및 중지 수준을 포함합니다.

전략적 이점

  1. 역동적 적응성: 간시 각선의 시작점을 계속 조정함으로써, 전략은 다른 시장 환경과 가격 변동에 적응할 수 있다.

  2. 트렌드 추적: 전략은 본질적으로 트렌드 추적 시스템으로, 큰 트렌드에서 오는 눈에 띄는 수익을 잡을 수 있습니다.

  3. 위험 관리: 내장된 중지 및 중지 메커니즘은 위험을 통제하고 단일 거래로 과도한 손실을 방지합니다.

  4. 시각화: 전략은 차트에 간시 각선과 거래 신호를 직관적으로 표시하여 거래자가 시장 구조와 전략 논리를 쉽게 이해할 수 있습니다.

  5. 유연성: 여러 가지 조정 가능한 매개 변수 (각도, 주기의 길이는, 손해 중지 레벨) 는 전략이 다른 거래 품종과 시간 프레임에 적응할 수 있도록 합니다.

전략적 위험

  1. 흔들리는 시장 위험: 가로 디스크 또는 흔들리는 시장에서, 빈번한 가짜 브레이크가 과도한 잘못된 신호와 거래 비용을 초래할 수 있다.

  2. 슬라이드 포인트 위험: 빠른 시장에서 실제 거래 가격은 신호 생성 시의 가격과 현저하게 차이가 있을 수 있다.

  3. 과도한 최적화 위험: 역사적인 데이터에 맞게 변수를 과도하게 조정하면 전략이 미래에 좋지 않은 결과를 초래할 수 있습니다.

  4. 트렌드 반전 위험: 트렌드 초기 반전 시 전략이 손실을 초래할 수 있다.

이러한 위험을 줄이기 위해, 다음을 고려할 수 있습니다.

  • 추가적인 필터를 도입하여 (변동률 지표와 같은) 흔들리는 시장에서 잘못된 신호를 줄여줍니다.
  • 시장 가격 대신 제한 가격 표를 사용하여 슬라이드 포인트를 제어하십시오.
  • 여러 시간 프레임에 걸쳐 전략의 성능을 검증하여 안정성을 보장합니다.
  • 손해를 추적하는 것과 같은 손해를 막는 이동 방법을 사용하여 이익을 더 잘 보호하는 것을 고려하십시오.

전략 최적화 방향

  1. 다중 시간 프레임 분석: 더 높은 시간 프레임의 트렌드 정보를 통합하여 거래 신호의 품질을 향상시킬 수 있습니다.

  2. 동적 각도 조정: 시장의 변동에 따라 동적으로 칸시 각도를 조정하여 다양한 시장 환경에 더 잘 적응 할 수 있습니다.

  3. 거래량 고려: 거래량을 보조적인 지표로 사용하여 신호의 신뢰성을 높일 수 있습니다.

  4. 머신러닝 최적화: 머신러닝 알고리즘을 활용하여 전략 변수를 동적으로 최적화하여 전략의 적응성을 향상시킬 수 있다.

  5. 연관성 필터링: 다종 거래에서 종 간의 연관성을 고려하면 체계적인 위험을 줄일 수 있습니다.

  6. 회수 제어: 이익과 이익 곡선을 기반으로 한 회수 제어 장치를 도입하면 큰 추세 역전 시 자본을 더 잘 보호 할 수 있습니다.

이러한 최적화 방향은 전략의 안정성과 수익성을 높이는 동시에 고유한 위험을 줄이는 것을 목표로 합니다.

요약하다

칸스 각도에 기반한 동적 트렌드 추적 거래 전략은 고전적인 기술 분석 이론과 현대적인 정량화 방법을 결합한 거래 시스템이다. 그것은 동적으로 조정된 칸스 각도를 통해 시장 트렌드를 식별하고 추적하며, 중요한 돌파구에서 거래 신호를 생성한다. 전략의 장점은 동적 적응성과 내장 된 위험 관리 장치에 있다. 그러나 동시에 흔들리는 시장과 과도한 최적화와 같은 도전에 직면한다.

전략 소스 코드
/*backtest
start: 2024-06-01 00:00:00
end: 2024-06-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Gann Strategy", overlay=true)

// User inputs
gann_angle_up = input.float(45, "Gann Angle Up (degrees)")
gann_angle_down = input.float(45, "Gann Angle Down (degrees)")
length = input.int(14, "Length for Swing High/Low")

// Functions to find Swing High and Swing Low
var float swingHigh = na
var float swingLow = na

if (high[length] == ta.highest(high, length * 2 + 1))
    swingHigh := high[length]

if (low[length] == ta.lowest(low, length * 2 + 1))
    swingLow := low[length]

// Gann angles calculation
gann_up = swingLow + math.tan(gann_angle_up * math.pi / 180) * (bar_index - ta.valuewhen(not na(swingLow), bar_index, 0))
gann_down = swingHigh - math.tan(gann_angle_down * math.pi / 180) * (bar_index - ta.valuewhen(not na(swingHigh), bar_index, 0))

// Gann angles visualization
plot(na(gann_up) ? na : gann_up, color=color.green, linewidth=2, title="Gann Angle Up")
plot(na(gann_down) ? na : gann_down, color=color.red, linewidth=2, title="Gann Angle Down")

// Entry and exit conditions
longCondition = ta.crossover(close, gann_up)
shortCondition = ta.crossunder(close, gann_down)

if (longCondition)
    strategy.entry("Long", strategy.long)

if (shortCondition)
    strategy.entry("Short", strategy.short)

// Visualization of entry and exit points
plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")

// Setting stop loss and take profit levels
stopLossLevel = input.float(1.0, "Stop Loss Level (percent)") / 100
takeProfitLevel = input.float(2.0, "Take Profit Level (percent)") / 100

if (strategy.position_size > 0)
    strategy.exit("Take Profit/Stop Loss", from_entry="Long", limit=close * (1 + takeProfitLevel), stop=close * (1 - stopLossLevel))

if (strategy.position_size < 0)
    strategy.exit("Take Profit/Stop Loss", from_entry="Short", limit=close * (1 - takeProfitLevel), stop=close * (1 + stopLossLevel))