G-채널 트렌드 감지 전략

MA TP SL
생성 날짜: 2024-05-29 17:06:13 마지막으로 수정됨: 2024-05-29 17:06:13
복사: 0 클릭수: 1051
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

G-채널 트렌드 감지 전략

개요

G-채널 트렌드 탐지 전략은 G 채널 지표에 기반한 정량 거래 전략이다. 이 전략은 G 채널의 상하 극한을 계산하고 G 채널의 평행선과 가격의 교차 상황에 따라 현재의 시장 동향을 판단하여 매매 신호를 생성한다. 이 전략은 또한 위험을 제어하기 위해 스톱 손실 조건을 설정한다.

전략 원칙

  1. G 채널의 상하 극한 a와 b를 계산하여, a는 역사 최고값과 이전 주기 a값의 차등을 주기 수로 나누고, b는 역사 최저값과 이전 주기 a값과 b값의 차등을 주기 수로 나누었다.
  2. G 채널 평균선 avg, 즉 ((a+b) / 2。을 계산한다.
  3. 가격과 b값의 교차 상황을 판단하면, 가격이 b값을 넘으면 부진 트렌드가 형성되는 것으로 간주되며, 가격이 a값을 넘으면 하향 트렌드가 형성되는 것으로 간주됩니다.
  4. 보이스 트렌드에서, 만약 전 K선이 하향으로 그리고 현재 K선이 보이스로 변하면, 구매 신호를 생성한다. 보이스 트렌드에서, 만약 전 K선이 보이스로 그리고 현재 K선이 하향으로 변하면, 판매 신호를 생성한다.
  5. 스톱 스톱 손실 조건을 설정합니다. 여러 상위 포지션을 보유 할 때, 스톱 가격 구매 가격 곱하기 ((1 + 스톱 비율), 스톱 손실 가격 구매 가격 곱하기 ((1-스톱 비율); 빈 상위 포지션을 보유 할 때, 스톱 가격 판매 가격 곱하기 (((1-스톱 비율), 스톱 손실 가격 판매 가격 곱하기 ((1 + 스톱 비율)).

전략적 이점

  1. G 채널 지표는 시장의 추세를 효과적으로 포착할 수 있으며, 가격과 G 채널 평행선의 교차 상황을 통해 구매 신호를 생성하고, 간단하고 사용하기 쉽습니다.
  2. 스톱스트로드 설정은 위험을 효과적으로 제어하고 단일 거래에서 과도한 손실을 방지합니다.
  3. 전략 논리는 명확하고, 이해하기 쉽고, 구현하기 쉬우며, 수량 거래에 초보자들도 사용할 수 있도록 적합하다.

전략적 위험

  1. G채널 지표는 시장의 변동 상황에 대해 더 많은 가짜 신호를 생성할 수 있으며, 이는 빈번한 거래와 높은 슬라이드 포인트 비용으로 이어집니다.
  2. 스톱 스톱 손실 비율의 설정은 시장 특성과 개인 위험 선호도에 따라 조정되어야 하며, 부적절한 파라미터 설정은 전략적 수익에 영향을 줄 수 있습니다.
  3. 이 전략은 거래 품종의 특수성을 고려하지 않고, 주식 전략에서 정지, 하락 정지 등이 발생할 수 있는 상황을 고려하지 않고, 추가적인 최적화가 필요하다.

전략 최적화 방향

  1. 다른 기술 지표, 예를 들어 ATR, RSI 등을 도입하여 G 채널 지표에서 생성 된 신호를 2차 확인하여 신호의 신뢰성을 향상시킬 수 있습니다.
  2. 스톱 스톱 손실 비율에 대해서는 동적 조정 방식을 채택하여 시장의 변동성과 포지션 보유 시간 등의 요인에 따라 적응 조정하여 전략의 적응성을 향상시킬 수 있습니다.
  3. 거래 품종의 특성에 맞게, 주식 전략과 같은 특수한 상황 처리 논리를 설정할 수 있는 바람 제어 모듈을 추가할 수 있다.

요약하다

G-채널 트렌드 탐지 전략은 G-채널 지표를 기반으로 한 간단한 양적 거래 전략으로, 시장 추세를 포착하여 매매 신호를 생성하고, 스톱 손실 조건을 설정하여 위험을 제어한다. 이 전략의 논리는 명확하고, 구현하기 쉬운, 양적 거래 초보자 학습에 적합하다. 그러나, 이 전략은 불안정한 시장에 대해 더 많은 가짜 신호를 생성할 수 있기 때문에, 스톱 손실 비율은 거래 품종의 특수성을 고려하지 않고 시장 특성에 따라 조정해야합니다.

전략 소스 코드
//@version=5
// Full credit to AlexGrover: https://www.tradingview.com/script/fIvlS64B-G-Channels-Efficient-Calculation-Of-Upper-Lower-Extremities/
strategy("G-Channel Trend Detection Strategy", shorttitle="G-Trend", overlay=true)

// Input parameters
length = input.int(100, title="Length")
src = input(close, title="Source")
take_profit_percent = input.float(5.0, title="Take Profit (%)")
stop_loss_percent = input.float(2.0, title="Stop Loss (%)")
showcross = input.bool(true, title="Show Cross")

// Initialize variables
var float a = na
var float b = na

// Calculate a and b
a := math.max(src, nz(a[1])) - (nz(a[1]) - nz(b[1])) / length
b := math.min(src, nz(b[1])) + (nz(a[1]) - nz(b[1])) / length

// Calculate average
avg = (a + b) / 2

// Determine trend and color
crossup = ta.crossunder(b, close)
crossdn = ta.crossunder(a, close)
bullish = ta.barssince(crossdn) <= ta.barssince(crossup)
c = bullish ? color.lime : color.red

// Plotting
p1 = plot(avg, "Average", color=c, linewidth=1)
p2 = plot(close, "Close price", color=c, linewidth=1)
fill(p1, p2, c)

// Generate buy and sell signals
buy_signal = showcross and bullish and not bullish[1]
sell_signal = showcross and not bullish and bullish[1]

// Plot buy and sell signals on chart
plotshape(buy_signal ? avg : na, location=location.belowbar, style=shape.labeldown, color=color.new(color.lime, 0), size=size.tiny, text="Buy", textcolor=color.white, offset=-1)
plotshape(sell_signal ? avg : na, location=location.abovebar, style=shape.labelup, color=color.new(color.red, 0), size=size.tiny, text="Sell", textcolor=color.white, offset=-1)

// Alerts
alertcondition(buy_signal, title="Buy Signal", message="Buy Signal Detected")
alertcondition(sell_signal, title="Sell Signal", message="Sell Signal Detected")

// Calculate take profit and stop loss levels
take_profit_level = close * (1 + take_profit_percent / 100)
stop_loss_level = close * (1 - stop_loss_percent / 100)

// Strategy Entry and Exit
if (buy_signal)
    strategy.entry("Buy", strategy.long)

if (sell_signal)
    strategy.entry("Sell", strategy.short)

// Define the take profit and stop loss conditions for long positions
strategy.exit("Take Profit/Stop Loss", "Buy", limit=take_profit_level, stop=stop_loss_level)

// Define the take profit and stop loss conditions for short positions
strategy.exit("Take Profit/Stop Loss", "Sell", limit=close * (1 - take_profit_percent / 100), stop=close * (1 + stop_loss_percent / 100))