멀티-MA 쌍 거래 전략

저자:차오장, 날짜: 2023-09-23 15:16:50
태그:

전반적인 설명

이 전략은 두 가지 이동 평균 선택과 가격 패턴 인식을 결합하여 신호 품질을 향상시키기 위한 보다 포괄적인 입시 메커니즘을 형성합니다. 또한 강력한 리스크 관리를 달성하기 위해 이익 취득 통제와 최대 보유 기간을 통합합니다.

전략 논리

이 전략에는 다음의 지표와 규칙이 포함됩니다.

  1. 3 SMA는 전체 추세를 판단합니다.

  2. 2 EMA는 세부적인 방향 판단을 합니다.

  3. SAR는 추세와 동력을 지원합니다.

  4. 가격 패턴은 진입 신호로 형성을 식별합니다.

  5. 최대 수익은 제한을 가져가기 위해 수익을 기록합니다.

  6. 보유 기간 제한은 손실 확장을 피합니다.

여러 지표의 조합은 안정적인 거래를 위해 수익성과 위험 통제를 균형 잡는 강력한 입시 신호와 출구 메커니즘을 형성합니다.

장점

단일 지표 전략과 비교하면 다음과 같은 장점이 있습니다.

  1. 여러 가지 지표가 정확도를 향상시킵니다.

  2. 가격 패턴 인식은 출입 시기를 개선합니다.

  3. 이윤은 통제를 통해 이윤을 창출합니다.

  4. 보유 기간은 손실 확장을 피합니다.

  5. SMA는 추세를 따르고 있습니다.

  6. EMA는 감수성을 향상시킵니다.

  7. SAR는 탈출 신뢰성을 확인합니다.

  8. 전반적으로 좋은 위험과 보상 균형, 안정성.

  9. 정렬 매개 변수는 안정적인 알파를 얻을 수 있습니다.

위험성

그 장점에도 불구하고 다음과 같은 위험 요소가 주목되어야 합니다.

  1. 여러 가지 지표가 복잡성을 증가시킵니다.

  2. 넓은 매개 변수 조정은 과도한 최적화 위험이 있습니다.

  3. 가격 패턴 인식 효과는 불확실합니다.

  4. 이윤의 위험을 감수하는 경향은 계속되고 있습니다.

  5. 보유 기간은 수익 잠재력을 제한합니다.

  6. 안정성과 수익성은 타협이 있습니다.

  7. 여러 시장의 안정성은 검증을 필요로 합니다.

  8. 모델 안정성 지속적인 모니터링이 중요합니다.

강화

분석을 바탕으로 개선 사항은 다음을 포함할 수 있습니다.

  1. 반환 안정성을 위한 매개 변수를 조정합니다.

  2. 입력 시기를 위해 기계 학습을 통합합니다.

  3. 동적 스톱 로스를 최적화하고 수익을 취하세요.

  4. 보유 기간이 주식 곡선에 미치는 영향을 평가합니다.

  5. 다양한 시장에서 견고성을 테스트합니다.

  6. 과도한 부착을 방지하기 위해 매개 변수 견고성 검사를 추가합니다.

  7. 수량적 위험 관리 개발

  8. 전략의 효과를 지속적으로 검증합니다.

결론

요약하자면, 다중 지표 접근 방식은 비교적 견고한 거래 시스템을 형성합니다. 그러나 지속적인 최적화와 검증은 시장 적응력을위한 매개 변수 견고성에 중점을두고 모든 전략의 핵심입니다. 양자 거래는 반복 과정입니다.


//@version=3
strategy("Free Strategy #08 (Combo of #01 and #02) (ES / SPY)", overlay=true)

// Inputs
Quantity = input(1, minval=1, title="Quantity")
SmaPeriod01 = input(3, minval=1, title="SMA Period 01")
SmaPeriod02 = input(8, minval=1, title="SMA Period 02")
SmaPeriod03 = input(10, minval=1, title="SMA Period 03")
EmaPeriod01 = input(5, minval=1, title="EMA Period 01")
EmaPeriod02 = input(3, minval=1, title="EMA Period 02")
MaxProfitCloses = input(5, minval=1, title="Max Profit Close")
MaxBars = input(10, minval=1, title="Max Total Bars")

// Misc Variables
src = close
BarsSinceEntry = 0
MaxProfitCount = 0
Sma01 = sma(close, SmaPeriod01)
Sma02 = sma(close, SmaPeriod02)
Sma03 = sma(close, SmaPeriod03)
Ema01 = ema(close, EmaPeriod01)
Ema02 = ema(close, EmaPeriod02)
OHLC = (open + high + low + close) / 4.0

// Conditions
Cond00 = strategy.position_size == 0
Cond01 = close < Sma03
Cond02 = close <= Sma01
Cond03 = close[1] > Sma01[1]
Cond04 = open > Ema01
Cond05 = Sma02 < Sma02[1]
Entry01 = Cond00 and Cond01 and Cond02 and Cond03 and Cond04 and Cond05

Cond06 = close < Ema02
Cond07 = open > OHLC
Cond08 = volume <= volume[1]
Cond09 = (close < min(open[1], close[1]) or close > max(open[1], close[1]))
Entry02 = Cond00 and Cond06 and Cond07 and Cond08 and Cond09

// Update Exit Variables
BarsSinceEntry := Cond00 ? 0 : nz(BarsSinceEntry[1]) + 1
MaxProfitCount := Cond00 ? 0 : (close > strategy.position_avg_price and BarsSinceEntry > 1) ? nz(MaxProfitCount[1]) + 1 : nz(MaxProfitCount[1])

// Entries
strategy.entry(id="L1", long=true, qty=Quantity, when=(Entry01 or Entry02))
 
// Exits
strategy.close("L1", (BarsSinceEntry - 1 >= MaxBars or MaxProfitCount >= MaxProfitCloses))

더 많은