
이 전략은 이동 평균을 기반으로 한 단기 추적 전략이다. 그것은 장기 및 단기 이동 평균의 골드 크로스를 구매 신호로, 데드 포크를 판매 신호로, 그리고 RSI 지표 필터링 가짜 신호와 결합한다. 이것은 전형적인 단선 거래 전략이며, 높은 주파수 인더그레이드 거래에 적합하다.
이 전략은 200기 장기 간 간단한 이동 평균 malong과 21기 단기 지수 이동 평균 mashort을 사용한다. 가격이 장기간 평균을 통과하고 RSI 지표가 20보다 작으면 구매 신호가 발생한다. 가격이 단기 평균을 통과하고 RSI 지표가 80보다 크면 판매 신호가 발생한다. 가짜 신호를 필터링하기 위해, 그것은 또한 추가 조건을 설정한다: 가격이 단기 평균보다 낮고 이전 K 선의 최저 가격일 때만 다단위 포지션을 수행한다; 단기 평균보다 높고 이전 K 선의 최고 가격일 때만 평평 포지션을 수행한다.
이 전략은 동시에 1%의 스톱로스와 1%의 스톱을 설정한다. 즉, 다중 포지션의 스톱로스는 구매 가격의 99%이고, 스톱로스는 구매 가격의 101%이다. 상장 포지션은 반대로, 각 거래에 대한 엄격한 위험 통제가 있음을 보장한다.
이 전략의 가장 큰 장점은 단기 추적 특성에 있습니다. 이동 평균의 금/죽은 포크 조합은 단기 트렌드 전환을 식별하는 데 효과적인 기술적 지표로 입증되었습니다. RSI 극한 필터링과 결합하여 단기 반전 기회를 효과적으로 식별하고 적시에 위치를 조정할 수 있습니다. 이 고주파 거래 전략은 단기 가격 변동을 충분히 포착하여 수익을 창출 할 수 있습니다.
또 다른 장점은 이 전략이 엄격한 손실 메커니즘을 설정한다는 것입니다. 오버 또는 포이드가 무엇이든, 손실 지점은 구매 / 판매 가격의 1% 이하로 설정되어 손실이 확대되는 것을 막기 위해 신속하게 중단 할 수 있습니다.
이 전략의 가장 큰 위험은 과도한 거래가 발생하기 쉽다는 것입니다. 가격이 평균선 근처에서 변동할 때 빈번하게 포지션을 열고, 포지션 보유 비용과 수수료의 통제를 방해합니다. 이 때 지표 매개 변수를 적절히 완화하고, 무의미한 거래를 줄이는 것이 필요합니다.
또 다른 위험은 이동 평균이 잘못된 신호를 발산하기 쉽다는 것입니다. 가격이 급격하게 변동할 때 실제 추세는 변하지 않지만 이동 평균은 잘못된 신호를 발산할 수 있습니다. 이 경우 RSI 극치 필터링에 의존하여 꼭대기에서 하향을 피해야합니다. RSI 파라미터를 테스트하여 필터링을 더 엄격하게 할 수 있습니다.
이 전략은 다음의 몇 가지 측면에서 더 개선될 수 있습니다.
KD, MACD 등과 같은 다른 지표 필터를 추가하여 더 많은 지표와 함께 시장의 실제 움직임을 판단하여 잘못된 신호를 피하십시오.
이동 평균 변수를 최적화하고, 다른 주기 변수의 전략 효과에 대한 영향을 테스트한다.
스톱패드 파라미터를 최적화하고, 스톱패드 범위를 적절히 확장하여 스톱패드가 유발되는 확률을 줄인다.
거래 시간 필터를 추가하고, 거래가 활발한 시간에만 포지션을 열고, 밤새의 위험을 피하십시오.
일일 순환 및 공백 기간 필터링 논리를 추가하고, 불필요한 거래 횟수를 줄이고, 비용 지출을 줄입니다.
이 전략은 전반적으로 전형적인 단기 추적 전략이다. 그것은 이동 평균의 금/죽은 포크 조합을 사용하여 단기 경향을 판단하고, RSI 지표가 위조 신호를 필터링한다. 이 전략은 가격의 단기 변동을 충분히 포착 할 수 있는 높은 빈도의 일일 거래의 장점이 있다. 그러나 또한 특정 위조 신호 위험과 과도한 거래의 위험이 있다.
/*backtest
start: 2024-01-27 00:00:00
end: 2024-02-26 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("simple pull back", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// Input values
malongperiod = input.int(200, "Long Term SMA Period", group="Parameters")
mashortperiod = input.int(21, "Short Term SMA Period", group="Parameters")
stoprate = 1 // Set the stop loss percentage to 1%
profit = input.int(1, "Take Profit Percentage", group="Parameters") // Change the take profit percentage to 1%
startday = input(title="Start Trade Day", defval=timestamp("01 Jan 2000 13:30 +0000"), group="Period")
endday = input(title="End Trade Day", defval=timestamp("1 Jan 2099 19:30 +0000"), group="Period")
// Plotting indicators
malong = ta.sma(close, malongperiod)
mashort = ta.ema(close, mashortperiod)
plot(malong, color=color.aqua, linewidth=2)
plot(mashort, color=color.yellow, linewidth=2)
// Date range
datefilter = true
// Long entry condition
if close > malong and close < mashort and strategy.position_size == 0 and datefilter and ta.rsi(close, 3) < 20
strategy.entry("Long", strategy.long)
// Short entry condition
if close < malong and close > mashort and strategy.position_size == 0 and datefilter and ta.rsi(close, 3) > 80
strategy.entry("Short", strategy.short)
// Exit conditions with 1% stop loss and 1% take profit
strategy.exit("Cut", "Long", stop=(1 - 0.01 * stoprate) * strategy.position_avg_price, limit=(1 + 0.01 * profit) * strategy.position_avg_price)
if close > mashort and close < low[1] and strategy.position_size > 0
strategy.close("Long")
if close < mashort and close > high[1] and strategy.position_size < 0
strategy.close("Short")