평행선과 EMA를 기반으로 한 시간 프레임 트렌드 전략

저자:차오장, 날짜: 2024-02-21 15:59:43
태그:

基于均线和EMA的跨时间框架趋势策略

개요

이 전략은 평균선과 EMA를 활용하여 시간 프레임에 걸쳐 트렌드 거래를 실현하는 전략이다. 전략은 다양한 주기의 SMA, EMA 및 K선 엔터테인먼트가 트렌드 방향을 판단하는 것을 결합하여 낮은 위험 트렌드 추적을 달성한다.

전략적 원칙

이 전략은 주로 세 주기의 다른 SMA의 평균 라인을 비교하여 가격 움직임을 판단합니다. 또한 EMA를 사용하여 실체의 방향을 판단하는 데 도움이 됩니다.

구체적으로, 전략은 3주기, 8주기 및 10주기 SMA의 3주기 평균 라인을 사용한다. 가격이 3주기 평균 라인 아래로 내려가는 것으로 간주되고, 가격이 평균 라인에 다시 올라갈 때 구매 신호를 발송한다.

또한, 전략은 5주기 EMA를 사용하여 K 라인 엔터테인먼트의 방향을 결정하는 데 도움을 주며, 구매 시 엔터테인먼트가 상승하는 것을 보장합니다.

보유 관리에서, 전략은 수익률 또는 최대 보유 주기를 중지로 설정하는 방법이다.

장점 분석

이 전략은 다른 시간 주기들의 평균선을 결합하여 추세에 대한 판단을 구현하여 시장 소음을 효과적으로 필터링하여 중장선 추세를 추적할 수 있다. 전략 매개 변수는 최적화되어 역사 재검토에서 잘 나타난다.

또한, 전략은 EMA 판단에 참여하여 K 라인 엔터테인먼트의 하향 상황을 피할 수 있으며, 이로 인해 불필요한 슬라이드 포인트 손실을 줄일 수 있습니다.

전체적으로, 이 전략은 안정적이고 안정적이며 중장선 추적에 적합합니다.

위험과 대책

  • 이 전략은 세 개의 SMA 주기 또는 EMA 주기의 부적절한 설정으로 거래 신호 품질이 떨어질 수 있습니다.

  • 전략은 큰 폭상이나 구멍을 고려하지 않는다. 중요한 소식이 발생하면 가격이 크게 폭상할 경우 약간의 손실이 발생할 수 있다. 이 위험을 회피하기 위해 가격 스톱 손실을 설정할 수 있다.

최적화 방향

  • 더 많은 주기 매개 변수를 추가하여 여러 시간 프레임을 형성하는 EMA 또는 SMA 비교를 고려하여 전략적 추세 판단을 더 정확하게 할 수 있습니다.

  • 어떤 정도의 가격 스톱 손실 설정을 테스트 할 수 있으며, 수익을 보장하는 전제로 극단적인 시장의 손실을 줄일 수 있습니다.

  • 기계 학습을 도입하여 매개 변수를 동적으로 최적화하여 전략 매개 변수를 실시간 시장 상황에 따라 조정할 수 있도록 시도할 수 있다.

요약

이 전략은 전체적으로 안정적이고 신뢰성 있고, 평선 비교를 이용하여 트렌드 방향을 판단하고, EMA 필터링 신호를 보완한다. 파라미터 최적화와 풍력 조절 설정을 통해 전략 승률과 수익률을 더욱 향상시킬 수 있다. 추가 연구와 응용에 가치가 있다.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Free Strategy #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")
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)

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

// 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=(Cond00 and Cond01 and Cond02 and Cond03 and Cond04 and Cond05))
 
// Exits
strategy.close("L1", (BarsSinceEntry - 1 >= MaxBars or MaxProfitCount >= MaxProfitCloses))

더 많은 내용