
이 전략은 래리 윌리엄스가 그의 책장 장기 비밀 단기 거래 에서 설명한 전략을 채택하고 있으며, 이 전략은 두 개의 3 시 이동 평균을 사용하며, 하나는 고점을 나타내고, 다른 하나는 낮은 점을 나타냅니다. 가격이 3 시 낮은 이동 평균보다 낮을 때, 우리는 긴 포지션 신호를 가지고 있습니다.
이 전략의 핵심 논리는 높은 낮은 점의 3단계 이동 평균을 계산하는 것이다. 구체적으로, 그것은 ta.ema 함수를 사용하여 최근 3바의 높은 점과 낮은 점의 지수 이동 평균을 계산하여 역동적인 지지와 저항의 지점을 생성한다. 가격이 낮은 지점의 평균선을 넘어섰을 때, 현재 하향상태에 있다는 것을 나타냅니다. 그래서 우리는 더 많은 것을 할 수 있습니다. 가격이 높은 지점의 평균선을 넘어 다시 올라갔을 때, 상승 추세가 끝났다는 것을 나타냅니다.
이 전략의 가장 큰 장점은 그것의 단순성과 동적성이다. 전통적인 일정 주기 수거의 높고 낮은 점 평균선에 비해, 이 전략은 연속적으로 계산되는 단기 이동 평균을 채택하고, 가격 변화에 더 민감하고 적시에 포착할 수 있다. 이것은 시장에 진입하고 진출하기 위해 매매 지점을 신속하게 식별할 수 있게 해준다. 또한, 계산량이 작다는 것은 거래 지연을 줄이는 데 도움이 되는 또 다른 장점이다.
이 전략의 주요 위험은 주요 뉴스 사건과 같은 급격한 사건에 대한 반응이 느린다는 것입니다. 이동 평균 주기가 짧기 때문에 가격의 급격한 변동이 발생하면 평균선의 위치를 조정하는 데 시간이 걸립니다. 이것은 손실이나 놓친 기회를 초래할 수 있습니다. 또한 너무 민감한 것은 잘못된 거래로 이어질 수 있습니다. 이러한 위험을 줄이기 위해 이동 평균의 주기를 적절히 연장하거나 잘못된 신호를 방지하기 위해 필터링 조건을 추가 할 수 있습니다.
이 전략에는 여전히 많은 최적화 공간이 있습니다. 첫째, 우리는 다른 지표와 같은 흔들림 지표에 필터링을 결합하여 신호를 더 신뢰할 수 있습니다. 둘째, 우리는 또한 위험을 제어하기 위해 스톱 로직을 추가 할 수 있습니다. 둘째, 우리는 또한 시장 상태의 동성에 따라 이동 평균 변수를 조정하여 트렌드 시장에서 주기를 연장하고, 흔들림 시장에서 주기를 단축 할 수 있습니다.
이 전략은 전체적으로 매우 간단하고 실용적이며, 높은 낮은 지점의 단기 평균선으로 트렌드에 대한 판단을 구현한다. 이 전략의 장점은 동적성이 강하고, 계산량이 작고, 실시간성이 높으며, 빈번한 거래에 적합하다. 그러나 급격한 사건에 대한 반응 민감성이 낮고 신호 오류율이 높은 문제도 있다. 이 문제들은 개선 및 최적화 방향이 있으며, 매개 변수 조정, 필터 조건 및 패턴 식별 등의 수단으로 이 전략의 효과는 더욱 향상될 수 있다.
/*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")