
Chiến lược vượt qua đường trung bình di chuyển kép là một chiến lược theo dõi xu hướng điển hình. Nó nắm bắt hướng và cường độ của xu hướng thị trường bằng cách tính toán đường trung bình di chuyển của hai chu kỳ khác nhau và sử dụng đường trung bình di chuyển của nó như một tín hiệu mua và bán.
Chiến lược này chủ yếu dựa trên hai đường trung bình di chuyển: đường trung bình di chuyển đầu tiên có chu kỳ ngắn hơn, có thể phản ứng nhanh hơn với sự thay đổi giá; đường trung bình di chuyển thứ hai có chu kỳ dài hơn, có thể lọc một số tiếng ồn. Khi đường trung bình di chuyển ngắn hạn vượt qua đường trung bình di chuyển dài hạn, nó được coi là tín hiệu mua; khi đường trung bình di chuyển ngắn hạn vượt qua đường trung bình di chuyển dài hạn, nó được coi là tín hiệu bán.
Cụ thể, chiến lược này tính toán đường trung bình di chuyển chỉ số 10 chu kỳ (price1) và đường trung bình di chuyển chỉ số 20 chu kỳ (price2). Nếu giá mở và giá đóng của dòng K hiện tại cao hơn hai đường trung bình di chuyển, sẽ tạo ra tín hiệu mua; Nếu giá mở và giá đóng của dòng K hiện tại thấp hơn hai đường trung bình di chuyển, sẽ tạo ra tín hiệu bán.
Bằng cách thiết kế như vậy, bạn có thể vào thị trường sớm hơn khi xu hướng bắt đầu hình thành và theo dõi xu hướng; Khi xu hướng đảo ngược, bạn cũng có thể thoát khỏi thị trường sớm hơn, kiểm soát rủi ro hiệu quả.
Chiến lược này là một chiến lược cơ bản để định lượng giao dịch. Tuy nhiên, chiến lược này cũng có một số rủi ro và cần được tối ưu hóa hơn nữa để thích ứng với môi trường thị trường khác nhau. Có không gian tối ưu hóa trong điều chỉnh tham số, cơ chế dừng lỗ, lọc tín hiệu, v.v., có thể làm cho chiến lược ổn định và đáng tin cậy hơn.
/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
//study(title="MA River CC v1", overlay = true)
strategy("MA River CC v1", overlay=true)
src = input(close, title="Source")
price = request.security(syminfo.tickerid, timeframe.period, src)
ma1 = input(10, title="1st MA Length")
type1 = input("EMA", "1st MA Type", options=["SMA", "EMA"])
ma2 = input(20, title="2nd MA Length")
type2 = input("EMA", "2nd MA Type", options=["SMA", "EMA"])
price1 = if (type1 == "SMA")
sma(price, ma1)
else
ema(price, ma1)
price2 = if (type2 == "SMA")
sma(price, ma2)
else
ema(price, ma2)
//plot(series=price, style=line, title="Price", color=black, linewidth=1, transp=0)
plot(series=price1, style=line, title="1st MA", color=blue, linewidth=2, transp=0)
plot(series=price2, style=line, title="2nd MA", color=green, linewidth=2, transp=0)
buy_entry = (open>price1 and open>price2) and (close>price1 and close>price2)
sell_entry = (open<price1 and open<price2) and (close<price1 and close<price2)
buy_close = sell_entry
sell_close = buy_entry
//longCondition = crossover(price1, price2)
if(buy_entry)
strategy.entry("Long", strategy.long)
if(sell_entry)
strategy.entry("Short", strategy.short)
strategy.close("Long" , when=buy_close)
strategy.close("Short",when=sell_close)