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

Gann 각도를 기반으로 하는 동적 트렌드 트레이딩 전략

저자:차오장날짜: 2024-07-30 15:53:39
태그:GANNSMASLTP

img

전반적인 설명

가너각을 기반으로 한 동적 트렌드-추천 거래 전략은 스윙 고점과 저점과 함께 가너 이론을 결합한 양적 거래 방법이다. 이 전략은 시장 트렌드를 식별하기 위해 가너 각을 활용하고 이 각선을 통과할 때 거래 신호를 생성한다. 전략의 핵심은 다른 시장 환경에서 가격 움직임에 적응하기 위해 가너 각선을 동적으로 조정하는 데 있다. 스톱-로스 및 영리 수준을 설정함으로써 전략은 또한 위험을 효과적으로 관리하고 전반적인 거래 성과를 향상시킬 수 있다.

전략 원칙

  1. 스윙 하이 및 로우 식별: 전략은 사용자 정의 기간 (예정 14) 을 사용하여 스윙 하이 및 로우 포인트를 식별합니다. 이러한 포인트는 가너 각선을 그리는 기초로 사용됩니다.

  2. 간 각선 계산: 확인 된 스윙 최고와 최하위 기준으로 전략은 상향 및 하향 간 각선을 모두 계산합니다. 각은 사용자가 45도 기본으로 사용자 정의 할 수 있습니다.

  3. 무역 신호 생성:

    • 긴 신호는 가격이 상승한 가른 각선을 넘으면 발동됩니다.
    • 가격이 하락한 간 각선을 넘어갈 때 단축 신호가 발사됩니다.
  4. 리스크 관리: 전략은 각 거래에 대한 위험 노출을 제어하기 위해 사용자 정의 가능한 스톱 로스 및 리프트 테이크 레벨을 포함합니다.

전략적 장점

  1. 동적 적응력: 가너 각선의 출발점을 지속적으로 조정함으로써 전략은 다른 시장 환경과 가격 변동에 적응 할 수 있습니다.

  2. 트렌드 추적: 전략은 본질적으로 트렌드 추적 시스템으로 주요 트렌드에서 중요한 이득을 얻는 데 도움이됩니다.

  3. 리스크 관리: 내장된 스톱 로스 메커니즘과 수익 취득 메커니즘은 리스크를 제어하고 개별 거래에서 과도한 손실을 방지하는 데 도움이됩니다.

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

  5. 유연성: 여러 가지 조정 가능한 매개 변수 (각, 기간 길, 스톱 로스 및 수익 취득 수준) 는 전략이 다른 거래 도구와 시간 프레임에 적응 할 수 있도록합니다.

전략 위험

  1. 시장 위험: 옆구리 또는 시장에서 빈번한 잘못된 브레이크는 과도한 잘못된 신호와 거래 비용을 초래할 수 있습니다.

  2. 미끄러짐 위험: 빠르게 움직이는 시장에서 실제 실행 가격은 신호가 생성되는 가격과 크게 다를 수 있습니다.

  3. 과도한 최적화 위험: 역사적 데이터에 맞게 매개 변수를 과도하게 조정하면 미래의 성능이 떨어질 수 있습니다.

  4. 트렌드 역전 위험: 전략은 초기 트렌드 역전 시 손실을 입을 수 있습니다.

이 위험 을 줄이기 위해 다음 과 같은 것 들 을 고려 해 보십시오.

  • 불안정한 시장에서 잘못된 신호를 줄이기 위해 추가 필터 (변동성 지표 등) 를 도입합니다.
  • 마켓 오더 대신 리미트 오더를 사용해서
  • 안정성을 보장하기 위해 여러 시간 프레임에 걸쳐 전략 성과를 검증합니다.
  • 수익을 더 잘 보호하기 위해 후속 스톱과 같은 스톱 손실 방법을 변경하는 것을 고려합니다.

전략 최적화 방향

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

  2. 동적 각조 조정: 시장 변동성에 따라 동적으로 Gann 각조를 조정하면 전략이 다른 시장 환경에 더 잘 적응할 수 있습니다.

  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))


관련

더 많은