이동 평균 교차 거래 전략


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

이동 평균 교차 거래 전략

개요

이동평균선 교차 거래 전략은 간단한 효과적인 양적 거래 전략이다. 이 전략은 지수 이동평균선 ((EMA) 과 평평선 교차 신호를 사용하여 가격 움직임을 식별하고 구매와 판매의 시간을 결정한다. 다른 전략보다 더 복잡한 전략에 비해 더 간단하고 사용하기 쉽고 이해하기 쉽고 실행된다.

전략 원칙

이 전략의 핵심은 두 가지 다른 파라미터의 EMA를 사용하는 것입니다. EMA1은 25일, EMA2는 100일로 설정됩니다. 단기 EMA가 아래에서 긴 EMA를 뚫을 때 구매 신호가 됩니다. 단기 EMA가 위에서 아래에서 긴 EMA를 뚫을 때 판매 신호가 됩니다.

오류 신호를 필터링하기 위해, 전략은 또한 몇 가지 추가 조건을 설정한다. 기둥 선이 음으로 요구되고, 교차가 RSI가 50보다 큰 경우에 발생하도록 요구한다. 이것은 단기 잡음으로 인해 잘못된 거래가 발생하는 것을 피할 수 있다.

우위 분석

이 전략의 가장 큰 장점은 간단하고 이해하기 쉽고 사용하기 쉽다는 것입니다. 많은 변수와 논리적으로 복잡한 전략에 비해 거래자에게 더 친근합니다.

둘째, 이 전략은 가격의 동향 변화를 단기 및 장기간에 걸쳐 포착하고, 평선형의 금장 포크와 死 포크를 이용한 고전적인 기술 지표인 가격 반전을 식별하여 구매 및 판매의 시점을 판단한다. 이 방법은 효과가 있으며, 순차적으로, 명확한 신호가 없을 때 맹목적인 거래를 피한다.

마지막으로, 이 전략은 적절한 필터링 조건을 설정한다. 이것은 잘못된 거래의 가능성을 줄이고 시장 소음에 속지 않도록 한다. 이것은 전략이 복잡한 변동 시장에서 안정적인 성과를 낼 수 있게 한다.

위험 분석

이 전략의 가장 큰 위험은 단기 및 장기 동향 사이에 이탈이 존재할 수 있다는 것입니다. 단기간에 가격이 급격하게 변동하여 평균선 교차 신호를 유발하지만 장기 동향은 반전되지 않습니다. 이것은 잘못된 거래 손실을 초래합니다. 또한, 장기 수평 동향에서 빈번한 잘못된 신호가 발생할 수 있습니다.

EMA 매개 변수 설정은 전략 성과에도 영향을 미칩니다. 만약 EMA 주기 설정이 잘못되면, 단기 및 장기 EMA는 대표성을 잃게 되고, 트렌드를 효과적으로 식별할 수 없고, 트렌드 반전이 일어나지 않습니다. 이것은 또한 잘못된 신호와 거래의 위험을 증가시킵니다.

마지막으로, 추가 필터링 조건이 너무 엄격하여 유효한 거래 기회를 놓치게 될 수 있습니다. 이것은 전략의 수익성을 떨어뜨릴 수 있습니다.

최적화 제안

이 전략은 KDJ, MACD 등과 함께 최적화를 고려할 수 있으며, 잘못된 신호를 줄이기 위해 더 많은 요소를 사용하여 매매 시기를 판단할 수 있다.

또한, 다양한 파라미터를 테스트하여 최적의 EMA 주기 조합을 찾을 수 있다. 또한, 필터링 조건 파라미터를 조정하여 거래 빈도와 안정성을 고려할 수 있다.

동적으로 포지션을 조정하는 것도 전략 개선을 위한 중요한 방향이다. 예를 들어, 두 개의 EMA가 멀리 떨어져 있을 때, 포지션을 늘리고, 두 개의 EMA가 가까이 있을 때, 포지션을 줄인다. 이렇게하면 시장 상황에 따라 위험을 유연하게 조정할 수 있다.

요약하다

이동 평행선 교차 전략은 간단한 실용적인 양적 거래 전략이다. 그것은 거래 시기를 판단하기 위해 가격의 단기 및 장기 추세 변화에 따라 EMA 교차 구매 판매 신호를 이용한다. 이 전략은 이해하기 쉽고 실행되며, 복잡성을 최소화하여 초보자 입문 양적 거래에 좋은 선택이다. 그러나 우리는 또한 다른 위험이 존재할 수 있음을 무시할 수 없으며, 더 복잡한 시장 환경에 적응할 수 있도록 파라미터와 필터 조건에 대한 최적화가 필요합니다.

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

//@version=5
strategy('EMA Crossover Signal', shorttitle='EMA Crossover Signal', overlay=true)
// Define input for position size as a percentage of equity
position_size_pct = input(1, title='Position Size (%)') / 100

//Input EMA
len1 = input.int(25, minval=1, title='EMA 1')
src1 = input(close, title='Source')
ema1 = ta.ema(src1, len1)
len2 = input.int(100, minval=1, title='EMA 2')
src2 = input(close, title='Source')
ema2 = ta.ema(src2, len2)
//End of format

//Format RSI
lenrsi = input(14, title='RSI length')
outrsi = ta.rsi(close,lenrsi)

bodybar1 = math.abs(close - open)
bodybar2 = math.abs(close[1] - open[1])
// Plot the EMAs
plot(ema1, color=color.new(color.blue, 0), title='EMA 1')
plot(ema2, color=color.new(color.red, 0), title='EMA 2')

// EMA Crossover conditions
emaCrossoverUp = ta.crossover(ema1, ema2)
emaCrossoverDown = ta.crossunder(ema1, ema2)
var entrybar = close  // Initialize entrybar with the current close

// Calculate crossovers outside of the if statements
emaCrossoverUpOccured = ta.crossover(close, ema1) and ema1 > ema2 and bodybar1 > bodybar2 and close > entrybar
emaCrossoverDownOccured = ta.crossunder(close, ema1) and ema1 < ema2 and bodybar1 > bodybar2 and close < entrybar

plotshape(series=emaCrossoverUpOccured, location=location.abovebar, color=color.new(color.green, 0), style=shape.triangleup, title='New Buy Order', size=size.tiny)
plotshape(series=emaCrossoverDownOccured, location=location.belowbar, color=color.new(color.red, 0), style=shape.triangledown, title='New Sell Order', size=size.tiny)

if emaCrossoverUpOccured
    strategy.entry("Enter Long", strategy.long)
else if emaCrossoverDownOccured
    strategy.entry("Enter Short", strategy.short)