이동 평균 크로스오버 전략

저자:차오장, 날짜: 2023-10-17 16:46:57
태그:

img

전반적인 설명

이 전략은 이동 평균에 기반한 트렌드 추적 전략입니다. 그것은 낮은 위험 트렌드 거래의 트렌드 방향을 결정하기 위해 빠르고 느린 이동 평균의 크로스 오버와 크로스 아더를 사용합니다.

전략 논리

이 전략은 기간 9의 빠른 이동 평균과 기간 21의 느린 이동 평균을 사용한다. 빠른 MA가 느린 MA를 넘을 때, 시장의 상승 추세를 신호하고 긴 지위가 취득된다. 빠른 MA가 느린 MA를 넘을 때, 하락 추세를 신호하고 모든 긴 지위가 폐쇄된다.

특히, 전략은 빠른 MA와 느린 MA의 값을 계산하고 트렌드 방향을 결정하기 위해 그 관계를 비교합니다. 상승 트렌드에서 빠른 MA가 느린 MA 위에 넘어가면 긴 엔트리 신호가 트리거됩니다. 하락 트렌드에서 빠른 MA가 느린 MA 아래에 넘어가면 기존의 긴 포지션을 닫기 위해 출구 신호가 트리거됩니다.

이렇게 하면 빠른 MA와 느린 MA의 크로스오버와 크로스온더는 거래 후 낮은 위험 트렌드에 대한 트렌드 전환을 포착합니다.

장점

  • 트렌드를 결정하는 이동 평균을 사용하여 시장 소음을 필터하고 트렌드 방향을 식별합니다.
  • 빠른 MA는 트렌드 변화를 더 빨리 포착하고 느린 MA는 잘못된 신호를 필터링합니다.
  • 크로스오버를 사용하여 구매하고 크로스온더를 사용하여 판매하면 상위와 하위 판매를 피합니다.
  • 단순하고 명확한 거래 논리, 이해하기 쉽고 실행하기 쉽습니다

위험성

  • 이동 평균은 지연을 가지고 있으며 트렌드 전환에 가장 좋은 입점/출구 지점을 놓칠 수 있습니다.
  • 고정된 MA 길이는 다른 시장 순환에 적응할 수 없습니다.
  • 듀얼 MA 전략은 과도한 거래 신호를 생성하고 과잉 조정하는 경향이 있습니다.
  • 거래를 결정하기 위해 MA만을 사용하는 것은 갑작스러운 사건과 손실에 취약합니다.

위험은 매개 변수를 조정하고 필터를 추가하고, 손해를 멈추고/이익을 취함으로써 관리될 수 있습니다.

개선 방향

  • MA 길이, 크로스오버/크로스오버 임계 등과 같은 다양한 매개 변수 설정을 테스트합니다.
  • 가짜 브레이크를 피하기 위해 필터로 운동 지표를 추가합니다.
  • 트렌드를 결정하는 지표를 추가하여 트렌드 및 범위 시장을 구별합니다.
  • 스톱을 최적화하고 이익을 취하기 위해 변동성 메트릭을 통합하십시오.
  • 매개 변수를 동적으로 최적화하기 위해 기계 학습을 사용

요약

트렌드를 따르는 간단한 전략으로서, 핵심 아이디어는 트렌드 방향을 결정하기 위해 빠르고 느린 MA를 사용하는 것입니다. 장점은 단순성, 명확한 규칙 및 효과적인 트렌드 추적입니다. 단점은 지연, 잘못된 신호 및 과도한 거래입니다. 우리는 매개 변수를 조정하고 시장 조건에 더 잘 적응하기 위해 다른 지표를 추가하여 최적화 할 수 있습니다. 전반적으로, 이중 MA 전략은 양적 거래에 간단하고 신뢰할 수있는 접근 방식을 제공합니다. 지속적인 개선으로 성능이 더욱 향상 될 수 있습니다.


/*backtest
start: 2023-09-01 00:00:00
end: 2023-09-20 23:59:59
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Profitable Crypto Strategy", shorttitle="Profit Strategy", overlay=true)

// Define strategy parameters
fastLength = input.int(9, title="Fast MA Length", minval=1)
slowLength = input.int(21, title="Slow MA Length", minval=1)
stopLossPercent = input.float(1.0, title="Stop Loss %", step=0.1)
takeProfitPercent = input.float(1.0, title="Take Profit %", step=0.1)

// Calculate moving averages
fastMA = ta.sma(close, fastLength)
slowMA = ta.sma(close, slowLength)

// Entry condition: Buy when fast MA crosses above slow MA
longCondition = ta.crossover(fastMA, slowMA)
// Exit condition: Sell when fast MA crosses below slow MA
shortCondition = ta.crossunder(fastMA, slowMA)

// Plot moving averages on the chart
plot(fastMA, color=color.blue, title="Fast MA")
plot(slowMA, color=color.orange, title="Slow MA")

// Strategy entry and exit logic
var stopLossPrice = 0.0
var takeProfitPrice = 0.0

if (longCondition)
    stopLossPrice := close * (1.0 - stopLossPercent / 100)
    takeProfitPrice := close * (1.0 + takeProfitPercent / 100)
    strategy.entry("Long", strategy.long)

if (shortCondition)
    strategy.close("Long")

// Set stop loss and take profit for open positions
strategy.exit("Stop Loss/Profit", stop=stopLossPrice, limit=takeProfitPrice)


더 많은