빠른 EMA가 아래에서 느린 EMA를 넘을 때 시장이 상승 추세에 들어서고 구매 신호를 생성한다는 것을 나타냅니다. 빠른 EMA가 위에서 느린 EMA를 넘을 때 하락 추세의 시작을 표시하고 판매 신호를 생성합니다.
이 전략의 장점은 다음과 같습니다.
또한 다음과 같은 위험 요소가 있습니다.
몇 가지 최적화 방향:
이 전략은 시장 트렌드를 결정하기 위해 빠르고 느린 EMA 관계를 사용하여 이중 EMA 크로스오버를 기반으로 한 거래 시스템을 구축합니다. 신호 생성은 간단하고 명확합니다. 약간의 소음을 필터하고 중장기 트렌드 거래에 적합합니다. 멀티 지표 최적화 및 위험 통제를 통해 보편성과 효율성을 향상시킬 여지가 있습니다.
/*backtest start: 2023-01-21 00:00:00 end: 2024-01-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("EMA Strategy v2", shorttitle = "EMA Strategy v2", overlay=true, pyramiding = 3,default_qty_type = strategy.percent_of_equity, default_qty_value = 10) // === Inputs === // short ma maFastSource = input(defval = close, title = "Fast MA Source") maFastLength = input(defval = 30, title = "Fast MA Period", minval = 1) // long ma maSlowSource = input(defval = close, title = "Slow MA Source") maSlowLength = input(defval = 100, title = "Slow MA Period", minval = 1) // invert trade direction tradeInvert = input(defval = false, title = "Invert Trade Direction?") // risk management useStop = input(defval = true, title = "Use Initial Stop Loss?") slPoints = input(defval = 0, title = "Initial Stop Loss Points", minval = 1) useTS = input(defval = true, title = "Use Trailing Stop?") tslPoints = input(defval = 0, title = "Trail Points", minval = 1) useTSO = input(defval = false, title = "Use Offset For Trailing Stop?") tslOffset = input(defval = 0, title = "Trail Offset Points", minval = 1) // === Vars and Series === fastMA = ema(maFastSource, maFastLength) slowMA = ema(maSlowSource, maSlowLength) plot(fastMA, color=blue) plot(slowMA, color=purple) goLong() => crossover(fastMA, slowMA) killLong() => crossunder(fastMA, slowMA) strategy.entry("Buy", strategy.long, when = goLong()) strategy.close("Buy", when = killLong()) // Shorting if using goShort() => crossunder (fastMA, slowMA) killShort() => crossover(fastMA, slowMA) //strategy.entry("Sell", strategy.short, when = goShort()) //strategy.close("Sell", when = killShort()) if (useStop) strategy.exit("XLS", from_entry ="Buy", stop = strategy.position_avg_price / 1.08 ) strategy.exit("XSS", from_entry ="Sell", stop = strategy.position_avg_price * 1.58)