이 전략은 윌리엄스 지표의 교차 신호를 사용하고 이동 평균과 함께 필터링을 수행하여 보다 유연한 단선 거래 전략을 구현한다. 이 전략은 보다 명확한 과매매 과매매 상황을 포착할 수 있으며 이동 평균 필터링은 시장의 흔들림의 영향을 피하여 더 높은 안정성을 갖는다.
윌리엄스 지표 ((%R) 와 200주기 간단한 이동 평균을 계산한다.
윌리엄스 지표가 상향으로 50선을 돌파하여 설정된 마이너스를 달성하고, 마감 가격이 이동 평균보다 높을 때, 더 많은 일을하십시오.
윌리엄스 지표가 아래로 50 라인을 넘어설 때 설정된 마이너스를 달성하고, 마감 가격이 이동 평균보다 낮을 때, 공백을 다.
더 많은 것을 한 후, 종식 가격이 스톱포인트 (입시 가격과 스톱포인트) 또는 스톱포인트 (입시 가격과 스톱포인트) 에 도달하면 평점.
공백된 후, 종식 가격이 스톱포인트 ((입시 가격과 스톱포인트) 또는 스톱포인트 ((입시 가격과 스톱포인트) 에 도달하면 평점.
이 전략은 윌리엄스 지표의 오버 바이 오버 셀 특성을 최대한 활용하여 이동 평균의 추세 판단과 결합하여 거래 신호를 더 명확하고 신뢰할 수있게 만듭니다. 중지 중지 손실 전략은 또한 명확하고 간결하며 전체적으로 더 완벽한 단선 전략 시스템입니다.
윌리엄스 지표는 오버 바이와 오버 세일을 효과적으로 식별하고 신호가 명확합니다.
이동 평균 필터링은 추세에 대한 판단을 높이고, 흔들림의 영향을 피합니다.
지표 변수와 필터는 사용자 정의 가능하며, 유연하게 조정할 수 있다.
트렌드 트래킹 스톱로 수익의 대부분을 확보할 수 있다.
전략 신호 규칙은 간단하고 명확하며, 이해하기 쉬운 구현으로, 단선 거래에 적합하다.
다양한 품종에 적용 가능하며, 유연한 보편적
하지만, 이 지표는 지연되어 있고, 몇 가지 기회를 놓칠 수도 있습니다.
이동 평균은 필터로서도 뒤떨어진 문제점이 있다.
엄격한 과매매 판단은 일부 트렌드 기회를 놓칠 수 있습니다.
너무 작은 스톱 손실은 가격 변동에 의해 스톱 될 수 있습니다.
너무 큰 손실을 막는 것은 수익을 제한할 수 있습니다.
다른 시장 환경에 맞게 변수를 조정해야 합니다.
지표 변수를 최적화하여 전략 승률을 높여줍니다.
MACD, KDJ 등과 같은 다른 지표를 추가하여 필터링하십시오.
지수 이동 평균 같은 다른 종류의 이동 평균을 시도하십시오.
트렌드 판단을 높이고, 트렌드 방향으로만 거래한다.
동적 스톱, 축소 스톱과 같은 스톱 스톱 전략을 최적화하십시오.
포지션 관리 기능도 추가해 보세요.
기계학습을 통해 더 나은 변수 조합을 찾습니다.
이 전략은 윌리엄스 지표의 오버 바이 오버 셀 판단과 이동 평균의 트렌드 필터를 통합하여 간단한 실용적인 단선 전략을 형성한다. 그것은 명확한 거래 신호와 스톱 스로스 규칙을 가지고 있다. 매개 변수 최적화, 지표 최적화, 스로스 매니지먼트 등의 측면에서 개선하면 전략이 더 안정적으로 현실에 적합 할 수 있다. 이 전략은 구현 및 확장하기 쉽고, 단선 거래자에게 매우 적합하다.
/*backtest
start: 2023-08-19 00:00:00
end: 2023-09-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Williams %R Cross Strategy with MA Filter", overlay=true)
// User Inputs
wrLength = input(14, title="Williams %R Length")
crossPips = input(10, title="Cross Threshold (Pips)")
takeProfitPips = input(30, title="Take Profit (Pips)")
stopLossPips = input(20, title="Stop Loss (Pips)")
// Calculate Williams %R
wrHigh = ta.highest(high, wrLength)
wrLow = ta.lowest(low, wrLength)
wr = (wrHigh - close) / (wrHigh - wrLow) * -100
// Calculate 200-period Simple Moving Average
ma200 = ta.sma(close, 200)
// Entry Conditions
enterLong = ta.crossover(wr, -50 - crossPips) and close > ma200
enterShort = ta.crossunder(wr, -50 + crossPips) and close < ma200
// Exit Conditions
exitLong = close >= (strategy.position_avg_price + (takeProfitPips / syminfo.mintick)) or close <= (strategy.position_avg_price - (stopLossPips / syminfo.mintick))
exitShort = close <= (strategy.position_avg_price - (takeProfitPips / syminfo.mintick)) or close >= (strategy.position_avg_price + (stopLossPips / syminfo.mintick))
// Order Management
if enterLong
strategy.entry("Long", strategy.long)
if enterShort
strategy.entry("Short", strategy.short)
if exitLong
strategy.close("Long")
if exitShort
strategy.close("Short")