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

저자:차오장, 날짜: 2024-01-31 11:29:45
태그:

img

전반적인 설명

이것은 이중 이동 평균 크로스오버를 기반으로 하는 거래 전략이다. 서로 다른 길이의 두 이동 평균이 교차할 때 구매 및 판매 신호를 생성한다. 구체적으로, 더 빠른 MA가 더 느린 MA를 넘을 때 길게, 더 빠른 MA가 더 느린 MA를 넘을 때 짧게 간다.

전략 논리

이 전략의 핵심 논리는 두 이동 평균 사이의 교차 원칙에 있다. 이동 평균은 특정 기간 동안의 수학적 평균 가격이다. 시장 소음을 필터링하고 더 명확한 가격 추세를 밝히는 데 도움이됩니다.

이 전략에서, 단기 MA는 단기 트렌드를 포착하고, 장기 MA는 장기 트렌드를 포착합니다. 단기 MA는 최신 가격 변화에 반응하는 데 더 민감하기 때문에, 장기 MA를 넘어서면 앞으로의 트렌드 전환을 신호합니다.

구체적으로, 전략은 사용자가 정의한 긴 기간과 짧은 기간에 ta.sma를 사용하여 MAs를 계산합니다. 그 다음 ta.crossover와 ta.crossunder를 사용하여 두 MAs 사이의 황금 크로스오버와 죽음의 크로스오버를 감지합니다. 짧은 MA가 긴 MA를 넘으면 길게 가십시오. 짧은 MA가 아래에 넘으면 짧게 가십시오.

장점

이 전략의 주요 장점은 다음과 같습니다.

  1. 간단한 논리, 따라하기 쉽다.
  2. 다양한 시장에 적응할 수 있는 사용자 정의 가능한 매개 변수
  3. MA 크로스오버는 잡음을 필터링하여 트렌드 반전을 포착합니다.
  4. 가격 변동점을 파악하는 데 높은 민감성

위험성

또한 몇 가지 위험이 있습니다.

  1. MA 사이가 너무 작아서 잘못된 신호가 나오죠
  2. 잘못된 MA 기간은 주요 트렌드를 놓치고 있습니다.
  3. 역행은 항상 트렌드 변화라는 것을 의미하지는 않습니다.
  4. 패러미터는 과도한 부착을 피하기 위해 조정해야합니다.

위험을 완화하기 위해 매개 변수를 조정하고, 스톱 로스 및 영업이익을 포함하거나 다른 기술적 지표를 추가할 수 있습니다.

최적화

더 많은 최적화를 할 수 있습니다.

  1. 적응성 MA 기간을 최적화합니다.
  2. 부피 필터를 추가해 가짜 브레이크오프를 방지해
  3. MACD, KDJ 같은 다른 지표를 포함합니다.
  4. 손해를 막고/이익을 취하기 위해 손해를 제한하는 것을 추가합니다.
  5. 더 나은 확장성을 위해 코드 구조를 개선합니다.

결론

결론적으로, 이것은 논리 및 매개 변수에서 단순함 덕분에 시장 반전을 효과적으로 포착 할 수있는 최적화 전략입니다. 동시에 다양한 거래 요구에 맞게 최적화 할 수있는 큰 잠재력을 가지고 있습니다.


/*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=5
strategy("Cross 2 Moving Average Strategy", shorttitle="2MA Cross", overlay=true)

// User-defined input for moving averages
long_period = input(20, title="Long Period")
short_period = input(5, title="Short Period")
type_ma = input.string("SMA", title = "MA type", options = ["SMA", "EMA"])

// Calculating moving averages
long_ma = ta.sma(close, long_period)
short_ma = ta.sma(close, short_period)

// Plot moving averages
plot(long_ma, title="Long Moving Average", color=color.red)
plot(short_ma, title="Short Moving Average", color=color.green)

// Strategy logic for crossing of moving averages
longCondition = ta.crossover(short_ma, long_ma)
shortCondition = ta.crossunder(short_ma, long_ma)

// Entry orders
if (longCondition)
    strategy.entry("Long", strategy.long)

if (shortCondition)
    strategy.entry("Short", strategy.short)

// Optional: Add stop loss and take profit
stop_loss_perc = input(1, title="Stop Loss (%)") / 100
take_profit_perc = input(2, title="Take Profit (%)") / 100

strategy.exit("Exit Long", from_entry="Long", stop=close*(1-stop_loss_perc), limit=close*(1+take_profit_perc))
strategy.exit("Exit Short", from_entry="Short", stop=close*(1+stop_loss_perc), limit=close*(1-take_profit_perc))


더 많은