이동평균 교차 전략

SMA MA
생성 날짜: 2024-06-14 15:48:32 마지막으로 수정됨: 2024-06-14 15:48:32
복사: 3 클릭수: 621
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

이동평균 교차 전략

개요

이 전략은 이동 평균의 교차를 기반으로 한 정량 거래 전략이다. 이 전략은 두 가지 다른 주기의 이동 평균을 계산하여 (고속선과 느린선) 빠른 선이 아래에서 위로 슬로우 라인을 통과할 때 구매 신호를 생성하고 빠른 선이 위에서 아래로 슬로우 라인을 통과할 때 판매 신호를 생성한다. 이 전략은 또한 동적 포지션 관리의 개념을 도입하여 계좌의 적자를 따라 매 거래의 포지션 크기를 동적으로 조정하여 위험을 제어한다.

전략 원칙

  1. 두 개의 다른 주기에서 간단한 이동 평균을 계산합니다.
  2. 빠른 선 ((9주기) 가 아래에서 위로 느린 선 ((21주기) 을 통과하면 구매 신호가 발생한다. 빠른 선이 위에서 아래로 느린 선을 통과하면 판매 신호가 발생한다.
  3. 계좌 잔액의 1%에 따라 거래당 위험 금액을 계산하고, 위험 금액과 현재 가격 범위에 따라 구매해야 할 주식의 수를 계산한다.
  4. 현재 전략이 수익 상태인 경우, 다음 거래의 포지션을 10% 증가시킵니다. 손실 상태인 경우, 다음 거래의 포지션을 10% 감소시킵니다.
  5. 구매 신호가 나타나면 구매를 하고, 판매 신호가 나타나면 판매를 한다.

전략적 이점

  1. 간단하고 이해하기 쉬운: 이 전략은 클래식 이동 평균의 교차 원리에 기초하고, 논리가 명확하고, 이해하기 쉽고 구현하기 쉽습니다.
  2. 트렌드 추적: 두 개의 다른 기간의 이동 평균을 통해 가격의 중기 및 장기 추세를 효과적으로 포착할 수 있으며, 트렌드 추적 거래에 적합하다.
  3. 역동적인 포지션 관리: 수익과 손실 상황에 따라 포지션 크기를 동적으로 조정하고, 수익을 올릴 때 포지션을 적절하게 증가시키고, 손실을 줄일 때 포지션을 적절하게 감소시키는 것은 위험을 통제하고 수익을 높이는 데 도움이됩니다.
  4. 적용 범위: 이 전략은 주식, 선물, 외환 등 다양한 금융 시장과 거래 품종에 적용될 수 있다.

전략적 위험

  1. 자주 거래: 이 전략이 단기 이동 평균 교차 신호에 기반하기 때문에, 자주 거래로 이어질 수 있으며, 거래 비용과 슬라이드 포인트 위험을 증가시킬 수 있다.
  2. 불안정한 시장에서의 부실성: 가격의 불안정하고, 추세가 아닌 시장에서, 이 전략은 손실을 초래하는 거짓 신호를 더 많이 생성할 수 있다.
  3. 매개 변수 최적화 위험: 전략의 성능은 이동 평균의 주기적 선택에 의존하며, 다른 매개 변수는 다른 결과를 초래할 수 있으며, 매개 변수 최적화 과 적합성의 위험이 존재한다.

전략 최적화 방향

  1. 트렌드 확인 지표의 도입: 이동 평균 교차 신호의 기초에 MACD, ADX 등과 같은 다른 트렌드 확인 지표를 도입하여 일부 가짜 신호를 필터링하여 신호 품질을 향상시킨다.
  2. 포지션 관리 규칙을 최적화: 기존의 포지션 관리 규칙은 간단하며, 위험 조정 된 수익을 더 높이기 위해 케일리 공식, 고정 비율 자금 관리 등과 같은 더 복잡한 포지션 관리 알고리즘을 도입하는 것을 고려할 수 있습니다.
  3. 스톱로스 스톱 메커니즘을 추가: 전략에 스톱로스 및 스톱로스 규칙을 추가하여 단일 거래의 최대 손실과 최대 수익을 제어하고 전략의 위험 수익률을 향상시킵니다.
  4. 매개 변수 적응 최적화: 매개 변수 적응 최적화 메커니즘을 도입하여 시장 상태의 변화에 따라 전략 매개 변수를 자동으로 조정하여 전략의 안정성과 적응성을 향상시킵니다.

요약하다

이동평균선 교차전략 (영어: Moving Average Cross Line 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)