
Chiến lược giao dịch chuyển động trung bình vàng (đường dài) tạo ra tín hiệu mua và bán bằng cách tính toán chéo của đường nhanh EMA ((fastLength) và đường chậm EMA ((slowLength)). Khi đường nhanh đi qua đường chậm, tạo ra tín hiệu mua; khi đường nhanh đi qua đường dài, tạo ra tín hiệu bán. Chiến lược này đơn giản và thực tế, phù hợp với giao dịch đường ngắn.
Chiến lược này sử dụng hai đường trung bình di chuyển, đường nhanh và đường chậm. Các tham số đường nhanh EMAfastLength mặc định là đường 9 ngày, tham số đường chậm EMAAslowLength mặc định là đường 26 ngày.
Các tín hiệu giao dịch cụ thể và các quy tắc chiến lược như sau:
Vì vậy, chiến lược này là một chiến lược để thực hiện các hoạt động giao dịch khi hai đường trung bình di chuyển xảy ra và hai đường trung bình di chuyển xảy ra.
Đối với rủi ro, các tham số có thể được tối ưu hóa như chu kỳ trung bình di chuyển, loại giao dịch, tỷ lệ dừng lỗ, v.v., cần nhiều thử nghiệm để giảm rủi ro.
Chiến lược này có ý tưởng trung bình di chuyển đơn giản và thực tế, có thể được tối ưu hóa bằng cách:
Những thử nghiệm tối ưu này có thể cải thiện đáng kể hiệu quả chiến đấu và tính ổn định của chiến lược.
Chiến lược giao dịch đường trung bình di chuyển rất đơn giản, và ứng dụng thực tế cần phải được tối ưu hóa liên tục. Chiến lược này cung cấp logic tạo tín hiệu giao dịch và các quy tắc giao dịch cơ bản, trên cơ sở đó có thể được tối ưu hóa mạnh mẽ, làm cho nó trở thành một chiến lược định lượng thực tế. Ứng dụng đường trung bình di chuyển cũng cung cấp cho chúng tôi tư duy chiến lược, chúng tôi có thể đổi mới và cải tiến trên cơ sở này.
/*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)