동적 이동 평균 추적 전략

저자:차오장, 날짜: 2023-12-04 15:38:09
태그:

img

전반적인 설명

이 전략은 래리 윌리엄스가 그의 책?? 단기 거래의 장기간 비밀?? 에서 설명한 접근 방식을 사용하며, 이는 3 기간 이동 평균을 두 개, 하나는 최고를, 다른 하나는 하락을 나타냅니다. 가격이 3 기간 하락 EMA 이하로 떨어지면 긴 신호가 있습니다. 가격이 3 기간 하락 EMA 이상으로 닫을 때 거래는 종료됩니다.

전략 논리

이 전략의 핵심 논리는 높은 가격과 낮은 가격의 3 기간 이동 평균을 계산하는 것입니다. 구체적으로, 그것은 가장 최근의 3 바에 대한 높은 가격과 낮은 가격의 기하급수적인 이동 평균을 계산하기 위해 ta.ema 함수를 사용하여 동적 지원 및 저항 수준을 생성합니다. 가격이 EMA의 최저 수준 아래로 넘어지면 하락 추세를 나타냅니다. 따라서 우리는 긴 거리를 갈 수 있습니다. 가격이 EMA의 최저 수준 이상으로 다시 상승하면 상승 추세가 끝났고 우리가 위치를 닫아야한다는 것을 나타냅니다. 이러한 방식으로 전략은 동적으로 가격 변화를 추적하고 낮은 구매 및 높은 판매를 달성 할 수 있습니다.

이점 분석

이 전략의 가장 큰 장점은 단순함과 역동성이다. 고정 기간의 최고/하위 이동 평균을 사용하는 것과 비교하면 이 전략은 지속적인 단기 이동 평균을 사용하며, 이는 가격 변화를 보다 민감하고 적시에 파악할 수 있다. 이는 시장에 진입하고 빠져나가는 거래 기회를 빠르게 식별할 수 있게 한다. 또한, 낮은 컴퓨팅 부하는 거래 지연을 줄이는 또 다른 장점이다.

위험 과 해결책

이 전략의 주요 위험은 중요한 뉴스와 같은 갑작스러운 사건에 더 느리게 반응한다는 것입니다. 이동 평균 기간이 매우 짧기 때문에 급격한 가격 상승이있을 때 이동 평균 수준을 조정하는 데 시간이 걸립니다. 이것은 손실이나 놓친 기회로 이어질 수 있습니다. 또한 과민감각은 잘못된 거래를 유발할 수 있습니다. 이러한 위험을 완화하기 위해 이동 평균 기간을 적절히 증가하거나 잘못된 신호를 피하기 위해 필터를 추가 할 수 있습니다.

최적화 방향

이 전략을 최적화하는 데는 여전히 많은 여지가 있습니다. 첫째, 시그널을 필터링하기 위해 오시레이터를 통합 할 수 있습니다. 둘째, 스톱 로스 로직은 위험을 제어하는 데 추가 될 수 있습니다. 또한, 우리는 트렌딩에서 더 긴 기간과 범위 시장에서 짧은 기간을 사용하여 시장 상태에 따라 움직이는 평균 매개 변수를 동적으로 조정할 수 있습니다. 또한, 멀티 타임프레임 분석, 머신 러닝과 함께 패턴 인식 등은 전략 성능을 향상시키는 데 도움이 될 수 있습니다.

결론

요약하자면, 이것은 매우 간단하고 실용적인 전략이며, 단기 높은/저하 이동 평균을 사용하여 트렌드를 식별합니다. 그것의 장점은 강력한 역동성, 낮은 계산, 그리고 적극적인 거래에 적합한 높은 반응성입니다. 그러나 극단적인 이벤트와 더 높은 잘못된 신호 위험에 대응하는 데에도 결함이 있습니다. 파라미터 튜닝, 필터 추가 및 패턴 인식 기술을 통해 이러한 문제를 해결하는 방향이 있습니다. 전략의 효율성을 더 높이기 위해.


/*backtest
start: 2023-11-26 00:00:00
end: 2023-12-03 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(
     "Larry Williams 3 Period EMAs strategy",
     overlay=true,
     calc_on_every_tick=true,
     currency=currency.USD
     )

// Time range for backtesting
startDate = input.int(title="Start Date", defval=1, minval=1, maxval=31)
startMonth = input.int(title="Start Month", defval=1, minval=1, maxval=12)
startYear = input.int(title="Start Year", defval=2018, minval=1800, maxval=2100)

endDate = input.int(title="End Date", defval=31, minval=1, maxval=31)
endMonth = input.int(title="End Month", defval=12, minval=1, maxval=12)
endYear = input.int(title="End Year", defval=2041, minval=1800, maxval=2100)

inDateRange = (time >= timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0)) and
     (time < timestamp(syminfo.timezone, endYear, endMonth, endDate, 0, 0))

// EMA
period = 3

emaH = ta.ema(high, period)
emaL = ta.ema(low, period)

// PLOT:
// Draw the EMA lines on the chart
plot(series=emaH, color=color.green, linewidth=2)
plot(series=emaL, color=color.red, linewidth=2)

// Conditions
if(inDateRange and close < emaL)
    strategy.entry("Long", strategy.long, comment="Long")
if(close > emaH)
    strategy.close("Long", comment="Close Long")

// Uncomment to enable short entries
//if(inDateRange and close > emaH)                                    
//    strategy.entry("Short", strategy.short, comment="Short")    
//if(close < emaL)
//    strategy.close("Short", comment="Close Short")

더 많은