
이 전략은 EMA 평평선 golden cross를 사용하여 거래 신호를 생성합니다. 즉, 빠른 EMA 라인을 가로질러 느린 EMA 라인을 가로질러 구매 신호를 생성하고, 빠른 EMA 라인을 가로질러 느린 EMA 라인을 가로질러 판매 신호를 생성합니다.
해결책:
이 전략은 전반적으로 간단하고 사용하기 쉽고, EMA 평평선에 기반하여 신호를 생성하고, 순차적으로 ATR 지표 추적을 추가하여 위험을 효과적으로 제어 할 수 있습니다. 허위 신호가 있기는 하지만, 주요 추세를 포착하는 능력이 강하고, 수익은 안정적이며, 정량 거래의 기본 전략 중 하나입니다. 변수 최적화 및 기능 확장으로도 많은 개선의 여지가 있으며, 깊이있는 연구를 할 가치가 있습니다.
/*backtest
start: 2022-12-04 00:00:00
end: 2023-12-10 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/
// © byee322
/// This strategy uses the EMA to generate buy and sell signals with a 1.5x ATR stop loss
//@version=5
strategy("EMA Strategy with ATR Stop Loss", overlay=true)
// Define the EMA lengths as input parameters
emaLength1 = input(13, "EMA Length 1")
emaLength2 = input(48, "EMA Length 2")
// Define the moving averages
ema1 = ta.ema(close, emaLength1)
ema2 = ta.ema(close, emaLength2)
// Buy signal: EMA 1 crosses above EMA 2
buy = ta.crossover(ema1, ema2)
// Sell signal: EMA 1 crosses below EMA 2
sell = ta.crossunder(ema1, ema2)
// Define the state variable
state = 0
state := buy ? 1 : sell ? -1 : nz(state[1])
// Change the color of the candles
color = state == 1 ? color.green : state == -1 ? color.red : na
// Plot the colored candles
plotcandle(open, high, low, close, color=color)
// Plot the signals on the chart with text labels
plotshape(buy, style=shape.triangleup, color=color.new(color.green, 50), location=location.belowbar, text="Buy")
plotshape(sell, style=shape.triangledown, color=color.new(color.red, 50), location=location.abovebar, text="Sell")
// Calculate the ATR
atrVal = ta.atr(14)
// Calculate the stop loss level for buy
stopLossBuy = buy ? close[1] - 1.5 * atrVal : na
// Calculate the stop loss level for sell
stopLossSell = sell ? close[1] + 1.5 * atrVal : na
// Plot the stop loss level for buy
plot(stopLossBuy, color=color.new(color.green, 50), linewidth=3)
// Plot the stop loss level for sell
plot(stopLossSell, color=color.new(color.red, 50), linewidth=3)
if buy
strategy.entry("Enter Long", strategy.long)
else if sell
strategy.entry("Enter Short", strategy.short)