
이동 평균 금줄기 사다리 거래 전략은 빠른 라인 EMA ((fastLength) 와 느린 라인 EMA ((slowLength) 의 교차를 계산하여 구매 및 판매 신호를 생성한다. 빠른 라인 상에서 느린 라인을 통과할 때 구매 신호를 생성한다. 빠른 라인 아래에서 느린 라인을 통과할 때 판매 신호를 생성한다. 이 전략은 간단하고 실용적이며 중간의 짧은 라인 거래에 적합하다.
이 전략은 두 개의 이동 평균, 즉, 빠른 선과 느린 선을 사용한다. 빠른 선의 파라미터인 EMAfastLength는 9일 선을 기본으로 하고, 느린 선의 파라미터인 EMAAslowLength는 26일 선을 기본으로 한다. 두 개의 EMA 선의 교차를 계산하여 시장의 매매 신호를 판단한다:
특정 거래 신호와 전략 규칙은 다음과 같습니다.
그래서 이 전략은 두 개의 이동 평균이 발생했을 때 거래하는 전략입니다.
위험, 최적화 가능한 변수 이동 평균 주기, 거래 종류, 스톱 스톱 손실 비율 등에 대해 많은 테스트가 필요합니다.
이 전략의 이동 평균 교차 개념은 간단하고 실용적이며 다음과 같은 방법으로 최적화 할 수 있습니다.
이러한 최적화 테스트를 통해 전략의 실전 효과와 안정성을 크게 향상시킬 수 있다.
이동 평균의 전략은 간단하며, 실제 응용은 지속적으로 최적화를 필요로 한다. 이 전략은 거래 신호 생성 논리와 기본 거래 규칙을 제공하며, 이를 기반으로 강력하게 최적화하여 실용적인 양적 전략이 될 수 있다. 이동 평균의 응용은 또한 우리에게 전략 아이디어를 제공하여 이를 기반으로 혁신과 개선을 할 수 있다.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("EMA Cross by MarketAlpha", overlay=true)
EMAfastLength = input(defval = 9, minval = 2)
EMAslowLength = input(defval = 26, minval = 2)
Targetpercentage = input(defval = 0.15, title = "Profit Target in percentage", minval = 0.05)
StopLosspercentage = input(defval = 0.20, title = "Stop Loss in percentage", minval = 0.05)
profitpoints = close*Targetpercentage
stoplosspoints = close*StopLosspercentage
price = close
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 = 2018, title = "From Year", minval = 2000)
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)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => true // create function "within window of time"
emafast = ema(price, EMAfastLength)
emaslow = sma(price, EMAslowLength)
plot(emafast,color=green)
plot(emaslow,color=red)
enterLong() => crossover(emafast, emaslow)
strategy.entry(id = "MarketAlpha Long", long = true, when = window() and enterLong())
strategy.exit("Exit Long", from_entry = "MarketAlpha Long", profit = profitpoints,loss = stoplosspoints)
enterShort() => crossunder(emafast, emaslow)
strategy.entry(id = "MarketAlpha Short", long = false, when = window() and enterShort())
strategy.exit("Exit Short", from_entry = "MarketAlpha Short", profit = profitpoints,loss = stoplosspoints)