이 전략은 간단한 SMA 이동 평균 크로스오버 전략이다. 그것은 서로 다른 길이의 두 가지 간단한 이동 평균 (SMA) 을 사용합니다. 빠른 MA가 느린 MA보다 높을 때, 그것은 긴 지위에 진입합니다. 빠른 MA가 느린 MA보다 낮을 때, 그것은 긴 지위를 닫습니다. 두 MAs의 길이가 사용자 정의 될 수 있으며, 백테스팅을위한 시작 및 종료 날짜도 있습니다.
이 전략의 주요 아이디어는 트레이딩을 위해 이동 평균의 트렌드 특성과 MA 크로스오버의 신호 특성을 활용하는 것입니다. 빠른 MA가 느린 MA보다 높을 때 상승 추세를 나타내고 긴 포지션을 보유해야합니다. 빠른 MA가 느린 MA보다 낮을 때 하락 추세를 나타내고 포지션을 보유해서는 안됩니다.
SMA 이동 평균 크로스오버 전략은 초보자도 익히고 사용할 수 있는 간단하고 이해하기 쉽고 고전적이고 실용적인 트렌드 추후 전략이다. 이동 평균의 트렌드 특성 및 MA 크로스오버의 신호 특성을 활용하여 시장 트렌드의 변화를 빠르게 파악한다. 그러나 이 전략에는 지연, 빈번한 거래 및 스톱 로스 부족과 같은 일부 제한과 위험이 있다. 따라서 실제 응용에서는 전략의 안정성과 수익성을 높이기 위해 특정 조건에 따라 적절히 최적화 및 개선되어야 한다.
/*backtest start: 2023-03-22 00:00:00 end: 2024-03-27 00:00:00 period: 1d basePeriod: 1h 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/ // © j0secyn //@version=5 strategy("MA Cross", overlay=true, margin_long=100, margin_short=100, default_qty_value=100, default_qty_type=strategy.percent_of_equity, initial_capital=10000) // === INPUT BACKTEST RANGE === fromDay = input.int(defval = 1, title = "From Day", minval = 1, maxval = 31) fromMonth = input.int(defval = 1, title = "From Month", minval = 1, maxval = 12) fromYear = input.int(defval = 2018,title = "From Year", minval = 1970) thruDay = input.int(defval = 30, title = "Thru Day", minval = 1, maxval = 31) thruMonth = input.int(defval = 9, title = "Thru Month", minval = 1, maxval = 12) thruYear = input.int(defval = 2024, title = "Thru Year", minval = 1970) slow_ma_length = input.int(defval = 100, title = "Slow MA lenght") fast_ma_length = input.int(defval = 30, title = "Fast MA lenght") // === FUNCTION EXAMPLE === start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window window() => true // === LOGIC === crossOv = ta.crossover(ta.sma(close, fast_ma_length), ta.sma(close, slow_ma_length)) crossUn = ta.crossunder(ta.sma(close, fast_ma_length), ta.sma(close, slow_ma_length)) // === EXECUTION === // strategy.entry("L", strategy.long, when = window() and crossOv) // enter long when "within window of time" AND crossover // strategy.close("L", when = window() and crossUn) // exits long when "within window of time" AND crossunder strategy.entry("L", strategy.long, when = window() and crossOv) // enter long when "within window of time" AND crossover strategy.close("L", when = window() and crossUn) // exits long when "within window of time" AND crossunder