다양한 기간의 이동 평균을 기반으로 한 크로스오버 전략


생성 날짜: 2023-12-08 12:20:42 마지막으로 수정됨: 2023-12-08 12:20:42
복사: 0 클릭수: 592
avatar of ChaoZhang ChaoZhang
1
집중하다
1621
수행원

다양한 기간의 이동 평균을 기반으로 한 크로스오버 전략

개요

이 전략은 두 개의 다른 기간의 이동 평균을 계산하고 그 교차점을 도식화하여 거래 신호를 발산합니다. 단기 이동 평균 위에 장기 이동 평균을 가로지르면 더 많은 것을하고, 단기 이동 평균 아래에 장기 이동 평균을 가로지르면 적어집니다.

전략 원칙

이 전략은 이동 평균의 장점을 기반으로 가격 서열의 무작위성을 제거하여 주요 트렌드를 추출할 수 있다. 이 전략은 7일선과 20일선을 사용하여 쌍용 이동 평균 시스템을 구축한다. 이 두 시기는 더 많이 사용되고 더 명확하다.

단기 이동 평균 위에 장기 이동 평균을 뚫을 때, 가격이 상승 추세에 들어간다는 것을 의미하며, 단기 이동 평균 아래에 장기 이동 평균을 뚫을 때, 가격이 하향 추세에 들어간다는 것을 의미한다. 이 원칙에 따라, 우리는 더 많이 사거나 더 적게 팔다.

구체적으로, 전략은 7일 간단한 이동 평균과 20일 간단한 이동 평균을 계산하여 두 평균이 교차할 때 트렌드 전환을 판단하고 거래 신호를 발산한다. 교차 유형을 구별하기 위해, 단기 라인을 장기 라인보다 더 큰 가격 상승 트렌드로 정의하고, 반대로 가격 하락 트렌드로 정의한다.

우위 분석

(1) 전략이 명확하고 간단하며, 이해하기 쉽고, 실행하기 쉽다.

(2) 이동 평균은 추세를 추적하는 지표로서 가격에 포함 된 일부 잡음을 효과적으로 필터링 할 수 있으며, 쌍 이동 평균 시스템을 사용하면 안정성을 더욱 향상시킬 수 있습니다.

(3) 매개 변수 구성은 다양한 시장 환경의 거래 요구 사항을 충족하기 위해 유연하고 주기적으로 조정할 수 있는 매개 변수 조합입니다.

(4) 두 개의 이동 평균 주기를 사용하여 명확한 거래 신호를 쉽게 판단할 수 있습니다.

(5) 시각적 보조 분석이 강력하고, 시각적 효과에 의해 직관적으로 추세, 중요한 지점 등을 판단한다.

(6) 전략 재검토 후 최적화 결과에 따라 매개 변수를 조정하여 전략 수익률을 높일 수 있다.

위험 분석

(1) 이중 이동 평균 전략은 시장의 변동에 민감하며, 불안정한 상황에서 자주 거래 손실이 발생할 수 있습니다.

(2) 평행선 교차에만 의존하는 것은 트렌드 전환 지점을 정확하게 판단할 수 없으며, 잘못된 신호를 유발할 수 있다.

(3) 규칙은 좀 더 딱딱하며, 갑작스러운 사건이 시장에 영향을 미치면, 전략이 조정되지 않으면 큰 손실이 발생할 수 있다.

(4) 변수가 잘못되면 잘못된 신호가 발생하거나 거래 기회를 놓치게 될 수 있으므로 신중한 테스트와 최적화가 필요합니다.

이러한 위험을 완화하기 위해, 적절하게 파라미터 집합을 조정할 수 있습니다. 다른 지표를 추가하여 보조하십시오. 손실을 제어하기 위해 스톱 손실 전략을 설정하십시오. 시장 환경에 따라 파라미터 또는 폐쇄 전략을 조정하십시오.

최적화 방향

