이중 SMA 크로스오버 전략

저자:차오장, 날짜: 2023-11-23 16:42:58
태그:

img

전반적인 설명

이중 SMA 크로스오버 전략은 서로 다른 매개 변수 설정을 가진 두 개의 SMA 라인의 크로스오버를 계산하여 거래 신호를 생성합니다. 더 빠른 SMA 라인이 더 느린 SMA 라인의 위를 넘을 때 구매 신호가 생성됩니다. 더 느린 SMA 라인이 더 빠른 SMA 라인의 아래를 넘을 때 판매 신호가 생성됩니다. 전략은 두 개의 SMA 매개 변수를 동시에 사용합니다. 하나는 입구 지점을 결정하고 다른 하나는 출구 지점을 결정합니다.

전략 논리

이 전략은 두 개의 SMA 매개 변수를 사용합니다.smaB1, smaB2구매 신호를 위해, 그리고smaS1, smaS2판매 신호는 각각 느리고 빠른 이동 평균을 나타냅니다.smaB1위쪽의 십자smaB2, 구매 신호가 생성됩니다.smaS2아래의 십자smaS1, 판매 신호가 생성됩니다. 이것은 변화하는 시장 환경에 적응하기 위해 입출구 조건을 유연하게 조정 할 수 있습니다.

특히, 이 전략은 매매 시기를 결정하기 위해 두 개의 SMA 라인의 크로스오버 상황을 클로즈 가격에서 계산하여 모니터링합니다. 더 빠른 SMA 라인이 더 느린 SMA 라인의 위를 넘을 때, 가격 추세가 상승하는 것으로 판단됩니다. 따라서 이 시간에 길게 이동하십시오. 그리고 더 느린 SMA 라인이 더 빠른 SMA 라인의 아래를 넘을 때, 가격 추세는 하향으로 전환되므로 긴 포지션을 종료하십시오.

이점 분석

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

  1. 이중 이동 평균 크로스오버 시스템을 사용하면 시장 변화에 적응하기 위해 입시와 출시 기준을 유연하게 조정할 수 있습니다.
  2. SMA 라인 자체는 소음을 필터링하고 더 신뢰할 수있는 거래 신호를 생성 할 수 있습니다.
  3. 사용자 정의 가능한 SMA 매개 변수 조합은 다른 제품에 대한 매개 변수 최적화를 허용

위험 분석

이 전략과 관련된 위험도 있습니다.

  1. SMA 크로스오버 신호는 뒤떨어지고 전환점에 맞춰 신호를 생성하지 않을 수 있습니다.
  2. SMA 매개 변수의 잘못된 선택은 너무 많은 잘못된 신호로 이어질 수 있습니다.
  3. 변동적인 시장 조건에서 생성된 신호는 잘 작동하지 않을 수 있습니다.

위의 위험을 제어하기 위해 SMA 매개 변수 최적화, 수익을 차단하기 위한 동적 스톱 로스 등과 같은 방법이 전략을 개선하는 데 사용될 수 있습니다.

최적화 방향

이 전략에 대한 최적화 방향:

  1. 최적의 매개 변수를 찾기 위해 더 많은 SMA 매개 변수 조합을 테스트
  2. 부폭적인 가격 변동 중에 잘못된 신호를 피하기 위해 부피 확인을 추가합니다.
  3. 다른 지표 (예를 들어 MACD, RSI) 를 조합하여 SMA 크로스오버 신호를 필터링합니다.
  4. 수익을 확보하고 손실을 줄이기 위해 스톱 로스 전략을 추가하십시오.

요약

SMA 크로스오버 전략은 두 개의 SMA 라인 사이의 크로스오버 상황을 계산하여 간단하고 효과적인 거래 신호를 생성합니다. 매개 변수를 조정할 수 있는 유연성은이 전략을 다른 제품에 적응 할 수있게 만들고 일반적으로 사용되는 트렌드 다음 전략입니다. 더 신뢰할 수있는 신호를 생성하기 위해 매개 변수 최적화, 신호 필터링 등을 통해이 전략을 추가적으로 개선 할 수 있습니다.


/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-22 00:00:00
period: 5m
basePeriod: 1m
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/
// © melihtuna

//@version=4
strategy("SMA Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=10000, currency=currency.USD, commission_value=0.1, commission_type=strategy.commission.percent)

smaB1 = input(title="smaB1",defval=377)
smaB2 = input(title="smaB2",defval=200)
smaS1 = input(title="smaS1",defval=377)
smaS2 = input(title="smaS2",defval=200)
smawidth = 2

plot(sma(close, smaB1), color = #EFB819, linewidth=smawidth, title='smaB1')
plot(sma(close, smaB2), color = #FF23FD, linewidth=smawidth, title='smaB2')
plot(sma(close, smaS1), color = #000000, linewidth=smawidth, title='smaS1')
plot(sma(close, smaS2), color = #c48dba, linewidth=smawidth, title='smaS2')

// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2020, title = "From Year", minval = 2017)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        
window()  => time >= start and time <= finish ? true : false 

longCondition = crossover(sma(close, smaB1),sma(close, smaB2))

if (window() and longCondition)
    strategy.entry("BUY", strategy.long)

shortCondition = crossover(sma(close, smaS2),sma(close, smaS1))

if (window() and shortCondition)
    strategy.entry("SELL", strategy.short)
    
    
    

더 많은