
모멘텀 평균 역부조 pullback 전략 (MOM) 은 이동 평균 근처에서 반전 작업을 수행하는 간단한 전략이다. 이 전략은 50 기 지수 이동 평균을 주요 트렌드 판단 지표로 사용하고, 형태학 침식 법칙과 결합하여 반전 기회를 찾는다. 이동 평균을 뚫은 후, 두 번째 또는 세 번째 K 선이 반전 될 때까지 기다립니다.
이 전략은 크게 두 가지 가설에 근거하고 있습니다.
50기 EMA는 시장의 경향 방향을 효과적으로 판단할 수 있다. 가격이 올라갈 때, 상향행동으로 간주하고, 내려갈 때, 공중행동으로 간주한다.
트렌드가 EMA를 돌파한 후, 종종 단기간의 조정 반전이 발생하며, 반전 K 선의 삼키는 형태적 특성을 활용하여, 반전이 끝날 때를 포착하여 역으로 조작할 수 있다.
구체적으로, 전략은 먼저 50기 EMA를 계산한 다음 가격이 이 EMA를 뚫었는지 판단한다. 만약 다목을 뚫었다면, 2-3개의 하향 K선, 만약 다음 K선이 다목을 삼킨다면, 그 K선 닫힐 때 더 한다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
운영 논리는 간단하고 명확하며, 이해하기 쉬운 구현, 초보자에게 적합하다.
이동 평균의 트렌드 판단과 K 선 모양의 특성을 최대한 활용하여 거래 신호를 더 효율적으로 만듭니다.
한 거래의 손실을 제어할 수 있는 스톱로스 시간 설정.
절차적 규칙은 명확하고, 주관적 판단의 영향을 피하고, 전략을 더 신뢰할 수 있게 한다.
이 전략에는 위험도 있습니다.
50일 EMA는 동향을 완전히 정확하게 판단할 수 없으며, 잘못된 판단이 있을 수 있다.
K선형 판단도 마찬가지로 잘못된 판단 확률이 있다.
스톱타임은 잘못 설정되어 손실을 증가시키거나 수익을 감소시킬 수 있습니다.
기계 거래에는 슬라이드 포인트, 串单 등의 문제가 있을 수 있으며, 이로 인해 수익에 영향을 미칠 수 있다.
대책:
이동 평균의 주기 변수를 최적화하여 더 적합한 값을 찾습니다.
다른 지표와 결합하여 조합 판단을 통해 신호의 신뢰도를 높인다.
정지 시간 파라미터를 테스트하고 최적화하여 최적의 파라미터를 찾습니다.
전략에 슬라이드 컨트롤을 설정하여 심각한 슬라이드 손실을 방지하십시오.
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
이동 평균 주기 변수를 최적화하여 최적의 변수를 찾습니다.
다른 유형의 이동 평균을 대체하는 것, 가중 이동 평균 등.
음원, 파도 등의 필터를 증가시켜 조정에 오류가 발생하지 않도록 한다.
스토카스틱스, MACD 등 다른 지표와 결합하여 조합 전략을 수행하여 신호 품질을 향상시킵니다.
다양한 품종의 특성과 거래시기에 따라 최적의 중지 시간을 설정하십시오.
수익이 일정 기준에 도달했을 때 적극적으로 중단할 수 있는 중단 전략을 추가합니다.
역동 평균 구제 회수 전략은 간단하고 실용적인 단선 거래 전략으로, 주로 이동 평균을 사용하여 추세를 판단하고, K선 삼킨을 사용하여 반전 기회를 발견하여 단선 작업을 수행한다. 이 전략은 동작의 명확성과 구현의 간편성이 있지만, 몇 가지 변수 최적화 공간도 있습니다. 약간의 테스트와 조정을 통해 이 전략은 초보자 양적 거래의 좋은 출발점이 될 수 있습니다.
/*backtest
start: 2023-02-11 00:00:00
end: 2024-02-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("LinoR EMA Pullback Strategy", shorttitle="EPS", overlay=true)
// Define EMA period
emaPeriod = input(50, title="EMA Period")
// Calculate 50 EMA
ema50 = ta.ema(close, emaPeriod)
// Calculate engulfing conditions
engulfingBullish = close[1] < open[1] and close > open and close > close[1] and open < open[1]
engulfingBearish = close[1] > open[1] and open > close and open > open[1] and close < close[1]
// Define a 1-minute timer
var timer = 0
if bar_index > 0
timer := timer[1] + 1
// Long condition
longCondition = ta.crossover(close, ema50) and engulfingBullish
if longCondition
strategy.entry("Buy", strategy.long)
// Short condition
shortCondition = ta.crossunder(close, ema50) and engulfingBearish
if shortCondition
strategy.entry("Sell", strategy.short)
// Exit after 1 minute
if timer >= 1
strategy.close("Exit")
plotshape(series=longCondition, title="Long Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=shortCondition, title="Short Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)