이중 이동 평균 크로스오버 전략

저자:차오장, 날짜: 2023-10-17 13:54:05
태그:

img

전반적인 설명

이 전략은 서로 다른 시간 프레임에 있는 두 이동 평균의 차이에 기초하여 거래 신호를 생성한다. 더 빠른 SMA와 더 느린 SMA를 계산하고, 빠른 SMA가 아래로부터 느린 SMA를 넘을 때 구매 신호를 생성하고, 빠른 SMA가 위에서 느린 SMA를 넘을 때 판매 신호를 생성한다.

어떻게 작동 합니까?

이 전략의 핵심 논리는 두 개의 이동 평균, SMA (len1) 및 SMA (len2) 를 계산하고 그 차이를 di. 여기 len1은 더 빠른 MA의 기간을 나타내고 len2는 더 느린 MA를 나타냅니다. 더 빠른 MA는 가격 변화에 더 빠르게 반응하고 느린 MA는 장기 트렌드를 더 잘 반영합니다.

더 빠른 MA가 아래에서 느린 MA보다 높을 때, 단기 가격이 장기 트렌드보다 상승하기 시작했으며, 따라서 긴 엔트리가 가능합니다. 더 빠른 MA가 위에서 느린 MA보다 낮을 때, 단기 가격이 트렌드 아래로 떨어지기 시작했으며, 짧은 포지션을 입력 할 수 있음을 나타냅니다.

잘못된 신호를 필터링하기 위해 전략은 또한 더 빠른 MA와 가격 중간 지점 사이의 평평한 차이인 거래 신호 라인으로 out3를 사용합니다. out3가 dif을 넘을 때만 거래가 시작됩니다.

특히, 긴 변수는 out3이 dif보다 높을 때 긍정적 인 값을 유지하며 구매 신호를 제공합니다. 짧은 변수는 out3이 dif보다 낮을 때 부정적인 값을 유지하여 판매 신호를 생성합니다. strategy.entry는 긴 신호가 발생하면 긴 항목을 입력하고 strategy.close는 짧은 신호가 나타나면 긴 항목을 닫습니다.

이점 분석

이것은 트렌드를 추적하는 매우 간단하고 직관적인 전략입니다. 트렌드 반전 지점을 식별하기 위해 서로 다른 기간의 두 MAs의 크로스오버를 사용합니다. 단일 MA 시스템보다 더 신뢰할 수 있습니다. 거래 신호 라인의 필터는 또한 불안정한 시장에서 잘못된 신호를 어느 정도 피하는 데 도움이됩니다.

스톱 러스 (stop loss) 와 비교할 때, 트렌드를 따라가는 사고방식을 채택하여 더 긴 트렌드 동안 수익을 극대화 할 수 있습니다. 동시에 트렌드가 역전되는 시간에 포지션을 종료하여 손실을 제어합니다.

이 전략은 몇 가지 매개 변수를 가지고 있으며 이해하기 쉽고 조정하기 쉽기 때문에 초보자의 알고 거래 전략으로 적합합니다.

위험 과 개선

이 전략의 가장 큰 위험은 잘못된 선택의 MA 기간으로 인해 나쁜 신호가 발생합니다. len1이 너무 길다면 초기 트렌드 움직임을 놓칠 수 있습니다. 너무 짧으면 윙사우가 증가합니다. len2이 너무 길다면 포지션 조정이 지연 될 것입니다. 너무 짧으면 시장 소음으로 방해 될 수 있습니다.

매개 변수는 최적화 될 수 있습니다. 가장 좋은 조합을 찾기 위해 다른 len1 및 len2 값을 시도하여 최적화 할 수 있습니다. 적응 MAs는 또한 주기적으로 변경하도록 테스트 할 수 있습니다. 필터는 또한 잘못된 신호를 더 많이 줄이기 위해 개선 될 수 있습니다.

트렌드를 따르는 전략은 스톱 로스 또는 포지션 사이징을 통해 단일 거래에서 손실을 제어해야합니다.

결론

이중 MA 크로스오버 전략은 대표적인 추세를 따르는 대표적인 트렌드이다. 간단한 이중 MA 크로스오버 시스템은 안정적인 신호를 제공하며 필터는 잡음을 피하는 데 도움이됩니다. 최적화된 MA 기간으로 좋은 성능을 얻을 수 있습니다. 전략은 배우기 시작하는 알고 거래 전략으로 잘 사용됩니다.


/*backtest
start: 2022-10-10 00:00:00
end: 2023-10-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//by afrazium
//@version=3
strategy(title="SMA Diff strat", shorttitle="SMAD STR", overlay=false, initial_capital=1, precision=8, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, calc_on_order_fills= false, calc_on_every_tick=false, pyramiding=0)
len1 = input(50, minval=1, title="Length1"), len2 = input(100, minval=1, title="Length2"), smo = input(1, minval=1, title="Smoothing")
src = input(ohlc4, title="Source")

mid = src
expr1 = sma(src, len1), expr2 = sma(src, len2)
dif = (expr1 - expr2), out1 = (mid - expr1), out2 = (mid - expr2), out3 = sma(out1, smo)

long = crossover(out3, dif) ? out3 : na, short = crossunder(out3, dif) ? out3 : na

plot(out3, color=black, linewidth=2), hline(0)
clr = out2 >= out1 ? lime : red, plot(dif, color=clr, linewidth=2)
plot(long, title = 'Crossover', color = green, style = circles, linewidth=4), plot(short, title = 'Crossunder', color = red, style = circles, linewidth=4)

strategy.entry("buy", strategy.long, when=crossover(out1, dif))
strategy.close("buy", when=crossunder(out1, dif))

//plot(out2, color=blue, linewidth=2)
//A = plot(mid/10, color=red, linewidth=1, transp=100), B = plot(mid/20, color=red, linewidth=1, transp=100)
//C = plot(-mid/10, color=green, linewidth=1, transp=100), D = plot(-mid/20, color=green, linewidth=1, transp=100)
//fill(A, B, color=red), fill(C, D, color=green)



더 많은