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

금에 대한 손해를 멈추는 동력 거래 전략에 관한 모든 것

저자:차오장, 날짜: 2024-02-20 16:27:18
태그:

img

전반적인 설명

이 전략은 시장에서 과잉 구매 및 과잉 판매 상황을 결정하기 위해 21 일 지수적인 이동 평균에서 금 가격의 편차를 계산합니다. 편차가 표준 편차의 관점에서 특정 임계치에 도달하면 위험을 제어하기 위해 스톱 로스 메커니즘과 함께 추진력 거래 접근 방식을 채택합니다.

전략 논리

  1. 21일 EMA를 기준으로 계산합니다.
  2. EMA에서 가격 오차를 계산
  3. Z-Score로 오차를 표준화
  4. Z-Score가 0.5을 넘으면 장거리; Z-Score가 -0.5을 넘으면 단거리
  5. Z-Score가 0.5/-0.5 문턱으로 떨어지면 포지션을 닫습니다.
  6. Z-스코어가 3 이상 또는 -3 이하로 떨어지면 손실을 중지하십시오.

이점 분석

이 전략의 장점은 다음과 같습니다.

  1. 동적 지지/저항으로 동향을 포착하는 EMA
  2. Stddev와 Z-Score는 과잉 구매/ 과잉 판매 수준을 효과적으로 측정하여 잘못된 신호를 감소시킵니다.
  3. 기하급수적 EMA는 최근 가격에 더 많은 무게를 부여하여 더 민감하게 만듭니다.
  4. Z-Score는 통일된 판단 규칙에 대한 오차를 표준화합니다.
  5. 스톱 로스 메커니즘은 위험을 제어하고 손실을 제한합니다.

위험 분석

고려해야 할 몇 가지 위험:

  1. EMA는 가격 격차 또는 파업 때 잘못된 신호를 생성 할 수 있습니다.
  2. Stddev/Z-Score 임계값은 최상의 성능을 위해 적절한 조정이 필요합니다.
  3. 잘못된 스톱 로스 설정으로 인해 불필요한 손실이 발생할 수 있습니다.
  4. 블랙 스완 이벤트는 스톱 로스를 유발하고 트렌드 기회를 놓칠 수 있습니다.

해결책:

  1. 주요 트렌드를 식별하기 위해 EMA 매개 변수를 최적화하십시오.
  2. 최적의 Stddev/Z-Score 임계값을 찾기 위한 백테스트
  3. 트레일링 스톱과 함께 스톱 손실 합리성을 테스트합니다.
  4. 시장 사건 이후 재평가, 그에 따라 전략을 조정

최적화 방향

전략을 개선할 수 있는 몇 가지 방법:

  1. 단순한 Stddev 대신 ATR와 같은 변동성 지표를 사용하여 위험 욕구를 측정하십시오.
  2. 더 나은 기본 라인을 위해 이동 평균의 다른 유형을 테스트
  3. 가장 좋은 기간을 찾기 위해 EMA 매개 변수를 최적화
  4. 성능 향상을 위해 Z 점수 임계치를 최적화
  5. 더 지능적인 위험 통제를 위해 변동성 기반의 중지를 추가합니다.

결론

전체적으로 이것은 견고한 트렌드 다음 전략이다. 트렌드 방향과 표준화된 오차를 정의하기 위해 EMA를 사용하여 무역 신호에 대한 과소 구매/ 과소 판매 수준을 명확하게 식별한다. 수익을 실행시킬 때 합리적인 스톱 로스 통제 위험. 추가 매개 변수 조정 및 조건 추가로이 전략을 실용적인 적용에 더 견고하게 만들 수 있다.


/*backtest
start: 2024-01-20 00:00:00
end: 2024-02-19 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("GC Momentum Strategy with Stoploss and Limits", overlay=true)

// Input for the length of the EMA
ema_length = input.int(21, title="EMA Length", minval=1)

// Exponential function parameters
steepness = 2

// Calculate the EMA
ema = ta.ema(close, ema_length)

// Calculate the deviation of the close price from the EMA
deviation = close - ema

// Calculate the standard deviation of the deviation
std_dev = ta.stdev(deviation, ema_length)

// Calculate the Z-score
z_score = deviation / std_dev

// Long entry condition if Z-score crosses +0.5 and is below 3 standard deviations
long_condition = ta.crossover(z_score, 0.5)

// Short entry condition if Z-score crosses -0.5 and is above -3 standard deviations
short_condition = ta.crossunder(z_score, -0.5)

// Exit long position if Z-score converges below 0.5 from top
exit_long_condition = ta.crossunder(z_score, 0.5)

// Exit short position if Z-score converges above -0.5 from below
exit_short_condition = ta.crossover(z_score, -0.5)

// Stop loss condition if Z-score crosses above 3 or below -3
stop_loss_long = ta.crossover(z_score, 3)
stop_loss_short = ta.crossunder(z_score, -3)

// Enter and exit positions based on conditions
if (long_condition)
    strategy.entry("Long", strategy.long)
if (short_condition)
    strategy.entry("Short", strategy.short)
if (exit_long_condition)
    strategy.close("Long")
if (exit_short_condition)
    strategy.close("Short")
if (stop_loss_long)
    strategy.close("Long")
if (stop_loss_short)
    strategy.close("Short")

// Plot the Z-score on the chart
plot(z_score, title="Z-score", color=color.blue, linewidth=2)

// Optional: Plot zero lines for reference
hline(0.5, "Upper Threshold", color=color.red)
hline(-0.5, "Lower Threshold", color=color.green)


더 많은