
Đây là một chiến lược giao dịch định lượng dựa trên tín hiệu chéo hai đường cong. Chiến lược sử dụng hai đường trung bình di chuyển, một là đường tín hiệu chính và một là đường tín hiệu trơn.
Chiến lược sử dụng hai cấp tính toán trung bình di chuyển. Đầu tiên, tính toán một trung bình di chuyển cơ bản ((thời gian mặc định là 9) và sau đó xử lý bình quân này một lần nữa ((thời gian mặc định là 5). Chiến lược cung cấp nhiều phương pháp tính toán bình quân, bao gồm trung bình di chuyển đơn giản (SMA), trung bình di chuyển chỉ số (EMA), trung bình di chuyển phẳng (SMMA), trung bình di chuyển có trọng lượng (WMA) và trung bình di chuyển có trọng lượng (VWMA).
Đây là một phiên bản cải tiến của chiến lược theo dõi xu hướng cổ điển, tăng sự ổn định bằng cách thiết kế đường trung bình di chuyển hai lớp trong khi duy trì sự đơn giản của chiến lược. Chiến lược có khả năng mở rộng và linh hoạt tốt, có thể thích ứng với các môi trường thị trường khác nhau thông qua tối ưu hóa tham số và mở rộng chức năng. Tuy nhiên, người dùng cần chú ý đến việc kiểm soát chi phí giao dịch và quản lý rủi ro, nên kiểm tra lại đầy đủ trước khi giao dịch thực tế.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Moving Average 1.0 Strategy", overlay=true)
// Input for Moving Average Length
len = input.int(9, minval=1, title="Length")
src = input(close, title="Source")
offset = input.int(title="Offset", defval=0, minval=-500, maxval=500)
// Calculate the Moving Average
out = ta.sma(src, len)
// Plot the Moving Average
plot(out, color=color.blue, title="MA", offset=offset)
// Function to choose the type of moving average
ma(source, length, type) =>
switch type
"SMA" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA (RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
// Input for Smoothing Method and Length
typeMA = input.string(title="Method", defval="SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing")
smoothingLength = input.int(title="Smoothing Length", defval=5, minval=1, maxval=100, group="Smoothing")
// Calculate the Smoothing Line
smoothingLine = ma(out, smoothingLength, typeMA)
// Plot the Smoothing Line
plot(smoothingLine, title="Smoothing Line", color=color.rgb(120, 66, 134, 35), offset=offset)
// Strategy Logic
if (ta.crossover(close, smoothingLine))
strategy.entry("Buy", strategy.long)
if (ta.crossunder(close, smoothingLine))
strategy.entry("Sell", strategy.short)