간단한 이동평균 크로스오버 전략

저자:차오장, 날짜: 2023-11-14 16:17:16
태그:

img

전반적인 설명

이 전략은 트렌드 방향을 결정하기 위해 다양한 시간 기간을 가진 여러 가지 간단한 이동 평균 (SMA) 의 황금 십자 및 죽음의 십자 기반의 구매 및 판매 신호를 생성합니다. 4 개의 SMA - 20 일, 50 일, 100 일 및 200 일 SMA를 사용합니다. 단기 SMA가 장기 SMA 위에 넘을 때 황금 십자로 간주되며 구매 신호가 유발됩니다. 단기 SMA가 장기 SMA 아래에 넘을 때 사망 십자로 간주되며 판매 신호가 유발됩니다.

전략 논리

이 전략의 핵심 논리는 다음과 같은 점에 기초합니다.

  1. 20일, 50일, 100일 및 200일 SMA를 포함한 다양한 기간을 가진 여러 개의 SMA를 계산합니다.

  2. 단기 SMA (20일) 와 장기 SMA (50일, 100일, 200일) 사이의 교차 상황을 확인합니다.

  3. 20일 SMA가 50일 SMA를 넘으면 골든 크로스로 간주되며 구매 신호가 발생합니다. 20일 SMA가 50일 SMA를 넘으면 죽음의 크로스로 간주되며 판매 신호가 발생합니다.

  4. 더 큰 경향은 더 긴 기간 SMA가 짧은 기간 SMA보다 높게 유지됨에 따라 결정됩니다. 즉 50일 SMA > 20일 SMA입니다.

  5. 진입 신호의 우선 순위는: 20일 SMA 대 50일 SMA > 20일 SMA 대 100일 SMA > 20일 SMA 대 200일 SMA

  6. 출구 신호는 20일 SMA가 50일 SMA 아래로 다시 넘어가면 생성됩니다.

이 전략은 주로 트렌드 방향을 결정하기 위해 SMA 크로스오버에 의존합니다. 황소 시장에서 황금 십자가와 곰 시장에서 죽음의 십자가는 잠재적 인 트렌드 시작을 신호할 수 있습니다. 또한, 단기 SMA보다 높은 장기 SMA는 더 큰 트렌드의 확인 역할을합니다.

전략 의 장점

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

  1. 이 논리는 간단하고 이해하기 쉽고 실행하기 쉽습니다.

  2. SMA는 EMA보다 시장 소음을 필터링하고 트렌드를 식별하는 데 더 좋습니다.

  3. 여러 시간 기간 SMA를 사용하면 신호 신뢰성이 향상됩니다.

  4. 입력 신호의 우선 순위 설정은 조기 입력을 피합니다.

  5. 사용자 정의 가능한 SMA 기간과 색상은 전략 최적화를 허용합니다.

  6. 다양한 거래 스타일에 적용되는 여러 시간 프레임.

  7. SMA 크로스오버 시스템은 주요 트렌드 방향을 결정하는 데 매우 효과적입니다.

전략 의 위험

이 전략과 관련된 몇 가지 위험:

  1. 빈번한 SMA 교차가 있는 범위 시장에서 너무 많은 잘못된 신호가 발생할 수 있습니다.

  2. 고정된 SMA 기간은 시장 변화에 적응할 수 없기 때문에 매개 변수는 트렌드와 변동성에 따라 최적화되어야 합니다.

  3. 단 하나의 SMA 교차는 정확한 진입을 결정할 수 없으며 MACD와 같은 다른 지표가 포함되어야합니다.

  4. SMA는 지연성 있는 특성으로 입시 시기를 최적화하거나 제한 오더를 사용해야 합니다.

  5. 엄격한 스톱 로즈 구현은 자본 보존에 매우 중요합니다.

  6. 거래 비용의 수익성에 미치는 영향은 고려되어야 합니다.

전략 강화

이 전략을 최적화하는 몇 가지 방법:

  1. 시장 조건과 ATR을 기반으로 동적으로 SMA 기간을 최적화합니다.

  2. MACD, RSI와 같은 다른 지표를 추가해 입력 시기를 확인하세요.

  3. ADX 같은 트렌드 필터를 추가하여 통합 중에 잘못된 신호를 피합니다.

  4. ATR 스톱이나 트레일링 스톱과 같은 스톱 손실 방법을 최적화합니다.

  5. 계정 크기에 따라 위치 크기를 동적으로 관리합니다.

  6. 다양한 자산 클래스에서 최적의 매개 변수를 테스트합니다.

  7. 더 높은 시간 프레임 트렌드와 일관성을 보장하기 위해 여러 시간 프레임을 포함합니다.

