
Chiến lược này được sử dụng để xác định xu hướng và theo dõi xu hướng bằng cách tính các loại đường trung bình khác nhau (SMA, EMA, HMA và VWMA) và tìm kiếm điểm giao nhau của chúng. Đường trung bình ngắn hơn tạo ra tín hiệu mua khi nó đi qua đường trung bình dài hơn từ phía dưới; và đường trung bình ngắn hơn tạo ra tín hiệu bán khi nó đi qua đường trung bình dài hơn từ phía trên xuống.
Chiến lược này chủ yếu đánh giá xu hướng thị trường bằng cách so sánh mối quan hệ giữa hai đường trung bình khác nhau. Cụ thể, thiết lập loại và độ dài của hai đường trung bình bằng các tham số đầu vào. Trong đó, đường trung bình đầu tiên có chiều dài dài hơn, đại diện cho xu hướng dài hạn; đường trung bình thứ hai có chiều dài ngắn hơn, đại diện cho xu hướng ngắn hạn hiện tại.
Khi đường trung bình ngắn hạn đi qua đường trung bình dài hạn từ phía dưới, đại diện cho xu hướng ngắn hạn trở nên mạnh hơn, giá cả đi vào xu hướng đi lên, do đó phát đi tín hiệu mua tại điểm giao thoa này. Ngược lại, khi đường trung bình ngắn hạn đi qua đường trung bình dài hạn từ phía trên, đại diện cho xu hướng ngắn hạn trở nên yếu hơn, giá cả đi vào xu hướng giảm, do đó phát đi tín hiệu bán tại điểm giao thoa này.
Theo dõi xu hướng của thị trường bằng cách sử dụng sự phán đoán chéo ngang này.
Phương pháp giải quyết rủi ro:
Chiến lược này dựa trên tư duy cổ điển của xu hướng chính của phán đoán chéo đồng nhất, ứng dụng linh hoạt thông qua sự kết hợp của các đường đồng nhất khác nhau. Logic của chiến lược đơn giản, dễ thực hiện, phù hợp với giao dịch tự động. Nhìn chung, chiến lược này có một số tính thực tế, nhưng cũng có một số không gian để cải tiến tối ưu hóa.
/*backtest
start: 2023-12-31 00:00:00
end: 2024-01-30 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
//study(title="MA Crossover Strategy", overlay = true)
strategy("MA Crossover Strategy", overlay=true)
src = input(close, title="Source")
price = request.security(syminfo.tickerid, timeframe.period, src)
ma1 = input(25, title="1st MA Length")
type1 = input("HMA", "1st MA Type", options=["SMA", "EMA", "HMA", "VWMA"])
ma2 = input(7, title="2nd MA Length")
type2 = input("HMA", "2nd MA Type", options=["SMA", "EMA", "HMA", "VWMA"])
f_hma(_src, _length)=>
_return = wma((2*wma(_src, _length/2))-wma(_src, _length), round(sqrt(_length)))
price1 = if (type1 == "SMA")
sma(price, ma1)
else
if (type1 == "EMA")
ema(price, ma1)
else
if (type1 == "VWMA")
vwma(price, ma1)
else
f_hma(price, ma1)
price2 = if (type2 == "SMA")
sma(price, ma2)
else
if (type2 == "EMA")
ema(price, ma2)
else
if (type2 == "VWMA")
vwma(price, ma2)
else
f_hma(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)
longCondition = crossover(price1, price2)
if (longCondition)
strategy.entry("Long", strategy.long)
shortCondition = crossunder(price1, price2)
if (shortCondition)
strategy.entry("Short", strategy.short)