
이 전략은 평균선과 EMA를 활용하여 시간 프레임에 걸쳐 트렌드 거래를 수행하는 전략이다. 이 전략은 다양한 시기의 SMA, EMA 및 K선 엔티티를 결합하여 트렌드 방향을 판단하여 낮은 위험의 트렌드 추적을 수행한다.
이 전략은 주로 3주기의 다른 SMA 평균선을 비교하여 가격 움직임을 판단한다. 또한 EMA를 사용하여 실물 방향을 판단한다.
구체적으로, 전략은 3주기 SMA의 평균선을 사용한다. 3주기, 8주기, 10주기 SMA이다. 가격은 3개의 평균선 아래 있을 때 하향상태로 간주되며, 가격이 다시 평균선으로 올라갈 때, 구매 신호를 낸다.
또한, 전략은 5주기 EMA를 사용하여 K선 엔티티의 방향을 판단하여 구매할 때 엔티티가 상승하는 것을 보장합니다.
포지션 관리에서, 전략은 수익 횟수 또는 최대 포지션 주기 를 스톱 로스로 설정한다.
이 전략은 서로 다른 시간 주기의 평균선을 결합하여 트렌드에 대한 판단을 구현하고, 시장 소음을 효과적으로 필터링하여 중장선 트렌드를 추적할 수 있다. 전략 매개 변수는 최적화되어, 역사 재검토에서 좋은 성능을 나타낸다.
또한, 전략이 EMA의 판단을 포함하면, K 라인 엔티티를 아래로 구매하는 상황을 피할 수 있으며, 따라서 불필요한 슬라이드 포인트 손실을 줄일 수 있다.
전체적으로 이 전략은 안정적이고 신뢰할 수 있으며, 중·장기선 추적에 적합하다.
이 전략은 파라미터에 민감하며, 3개의 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))