결론

요약하자면,이 간단한 SMA 크로스오버 시스템은 트렌드 방향을 결정하는 데 신뢰할 수 있으며 대부분의 트레이더에게 적합합니다. 그러나, 그것은 몇 가지 지연 문제를 가지고 있으며 잘못된 신호를 생성 할 수 있습니다. 우리는 변화하는 시장 환경에 걸쳐 견고하게 만들기 위해 엔트리 타이밍, 스톱 로스, 포지션 사이징 등을 향상시키기 위해 노력해야합니다. 여러 기술적 지표와 트렌드 평가의 조합은 견고한 트렌드 다음 전략을 구축하는 데 중요합니다.


/*backtest
start: 2023-10-14 00:00:00
end: 2023-11-13 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © xyzdesign1989
//@version=5
strategy("SMA crossover buy/sell [SCSM_Algo]", overlay=true, margin_long=3000, margin_short=3000)


BuyCond = ta.crossover(ta.sma(close, 20), ta.sma(close, 50)) and ta.sma(close, 20) > ta.sma(close, 50) and  ta.sma(close, 50) > ta.sma(close, 100) and  ta.sma(close, 100) > ta.sma(close, 200) or (ta.crossover(ta.sma(close, 20), ta.sma(close, 100)) and ta.sma(close, 20) > ta.sma(close, 50))
if (BuyCond)
    strategy.entry("SCSM 🤲 Buy", strategy.long)

SellCond = ta.crossunder(ta.sma(close, 20), ta.sma(close, 50))
if (SellCond)
    strategy.entry("الحمد للہ،Sell", strategy.short)

ma(source, length, type) =>
    type == "SMA" ? ta.sma(source, length) :
     type == "EMA" ? ta.ema(source, length) :
     type == "SMMA (RMA)" ? ta.rma(source, length) :
     type == "WMA" ? ta.wma(source, length) :
     type == "VWMA" ? ta.vwma(source, length) :
     na

show_ma1   = input(true   , "MA №1", inline="MA #1")
ma1_type   = input.string("SMA"  , ""     , inline="MA #1", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
ma1_source = input(close  , ""     , inline="MA #1")
ma1_length = input.int(20     , ""     , inline="MA #1", minval=1)
ma1_color  = input(#0929f6, ""     , inline="MA #1")
ma1 = ma(ma1_source, ma1_length, ma1_type)
plot(show_ma1 ? ma1 : na, color = ma1_color, title="MA №1")

show_ma2   = input(true   , "MA №2", inline="MA #2")
ma2_type   = input.string("SMA"  , ""     , inline="MA #2", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
ma2_source = input(close  , ""     , inline="MA #2")
ma2_length = input.int(50     , ""     , inline="MA #2", minval=1)
ma2_color  = input(#00fb04, ""     , inline="MA #2")
ma2 = ma(ma2_source, ma2_length, ma2_type)
plot(show_ma2 ? ma2 : na, color = ma2_color, title="MA №2")

show_ma3   = input(true   , "MA №3", inline="MA #3")
ma3_type   = input.string("SMA"  , ""     , inline="MA #3", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
ma3_source = input(close  , ""     , inline="MA #3")
ma3_length = input.int(100    , ""     , inline="MA #3", minval=1)
ma3_color  = input(#131313, ""     , inline="MA #3")
ma3 = ma(ma3_source, ma3_length, ma3_type)
plot(show_ma3 ? ma3 : na, color = ma3_color, title="MA №3")

show_ma4   = input(true   , "MA №4", inline="MA #4")
ma4_type   = input.string("SMA"  , ""     , inline="MA #4", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
ma4_source = input(close  , ""     , inline="MA #4")
ma4_length = input.int(200    , ""     , inline="MA #4", minval=1)
ma4_color  = input(#f60c0c, ""     , inline="MA #4")
ma4 = ma(ma4_source, ma4_length, ma4_type)
plot(show_ma4 ? ma4 : na, color = ma4_color, title="MA №4")

더 많은