
이동 평균 전환점 교차 거래 전략은 고전적인 기술 지표 전략이다. 이 전략의 핵심 아이디어는 서로 다른 주기의 이동 평균을 결합하여 매매 신호를 생성하고, 이동 평균 전환점을 활용하여 거래를 더 최적화 exit. 이 전략은 다양한 시간 주기와 품종에 적합하며, 안정적인 수익을 얻을 수 있다.
이 전략은 주로 두 개의 이동 평균을 사용하며, 짧은 주기 중 하나는 빠른 라인이고, 다른 긴 주기 중 하나는 느린 라인이다. 빠른 라인이 하향에서 느린 라인을 돌파 할 때 구매 신호를 생성하고, 빠른 라인이 상향에서 하향으로 느린 라인을 돌파 할 때 판매 신호를 생성한다. 이것은 고전적인 이동 평균 크로스 전략의 거래 신호 생성 메커니즘이다.
더 나아가, 이 전략은 이동 평균의 전환점을 활용하여 거래를 종료한다. 빠른 선이 상승에서 하락으로 전환할 때, 다단계는 퇴출한다. 빠른 선이 하락에서 상승으로 전환할 때, 빈 단체는 퇴출한다. 이동 평균의 전환점은 시장의 단기 반전 시점을 포착할 수 있으며, 이는 전략에 적시에 손실을 중지하거나 중지하여 전체 수익률을 높이는 데 도움이 된다.
이동 평균 전환점 교차 거래 전략에는 다음과 같은 장점이 있습니다.
동작이 간단하고 구현하기 쉽다. 이 전략은 단지 두 가지 지표: 이동 평균과 ROC 지표만을 사용한다. 코드 구현은 복잡하지 않다.
연속적인 손실에 대한 저항력이 강하다. 이동 평균은 그 자체로 약간의 지연과 평평한 가격 경향의 특징을 가지고 있으며, 이는 약간의 잡음을 필터링하여 흔들리는 경향에서 너무 많은 무효 거래가 발생하지 않도록합니다.
일방적 손실을 효과적으로 제어할 수 있다. 이동 평균 전환점을 활용하여 적당히 손실을 중지하여 일방적으로 큰 손실을 줄일 수 있다.
적용 범위는 넓다. 이 전략의 원리는 간단하며, 다양한 품종과 다른 거래 시간 프레임, 예를 들어 일선, 시간선 등에 적용할 수 있다.
이윤 안정성. 시장의 핫포드를 쫓는 전략에 비해 이 전략은 위험 통제를 중시하고, 초고수익을 추구하지 않지만, 안정적인 긍정적인 이윤을 얻을 수 있다.
이동 평균 전환점 크로스 트레이딩 전략에는 다음과 같은 몇 가지 측면에 초점을 맞추는 몇 가지 위험이 있습니다.
이동 평균의 지연성. 빠른 시기가 오면, 이동 평균의 교차 신호는 약간의 지연을 가지며, 최고의 진입 시기를 놓칠 수 있다.
빈 포지션 시간이 길다. 이 전략은 출전 비교적 시기적절하지만 출전 신호는 느리다. 이것은 때때로 과도한 빈 포지션 시간이 존재하게 한다. 빈 포지션 기간 동안 특정 시장을 수익으로 얻는 기회를 놓치게 된다.
변수 최적화는 어려워진다. 이동 평균 길이, ROC 주기 등의 변수 선택은 전략 성능에 큰 영향을 미칩니다. 그러나 변수 최적화는 많은 역사적 데이터를 재검토해야 하며, 최적화는 더 어려워진다.
큰 흔들림 상황에서는 효과가 좋지 않다. 큰 흔들림 상황에서는 이동 평균이 여러 번 무효 교차를 일으켜 전략의 성능이 영향을 받는다.
이 거래 전략은 다음과 같은 부분에서 더욱 최적화될 수 있습니다.
트렌드 파동 지표와 결합. ADX, ATR 등의 지표가 추가되어 트렌드 상태를 판단한다. 명확한 트렌드가 없을 때 경미를 통해 전략을 종료하여 무효 거래를 피한다.
다중 시간 프레임 결합. 더 높은 시간 프레임에서 주 트렌드 방향을 판단하여 역동적인 거래를 피하십시오.
매개 변수 적응 최적화. 이동 평균 길이와 같은 매개 변수가 실시간 시장의 변동 정도에 따라 적응 조정할 수 있도록 하여 매개 변수 강도를 높인다.
모형인식 소개. MA 교차점에서 가짜 신호를 필터링하기 위해 패턴을 식별한다.
이동 평균 전환점 교차 거래 전략은 전반적으로 위험과 수익의 균형을 이루는 전략이다. 이 전략은 구현하기 쉬운, 연속 손실 방지, 수익 안정성 등의 장점이 있으며, 이동 평균 지연성, 공백 기간이 너무 길다는 문제도 있다. 변수 최적화, 트렌드 판단, 패턴 식별 등의 수단을 도입함으로써 이 전략의 효과를 더욱 향상시킬 수 있다.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
//study(title="MA Crossover Strategy", overlay = true)
strategy("MA Crossover Strategy with MA Turning Point Exits", overlay=true)
src = input(close, title="Source")
price = request.security(syminfo.tickerid, timeframe.period, src)
ma1 = input(25, title="1st MA Length")
type1 = input("SMA", "1st MA Type", options=["SMA", "EMA"])
ma2 = input(50, title="2nd MA Length")
type2 = input("SMA", "2nd MA Type", options=["SMA", "EMA"])
price1 = if (type1 == "SMA")
sma(price, ma1)
else
ema(price, ma1)
price2 = if (type2 == "SMA")
sma(price, ma2)
else
ema(price, ma2)
//plot(series=price, style=line, title="Price", color=black, linewidth=1, transp=0)
plot(series=price1, style=line, title="1st MA", color=blue, linewidth=2, transp=0)
plot(series=price2, style=line, title="2nd MA", color=green, linewidth=2, transp=0)
longCondition = crossover(price1, price2)
if (longCondition)
strategy.entry("Long", strategy.long)
shortCondition = crossunder(price1, price2)
if (shortCondition)
strategy.entry("Short", strategy.short)
lookback1 = input(1, "Lookback 1")
roc1 = roc(price1, lookback1)
ma1up = false
ma1down = false
ma2up = false
ma2down = false
ma1up := nz(ma1up[1])
ma1down := nz(ma1down[1])
ma2up := nz(ma2up[1])
ma2down := nz(ma2down[1])
trendStrength1 = input(2, title="Minimum slope magnitude * 100", type=float) * 0.01
if crossover(roc1, trendStrength1)
ma1up := true
ma1down := false
if crossunder(roc1, -trendStrength1)
ma1up := false
ma1down := true
shortexitCondition = ma1up and ma1down[1]
if (shortexitCondition)
strategy.close("Short")
longexitCondition = ma1down and ma1up[1]
if (longexitCondition)
strategy.close("Long")