리소스 로딩... 로딩...

이동 평균 크로스오버 전략

저자:차오장, 날짜: 2024-06-14 15:48:32
태그:SMAMA

img

전반적인 설명

이 전략은 이동 평균 크로스오버를 기반으로 한 양적 거래 전략이다. 빠른 이동 평균 (단기) 이 아래에서 느린 이동 평균 (더 긴 기간) 을 넘을 때 구매 신호를 생성하고 빠른 이동 평균이 위에서 느린 이동 평균을 넘을 때 판매 신호를 생성한다. 또한 전략은 위험을 제어하기 위해 계정의 이익과 손실에 따라 각 거래의 크기를 조정함으로써 동적 위치 사이징의 개념을 도입한다.

전략 원칙

  1. 서로 다른 기간인 9과 21을 가진 두 개의 간단한 이동 평균 (SMA) 을 계산합니다.
  2. 빠른 이동 평균 (9주기) 가 아래에서 느린 이동 평균 (21주기) 을 넘을 때 구매 신호를 생성하고 빠른 이동 평균이 위에서 느린 이동 평균을 넘을 때 판매 신호를 생성합니다.
  3. 각 거래에 대한 위험 금액을 계좌 잔액의 1%를 기준으로 계산하고, 위험 금액과 현재 가격 범위 (고 - 낮은) 에 따라 구매할 주식의 수를 결정합니다.
  4. 만약 전략이 현재 수익성이 있다면 다음 거래의 위치 크기를 10% 증가시키고 손실이 있다면 다음 거래의 위치 크기를 10% 감소시킵니다.
  5. 구매 신호가 나타나면 구매 명령을 실행하고 판매 신호가 나타나면 판매 명령을 실행합니다.

전략적 장점

  1. 단순성: 전략은 클래식한 이동 평균 교차 원리에 기반하고 있으며, 이는 직설적이고 이해하기 쉽고 구현하기 쉽습니다.
  2. 트렌드 추적: 서로 다른 기간에 두 개의 이동 평균을 사용하여 전략은 중장기 가격 추세를 효과적으로 파악할 수 있으며 트렌드 추적 거래에 적합합니다.
  3. 역동적인 포지션 크기: 이윤과 손실에 따라 포지션 크기를 조정함으로써 전략은 수익성이있을 때 포지션 크기를 적절히 증가시키고 손실이있을 때 감소시켜 위험을 제어하고 수익을 향상시킵니다.
  4. 폭넓은 적용 가능성: 이 전략은 주식, 선물, 외환 등 다양한 금융 시장과 거래 수단에 적용될 수 있습니다.

전략 위험

  1. 빈번한 거래: 전략은 단기 이동 평균 크로스오버 신호에 의존하기 때문에 빈번한 거래, 거래 비용 증가 및 미끄러짐 위험을 초래할 수 있습니다.
  2. 불안한 시장에서 나쁜 성과: 불안하고 트렌드가 없는 시장에서 전략은 더 많은 잘못된 신호를 생성하여 손실을 초래할 수 있습니다.
  3. 매개 변수 최적화 위험: 전략의 성능은 이동 평균 기간의 선택에 달려 있으며 다른 매개 변수는 다른 결과를 초래할 수 있으며 매개 변수 최적화 과정에서 과도한 적합성의 위험이 있습니다.

전략 최적화 방향

  1. 트렌드 확인 지표를 도입: 이동 평균 크로스오버 신호 외에도 일부 잘못된 신호를 필터링하고 신호 품질을 향상시키기 위해 MACD, ADX 등과 같은 다른 트렌드 확인 지표를 도입하십시오.
  2. 포지션 사이즈링 규칙을 최적화: 현재 포지션 사이즈링 규칙은 비교적 간단합니다. 위험 조정 수익을 더 향상시키기 위해 켈리 기준 또는 고정 분자 돈 관리와 같은 더 복잡한 포지션 사이즈링 알고리즘을 도입하는 것을 고려하십시오.
  3. 스톱 로스 및 취리 메커니즘을 포함: 전략에 스톱 로스 및 취리 규칙을 추가하여 각 거래에 대한 최대 손실과 최대 수익을 제어하여 전략의 위험/이익 비율을 향상시킵니다.
  4. 적응적 매개 변수 최적화: 시장 조건의 변화에 따라 전략 매개 변수를 자동으로 조정하는 적응적 매개 변수 최적화 메커니즘을 도입하여 전략의 견고성과 적응력을 향상시킵니다.

요약

이동평균 크로스오버 전략 (moving average crossover strategy) 은 서로 다른 기간의 두 이동평균에서 크로스오버 신호를 사용하여 가격 트렌드를 포착하는 간단하고 실용적인 수치적 거래 전략으로 위험을 제어하기 위해 역동적 위치 사이징 규칙을 도입하는 동시에 명확한 논리를 가지고 있으며, 구현하기 쉽고, 광범위한 응용 분야를 가지고 있습니다. 그러나 실제 응용에서는 빈번한 거래, 불안정한 시장에서의 저성능 및 매개 변수 최적화와 같은 잠재적 위험에 대해 인식해야합니다. 전략은 트렌드 확인 지표, 위치 사이징 규칙을 최적화하고, 스톱-로스 및 영리 메커니즘을 통합하고, 적응적 매개 변수 최적화를 구현하는 것과 같은 필요에 따라 최적화 및 개선되어야합니다. 지속적인 최적화 및 정교를 통해 전략의 견고성과 수익성을 더욱 향상시킬 수 있습니다.


/*backtest
start: 2024-06-06 00:00:00
end: 2024-06-13 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © okolienicholas

//@version=5
strategy("Moving Average Crossover Strategy", overlay=true)

// Input parameters
fast_length = input(9, title="Fast MA Length")
slow_length = input(21, title="Slow MA Length")
source = close
account_balance = input(100, title="Account Balance") // Add your account balance here

// Calculate moving averages
fast_ma = ta.sma(source, fast_length)
slow_ma = ta.sma(source, slow_length)

// Plot moving averages
plot(fast_ma, color=color.blue, title="Fast MA")
plot(slow_ma, color=color.red, title="Slow MA")

// Generate buy/sell signals
buy_signal = ta.crossover(fast_ma, slow_ma)
sell_signal = ta.crossunder(fast_ma, slow_ma)

// Plot buy/sell signals
plotshape(buy_signal, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Buy Signal")
plotshape(sell_signal, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Sell Signal")

// Calculate the risk per trade
risk_per_trade = account_balance * 0.01

// Calculate the number of shares to buy
shares_to_buy = risk_per_trade / (high - low)

// Calculate the profit or loss
profit_or_loss = strategy.netprofit

// Adjust the position size based on the profit or loss
if (profit_or_loss > 0)
    shares_to_buy = shares_to_buy * 1.1 // Increase the position size by 10% when in profit
else
    shares_to_buy = shares_to_buy * 0.9 // Decrease the position size by 10% when in loss

// Execute orders
if (buy_signal)
    strategy.entry("Buy", strategy.long, qty=shares_to_buy)
    
if (sell_signal)
    strategy.entry("Sell", strategy.short, qty=shares_to_buy)


관련

더 많은