(1) 다른 기술 지표와 결합하여 조합 전략을 형성하여 신호의 정확도를 향상시킬 수 있다. 예를 들어, 이동 평균의 교차와 동시에 거래량을 확대하여 거래량을 확대하여 Entry chance를 증가시킬 수 있다.

(2) 단편적 손실을 효과적으로 제어할 수 있는 스톱 로드 전략에 가입한다. 예를 들어, 가격이 이동 평균의 특정 범위를 돌파했을 때, 현재의 헤드 포지션을 탈퇴한다.

(3) 이동 평균을 최적화 하는 주기 변수 조합을 테스트한다. 다양한 빠른 속도 주기 매칭을 시도하여 최적의 변수 조합을 찾을 수 있다. 또한 지수 이동 평균, 가중 이동 평균 등 다른 이동 평균 지표를 테스트할 수 있다.

(4) 다양한 품종과 시장 환경에 따라 변수 조정. 변동성이 높은 품종은 이동 평균 주기를 단축하고 거래 횟수를 줄일 수 있습니다. 유행성이 강한 시장 환경은 두 평균 선의 시간 간격 차이를 증가시킬 수 있습니다.

요약하다

이동 평균 이중 교차 전략은 전체적으로 매우 전형적이고 기본적인 트렌드 추적 전략이다. 그것은 두 개의 다른 주기 이동 평균을 계산하고 그 교차 상황을 관찰함으로써 가격 경향의 변화를 판단한다. 단기 이동 평균을 넘어서거나 장기 이동 평균을 넘어서면 거래 신호가 발생한다. 이러한 간단한 거래 사유는 구현하기 쉬운, 매개 변수를 조정하는 유연하며, 양적 거래의 입문 수준의 전략이다. 그러나 시장 환경의 변동에 민감하고 신호가 정확하지 않을 수 있는 등의 몇 가지 결함이 있다.

전략 소스 코드
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Ma stratégie", overlay=true)

// Multi-timeframe and price input
pricetype = input(close, title="Price Source For The Moving Averages")
useCurrentRes = input(true, title="Use Current Timeframe As Resolution?")
resCustom = input(title="Use Different Timeframe? Then Uncheck The Box Above",  defval="W")
res = useCurrentRes ? timeframe.period : resCustom
price = request.security(syminfo.tickerid, res, pricetype)

// MA period input
shortperiod = input(7, title="Short Period Moving Average")
longperiod = input(20, title="Long Period Moving Average")



short = ema(price, shortperiod) 
long = ema(price, longperiod) 
   
// MA trend direction color
shortcolor = short > short[1] ? lime : short < short[1] ? red : blue
longcolor = long > long[1] ? lime : long < long[1] ? red : blue

// MA output
MA1 = plot(short, title="Short Period Moving Average", style=linebr, linewidth=2, color=shortcolor)
MA2 = plot(long, title="Long Period Moving Average", style=linebr, linewidth=4, color=longcolor)
fill(MA1, MA2, color=silver, transp=50)

// MA trend bar color
TrendingUp() => short > long 
TrendingDown() => short < long 
barcolor(TrendingUp() ? green : TrendingDown() ? red : blue)

// MA cross alert
MAcrossing = cross(short, long) ? short : na
plot(MAcrossing, style = cross, linewidth = 4,color=black)

// MA cross background color alert
Uptrend() => TrendingUp() and TrendingDown()[1]
Downtrend() => TrendingDown() and TrendingUp()[1]
bgcolor(Uptrend() ? green : Downtrend() ? red : na,transp=50)

// Buy and sell alert
Buy = Uptrend() and close > close[1]
Sell = Downtrend() and close < close[1]
plotshape(Buy, color=black, style=shape.arrowup, text="Buy", location=location.bottom)
plotshape(Sell, color=black, style=shape.arrowdown, text="Sell", location=location.top)



if (Buy)
    strategy.entry("My Long Entry Id", strategy.long)


if (Sell)
    strategy.entry("My Short Entry Id", strategy.short)