SMA 크로스오버 전략

저자:차오장, 날짜: 2023-11-08 11:36:51
태그:

img

전반적인 설명

이 전략은 빠른 이동 평균과 느린 이동 평균의 교차를 기반으로 거래 신호를 생성합니다. 빠른 이동 평균이 아래에서 느린 이동 평균을 넘을 때 구매 신호를 생성합니다. 빠른 이동 평균이 위에서 느린 이동 평균을 넘을 때 판매 신호를 생성합니다.

원칙

이 전략은 sma 함수를 사용하여 빠르고 느린 이동 평균을 계산합니다. fast_SMA는 기간 길이 fast_SMA_input와 함께 빠른 이동 평균입니다. slow_SMA는 기간 길이 slow_SMA_input와 함께 느린 이동 평균입니다.

이 전략은 빠른 이동 평균과 느린 이동 평균 사이의 교차를 결정하기 위해 크로스 및 크로스 언더 함수를 사용합니다. 빠른 이동 평균이 느린 이동 평균을 넘을 때, LONG 변수는 사실이며 구매 신호가 생성됩니다. 빠른 이동 평균이 느린 이동 평균을 넘을 때, SHORT 변수는 사실이며 판매 신호가 생성됩니다.

장점

이 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 간단한 원칙, 이해하기 쉽고 실행하기 쉽습니다.
  2. 다양한 시장 환경에 적응할 수 있는 조정 가능한 이동 평균 기간
  3. 시장 소음을 필터링하고 비교적 신뢰할 수 있는 거래 신호를 생성합니다.
  4. 트렌드의 시작점과 전환점을 모두 포착합니다.

위험성

이 전략은 또한 다음과 같은 위험을 가지고 있습니다.

  1. 설정이 부적절하면 과도한 거래 신호를 생성할 수 있고, 과도한 거래로 이어질 수 있습니다.
  2. 부적절한 시장에서 많은 잘못된 신호를 생성 할 수 있습니다.
  3. 트렌드의 지속 기간을 결정할 수 없고, 조기에 반전될 수도 있습니다.

위험 관리

  1. 필터링 효과와 감수성을 균형을 맞추기 위해 적절한 이동 평균 매개 변수를 설정합니다.
  2. 잘못된 신호를 피하기 위해 트렌드 지표 필터를 추가합니다.
  3. 트레이드당 손실을 제어하기 위해 스톱 로스 포인트를 설정합니다.

최적화

이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.

  1. 부진이 발생했을 때 부피 또는 변동성에 대한 필터링 조건을 추가하여 거짓 부진을 피합니다.
  2. 트렌드 방향과 강도를 파악하기 위해 트렌드 지표를 포함합니다.
  3. 이동 평균 매개 변수를 자동으로 최적화하기 위해 기계 학습 모델을 추가합니다.
  4. 지원/저항 및 볼링거 밴드와 결합하여 거래 범위를 정의하고 진입 정확도를 향상시킵니다.

요약

이 전략은 이동 평균의 장점을 활용하여 효과적으로 거래 신호를 생성합니다. 일부 위험이 있지만 매개 변수 최적화, 필터 추가 등으로 개선 될 수 있습니다. 이동 평균 크로스오버 전략은 추가 연구와 응용 가치가 있습니다.


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

//@author Jacques Grobler
//
//                  SIMPLE CROSS OVER BOT
//                  =====================
//
// This is a simple example of how to set up a strategy to go long or short
// If you make any modifications or have any suggestions, let me know
// When using this script, every section marked back testing should be 
// uncommented in order to use for back testing, same goes for using the script portion

///////////////////////////////////////////////////////////////////////////////////////
//// INTRO
//// -----
// BACKTESTING
//@version=4
strategy(title="SimpleCrossOver_Bot_V1_Backtester", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=0, commission_type=strategy.commission.percent, commission_value=0.1)

// SIGNALS
//study(title="SimpleCrossOver_Bot_V1_Signals", overlay = true)

///////////////////////////////////////////////////////////////////////////////////////
//// INPUTS
//// ------
// BACKTESTING
dateSart_Year = input(2018, title="Start Year", minval=2000)
dateSart_Month = input(1, title="Start Month", minval=1, maxval=12)
dateSart_Day = input(1, title="Start Day", minval=1, maxval=31)
dateEnd_Year = input(2019, title="End Year", minval=2000)
dateEnd_Month = input(1, title="End Month", minval=1, maxval=12)
dateEnd_Day = input(1, title="End Day", minval=1, maxval=31)

// BACKTESTING AND SIGNALS
fast_SMA_input = input(7, title="SMA Fast")
slow_SMA_input = input(25, title="SMA Slow")

///////////////////////////////////////////////////////////////////////////////////////
//// INDICATORS
//// ----------
fast_SMA = sma(close, fast_SMA_input)
slow_SMA = sma(close, slow_SMA_input)

///////////////////////////////////////////////////////////////////////////////////////
//// STRATEGY
//// --------
LONG = cross(fast_SMA, slow_SMA) and fast_SMA > slow_SMA
stratLONG() => crossover(fast_SMA, slow_SMA)
SHORT = cross(fast_SMA, slow_SMA) and fast_SMA < slow_SMA
stratSHORT() => crossunder(fast_SMA, slow_SMA)

///////////////////////////////////////////////////////////////////////////////////////
//// TRIGGERS
//// --------
// BACKTESTING
testPeriodStart = timestamp(dateSart_Year, dateSart_Month, dateSart_Day, 0, 0)
testPeriodStop = timestamp(dateEnd_Year, dateEnd_Month, dateEnd_Day, 0, 0)
timecondition = true

strategy.entry(id="LONG", long = true, when=timecondition and stratLONG())
strategy.entry(id="SHORT", long = false, when=timecondition and stratSHORT())

// SIGNALS
//alertcondition(LONG, title="LONG")
//alertcondition(SHORT, title="SHORT")

///////////////////////////////////////////////////////////////////////////////////////
//// PLOTS
//// -----
// BACKTESTING AND SIGNALS
plot(fast_SMA, color=green, linewidth=1)
plot(slow_SMA, color=yellow, linewidth=1)
plotshape(LONG, title="LONG", style=shape.triangleup, text="LONG", location=location.belowbar, size=size.small, color=green)
plotshape(SHORT, title="SHORT", style=shape.triangledown, text="SHORT", location=location.abovebar, size=size.small, color=red)

더 많은