다중 이동 평균 쌍 거래 전략


생성 날짜: 2023-09-23 15:16:50 마지막으로 수정됨: 2023-09-23 15:16:50
복사: 0 클릭수: 671
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

개요

이 전략은 양평선 필터링과 가격 형태 판단의 생각을 결합하여 신호 품질을 향상시키기 위한 보다 포괄적인 입문 메커니즘을 형성한다. 전략은 동시에 수익 선택 제어와 최대 포지션 주 기간 제도를 추가하여 비교적 완벽한 위험 관리 메커니즘을 구현한다.

전략 원칙

이 전략은 주로 다음과 같은 지표와 거래 규칙을 포함합니다.

  1. 3 SMA 평균선: 큰 차원의 트렌드 방향을 판단한다.

  2. 2 EMA 평평선: 세부적인 방향에 대한 판단

  3. SAR 지표: 추세와 돌파구를 판단하는 보조

  4. K선 형태: 특정 K선 형태를 입력 신호 중 하나로 식별한다.

  5. 최대 이윤 평정 포지션 수: 한방 포지션 최대 이윤 수를 제한, 고정 이윤 .

  6. 최대 보유주기: 손실이 확대되지 않도록, 단독 손실을 제어한다.

이 전략은 여러 가지 기술 지표를 결합하여 복합적으로 판단하여 안정적인 입시 신호와 퇴출 메커니즘을 형성하고 수익을 높이는 동시에 위험을 통제하여 안정적인 거래를 달성합니다.

우위 분석

단일 지표 전략에 비해 이 전략은 다음과 같은 장점이 있습니다.

  1. 다중 지표 조합은 신호의 정확도를 향상시킵니다.

  2. K선 형태 인식은 출입 시간을 향상시킵니다.

  3. 이윤 평정 포지션 수를 제어하여 이윤 확립을 실현한다.

  4. 주간 보유 기간은 단편적 손실이 확대되는 것을 방지한다.

  5. SMA 평균은 큰 트렌드를 판단하고, 트렌드 따라하는 효과를 발휘한다.

  6. EMA는 일일 세부 사항을 수립하여 민감성을 높였습니다.

  7. SAR 지표는 돌파구 신뢰성을 판단하는 데 도움을 줍니다.

  8. 전체적인 위험과 이익의 균형이 잘 잡혀있으며, 잘 맞지 않는 편이다.

  9. 시장변경에 따라 조정할 수 있고, 안정적인 초과수익을 얻을 수 있다.

위험 분석

이 전략은 여러 장점이 있지만 다음과 같은 위험도 있습니다.

  1. 다중 지표 조합은 복잡성을 높이고, 실행에 옮기는 데 어려움이 있습니다.

  2. 변수 최적화 범위는 넓고, 최적화 위험도 존재한다.

  3. K선형 인식 효과에 의문, 잘못된 신호가 발생할 수 있다.

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