
Chiến lược này kết hợp các ưu điểm của đường trung bình di chuyển Hull và đường trung bình di chuyển T3 để thiết kế một chiến lược giao dịch xuyên thị trường. Chiến lược này có thể được sử dụng cho cả giao dịch đường ngắn và theo dõi xu hướng đường dài và trung bình.
Chiến lược này chủ yếu dựa trên tính toán của trung bình di chuyển Hull và trung bình di chuyển T3.
Hull Moving Average (HMA) có thể làm giảm hiệu quả tiếng ồn thị trường và hiển thị đường cong trơn của xu hướng giá bằng cách sử dụng phương pháp tính toán lặp đi lặp lại của đường trung bình di chuyển có trọng lượng. Nó nhạy cảm hơn với biến động giá so với đường trung bình di chuyển đơn giản và đường trung bình di chuyển chỉ số, đồng thời có thể ngăn chặn hiệu quả các đột phá giả.
T3 Moving Average có thể làm cho moving average gần với giá hơn bằng cách điều chỉnh một số siêu tham số, đồng thời giảm hiệu ứng trì trệ. Nó có thể phản ứng nhanh hơn với sự thay đổi giá bằng cách tính toán chỉ số một cách mượt mà nhiều lần.
Chiến lược này tính trung bình của cả hai, làm chỉ số giao dịch chính. Thời gian nhập vào được xác định dựa trên hướng của đường trung bình: Nếu đường trung bình của chu kỳ hiện tại cao hơn chu kỳ trước, thì đó là tín hiệu nhập vào nhiều đầu; Nếu đường trung bình của chu kỳ hiện tại thấp hơn chu kỳ trước, thì đó là tín hiệu nhập vào đầu trống.
Đối với quy tắc thoát, nếu giá vượt qua điểm dừng lỗ hoặc đạt điểm dừng, hãy thoát; Nếu hướng đường trung bình thay đổi, hãy thực hiện hành động thoát.
Chiến lược này kết hợp các ưu điểm của đường trung bình di chuyển Hull và đường trung bình di chuyển T3 để tạo ra một chỉ số tổng hợp. Thứ hai, chiến lược này có thể áp dụng cho cả giao dịch đường ngắn và đường dài trung bình. Bằng cách điều chỉnh các tham số tính toán chu kỳ, bạn có thể điều chỉnh chu kỳ giao dịch phù hợp một cách linh hoạt.
Chiến lược này chủ yếu dựa vào chỉ số đường trung bình, có thể tạo ra nhiều tín hiệu giả trong xu hướng dao động. Ngoài ra, đường trung bình có một số độ trễ và có thể bỏ lỡ điểm vào tốt nhất của biến động giá. Việc thiết lập điểm dừng lỗ cần thận trọng, tránh quá thoải mái hoặc quá khẩn cấp. Cuối cùng, các tham số tối ưu hóa cần được kiểm tra với các loại tiền tệ và chu kỳ giao dịch khác nhau và không thể được sử dụng trực tiếp.
Bạn có thể xem xét thêm các chỉ số phụ trợ khác, chẳng hạn như chỉ số mạnh yếu, chỉ số biến động, v.v., để xác minh tín hiệu đồng nhất, lọc tín hiệu giả. Bạn có thể thử nghiệm các kết hợp và thuật toán cân nặng khác nhau để tối ưu hóa hiệu quả của tín hiệu đồng nhất. Bạn có thể thêm các rủi ro quản lý động tự điều chỉnh để dừng lỗ và dừng theo dõi.
Chiến lược này tích hợp các lợi thế của đường trung bình di chuyển Hull và đường trung bình di chuyển T3 để tạo thành một chỉ số tổng hợp để đánh giá xu hướng. Bằng cách tối ưu hóa tham số, chiến lược có thể được áp dụng linh hoạt cho các chu kỳ giao dịch khác nhau. Chiến lược có một số lợi thế, nhưng cũng có những vấn đề như bị tụt hậu, tạo ra tín hiệu giả. Bằng cách thêm các chỉ số phụ trợ khác, tham số tối ưu hóa và các phương tiện dừng lỗ động, chiến lược có thể được tối ưu hóa liên tục để đạt được hiệu quả tốt hơn.
/*backtest
start: 2023-09-23 00:00:00
end: 2023-10-23 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/
// © exlux99
//@version=4
strategy(title="Swing HULL + T3 avg", shorttitle="Swing HULL T3 AVG", overlay=true)
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 = 2000, title = "From Year", minval = 1970)
//monday and session
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
////////////////////////////GENERAL INPUTS//////////////////////////////////////
length_Ma= input(defval=50, title="Length MAs", minval=1)
//==========HMA
getHULLMA(src, len) =>
hullma = wma(2*wma(src, len/2)-wma(src, len), round(sqrt(len)))
hullma
//==========T3
getT3(src, len, vFactor) =>
ema1 = ema(src, len)
ema2 = ema(ema1,len)
ema3 = ema(ema2,len)
ema4 = ema(ema3,len)
ema5 = ema(ema4,len)
ema6 = ema(ema5,len)
c1 = -1 * pow(vFactor,3)
c2 = 3*pow(vFactor,2) + 3*pow(vFactor,3)
c3 = -6*pow(vFactor,2) - 3*vFactor - 3*pow(vFactor,3)
c4 = 1 + 3*vFactor + pow(vFactor,3) + 3*pow(vFactor,2)
T3 = c1*ema6 + c2*ema5 + c3*ema4 + c4*ema3
T3
hullma = getHULLMA(close,length_Ma)
t3 = getT3(close,length_Ma,0.7)
avg = (hullma+t3) /2
////////////////////////////PLOTTING////////////////////////////////////////////
colorado = avg > avg[1]? color.green : color.red
plot(avg , title="avg", color=colorado, linewidth = 4)
long=avg>avg[1]
short=avg<avg[1]
tplong=input(0.08, title="TP Long", step=0.01)
sllong=input(1.0, title="SL Long", step=0.01)
tpshort=input(0.03, title="TP Short", step=0.01)
slshort=input(0.06, title="SL Short", step=0.01)
if(time_cond)
strategy.entry("long",1,when=long)
strategy.exit("closelong", "long" , profit = close * tplong / syminfo.mintick, loss = close * sllong / syminfo.mintick, alert_message = "closelong")
strategy.entry("short",0,when=short)
strategy.exit("closeshort", "short" , profit = close * tpshort / syminfo.mintick, loss = close * slshort / syminfo.mintick, alert_message = "closeshort")