
Chiến lược đa chiều đường trung bình di chuyển là một chiến lược theo dõi xu hướng xây dựng đa chiều thông qua nhiều đường trung bình di chuyển trong nhiều chu kỳ khác nhau và phá vỡ đa chiều như tín hiệu giao dịch. Chiến lược này có tính đến nhiều yếu tố chu kỳ thời gian, có thể lọc hiệu quả tiếng ồn thị trường và nắm bắt xu hướng chính.
Chiến lược này tạo ra một kênh đa chiều bằng cách nhập các đường trung bình EMA của các chu kỳ khác nhau, chẳng hạn như EMA chu kỳ 3, chu kỳ 7 và chu kỳ 13, và vẽ chúng trên đồ thị giá. Các tín hiệu đa chiều được tạo ra khi giá vượt qua nhiều đường trung bình EMA trên; các tín hiệu trống được tạo ra khi giá vượt qua nhiều đường trung bình EMA bên dưới. Điều này có thể loại trừ nhiều đột phá giả.
Trong mã thông qua close>ema1 and ema1>ema2 and ema2>ema3 xác định tín hiệu đeo lên, close
Ưu điểm lớn nhất của chiến lược này là có thể nắm bắt hiệu quả các hướng xu hướng chính, sử dụng nhiều đường trung bình di chuyển để xây dựng cơ chế lọc, tránh bị ảnh hưởng bởi tiếng ồn ngắn hạn của thị trường, giảm tín hiệu sai. Chấm dứt di động cho phép nó dừng lỗ kịp thời để bảo vệ lợi nhuận.
Rủi ro chính của chiến lược này là không thể xác định được điểm đảo chiều của xu hướng, có thể tạo ra lỗ thua lỗ khi xu hướng đảo ngược. Ngoài ra, thiết lập kết hợp đường trung bình không đúng cách cũng có thể dẫn đến tần suất giao dịch quá cao hoặc trì hoãn tín hiệu. Có thể giảm rủi ro bằng cách tối ưu hóa các kết hợp tham số đường trung bình, thêm các chỉ số khác để xác định sự đảo ngược, mở rộng phạm vi dừng lỗ.
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Tối ưu hóa các tham số chu kỳ của đường trung bình di chuyển để tìm các tham số kết hợp tốt nhất
Thêm các chỉ số tín hiệu đảo ngược như RSI, MACD, v.v. vào các điểm biến động xu hướng để ngăn chặn lỗ hổng kịp thời
Tối ưu hóa mức độ dừng và giá trị lệch của dừng di chuyển, giảm khả năng dừng bị kích hoạt
Tối ưu hóa cho các tham số khác nhau, cải thiện khả năng thích ứng của chiến lược
Chiến lược đa chiều đường trung bình di chuyển nói chung là một chiến lược theo dõi xu hướng đáng tin cậy và hiệu quả. Ưu điểm lớn nhất của nó là nắm bắt hướng xu hướng chính và có thể lọc tiếng ồn đáng kể.
/*backtest
start: 2023-09-30 00:00:00
end: 2023-10-30 00:00:00
period: 1h
basePeriod: 15m
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/
// © Crypto-Oli
//@version=4
strategy("BLANK Strategy + TSL", initial_capital=5000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, pyramiding=1, commission_value=0.075, overlay=true)
////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE
// From Date Inputs
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2019, title = "From Year", minval = 1970)
// To Date Inputs
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2020, title = "To Year", minval = 1970)
// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
////////////////////////////////////////////////////////////////////////////////
/// YOUR INPUTS BELOW - DELET EXAPLES ///
ema1=ema(close,input(3))
ema2=ema(close,input(7))
ema3=ema(close,input(13))
/// PLOTS IF YOU NEED BELOW - DELET EXAPLES ///
plot(ema1, "EMA1", color.yellow)
plot(ema2, "EMA2", color.white)
plot(ema3, "EMA3", color.blue)
/// YOUR CONDITIONS BELOW - DELET EXAPLES ///
longCondition = close>ema1 and ema1>ema2 and ema2>ema3 and time_cond
shortCondition = close<ema1 and ema1<ema2 and ema2<ema3 and time_cond
/// EXECUTION ///
if (longCondition)
strategy.entry("Long", strategy.long)
strategy.exit("Long Exit", "Long", trail_points = close * 0.05 / syminfo.mintick, trail_offset = close * 0.02 / syminfo.mintick)
if (shortCondition)
strategy.entry("Short", strategy.short)
strategy.exit("Short Exit", "Short", trail_points = close * 0.05 / syminfo.mintick, trail_offset = close * 0.02 / syminfo.mintick)