Chiến lược đảo ngược xu hướng trung bình động kép


Ngày tạo: 2024-01-08 11:01:11 sửa đổi lần cuối: 2024-01-08 11:01:11
sao chép: 0 Số nhấp chuột: 659
1
tập trung vào
1617
Người theo dõi

Chiến lược đảo ngược xu hướng trung bình động kép

Tổng quan

Chiến lược đảo ngược xu hướng trung bình di chuyển kép là một chiến lược được sử dụng chủ yếu cho giao dịch trung hạn trên thị trường ngoại hối. Chiến lược này sử dụng trung bình di chuyển của hai chu kỳ khác nhau để tạo ra tín hiệu giao dịch.

Nguyên tắc chiến lược

Chiến lược này sử dụng các trung bình di chuyển trong hai chu kỳ thời gian 1 giờ và 1 ngày. Một chu kỳ di chuyển trong 1 giờ phản ứng với sự thay đổi giá nhạy cảm hơn, có thể được sử dụng như một trung bình di chuyển nhanh; Một chu kỳ di chuyển trong 1 ngày phản ứng chậm hơn với sự thay đổi giá, có thể được sử dụng như một trung bình di chuyển chậm.

Theo lý thuyết giao dịch đảo ngược, giá thường không tăng hoặc giảm đơn lẻ, và khi có đột phá hoặc hỗ trợ quan trọng và kháng cự, rất có thể là thời điểm giá cổ phiếu đảo ngược. Vì vậy, chiến lược này sử dụng tín hiệu đảo ngược hai đường trung bình di chuyển để nắm bắt cơ hội đảo ngược.

Chiến lược này cũng đặt ra các điều kiện lọc thời gian và ngày giao dịch, giao dịch chỉ được thực hiện trong phạm vi ngày và trong thời gian giao dịch được đặt ra, tránh giao dịch trong thời gian không phù hợp.

Phân tích lợi thế

Chiến lược đảo ngược xu hướng của hai đường trung bình di chuyển có những lợi thế sau:

  1. Chiến lược đảo ngược có lợi thế là có nhiều chỗ để kiếm lợi nhuận. Giao dịch đảo ngược có thể kiếm được lợi nhuận cao hơn trong các trường hợp có biến động giá cao bằng cách thực hiện hoạt động đảo ngược tại các điểm quan trọng.

  2. Sử dụng phương tiện di chuyển kép để lọc các tín hiệu, tránh các tín hiệu giả. Chỉ số đơn dễ tạo ra tín hiệu giả, trong khi kết hợp hai chỉ số có thể nâng cao độ tin cậy của tín hiệu, lọc ra một số tín hiệu giả, làm cho cơ hội giao dịch đáng tin cậy hơn.

  3. Thiết lập thời gian giao dịch và ngày điều kiện, tránh thời gian không hoạt động của thị trường, tránh bị mắc kẹt. Chỉ giao dịch trong thời gian giao dịch và ngày được thiết lập, có thể tránh thời gian biến động mạnh của giá, tránh bị cản trở giao dịch.

  4. Chiến lược đảo ngược phù hợp với giao dịch trung hạn. So với giao dịch tần suất cao, chiến lược giao dịch trung hạn ổn định hơn, tránh mua và bán quá thường xuyên.

  5. Kiểm soát rút tiền tối đa có lợi cho quản lý tiền. Thiết lập tỷ lệ rút tiền tối đa có thể kiểm soát tốt rủi ro qua đêm và tránh mất tiền đáng kể.

Phân tích rủi ro

Chiến lược đảo ngược xu hướng của đường trung bình di chuyển đôi cũng có những rủi ro sau:

  1. Tín hiệu đảo ngược có thể bị hỏng dẫn đến tổn thất. Tín hiệu đảo ngược giá không phải lúc nào cũng đáng tin cậy, và sẽ có nguy cơ thua lỗ khi giá tiếp tục di chuyển mà không đảo ngược. Bạn có thể đặt lệnh dừng để kiểm soát tổn thất.

  2. Sự lệch hướng dẫn đến tổn thất. Khi hai đường trung bình di chuyển đã tách biệt rõ ràng, có thể có nguy cơ bị tổn thất. Bạn có thể xác định thời gian đảo ngược bằng cách quan sát khoảng cách giữa các đường trung bình di chuyển.

  3. Nếu thiết lập thời gian giao dịch không đúng cách, bạn có thể bỏ lỡ cơ hội. Nếu thiết lập thời gian giao dịch quá nghiêm ngặt, bạn có thể bỏ lỡ một số cơ hội giao dịch.

  4. Sau khi đảo ngược, không thể dừng lỗ và mở rộng thua lỗ kịp thời. Khi giá tiếp tục chạy theo xu hướng ban đầu sau khi đảo ngược, phải dừng lỗ kịp thời để kiểm soát lỗ.

Hướng tối ưu hóa

Chiến lược đảo ngược xu hướng của đường trung bình di chuyển đôi cũng có thể được tối ưu hóa theo các cách sau:

  1. Kiểm tra các kết hợp của các chỉ số nhiều hơn, tìm kiếm tín hiệu giao dịch tốt hơn. Các chỉ số khác như MACD, KDJ có thể được kiểm tra kết hợp với đường trung bình di chuyển kép, tăng độ chính xác của tín hiệu.

  2. Tối ưu hóa các tham số chu kỳ của trung bình di chuyển, tìm tham số tối ưu. Số lượng chu kỳ tối ưu có thể được xác định bằng cách đo lại các tham số có chiều dài khác nhau của trung bình di chuyển.

  3. Mở rộng hoặc rút ngắn thời gian giao dịch để tìm thời gian giao dịch tốt nhất. Kiểm tra hiệu quả của việc điều chỉnh thời gian giao dịch theo đặc điểm của các giống khác nhau.

  4. Thêm các điều kiện lọc xu hướng để tránh lệch. Bạn có thể thêm các chỉ số như ADX để đánh giá xu hướng mạnh hoặc yếu, tránh đảo ngược khi không có xu hướng rõ ràng.

  5. Thêm mô hình học máy để kiểm tra tín hiệu. Mô hình có thể được đào tạo để đánh giá độ tin cậy của tín hiệu đảo ngược và lọc ra một số tín hiệu chất lượng thấp.

Tóm tắt

Chiến lược đảo ngược xu hướng hai trung bình di chuyển, một chiến lược phù hợp cho giao dịch forex trung hạn. Nó sử dụng trung bình di chuyển nhanh và trung bình di chuyển chậm để tạo ra tín hiệu đảo ngược, hoạt động ngược tại các điểm quan trọng của thị trường, có lợi thế lớn. Đồng thời, nó cũng sử dụng thời gian giao dịch và thiết lập rút lui tối đa để kiểm soát rủi ro.

Mã nguồn chiến lược
/*backtest
start: 2023-12-08 00:00:00
end: 2024-01-07 00:00:00
period: 2h
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/
// © SoftKill21

//@version=4
strategy("gbpnzd 1h", overlay=true)

src = close
useCurrentRes = input(true, title="Use Current Chart Resolution?")
resCustom = input(title="Use Different Timeframe? Uncheck Box Above", type=input.resolution, defval="60")
len = input(28, title="Moving Average Length - LookBack Period")
//periodT3 = input(defval=7, title="Tilson T3 Period", minval=1) 
factorT3 = input(defval=7, title="Tilson T3 Factor - *.10 - so 7 = .7 etc.", minval=0) 
atype = input(2,minval=1,maxval=8,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA, 5=VWMA, 6=RMA, 7=TEMA, 8=Tilson T3")

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 = 2020, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true

res = useCurrentRes ? timeframe.period : resCustom
resCustom2 = input(title="plm", type=input.resolution, defval="D")
res2 = resCustom2
//hull ma definition
hullma = wma(2*wma(src, len/2)-wma(src, len), round(sqrt(len)))
//TEMA definition
ema1 = ema(src, len)
ema2 = ema(ema1, len)
ema3 = ema(ema2, len)
tema = 3 * (ema1 - ema2) + ema3

//Tilson T3
factor = factorT3 *.10
gd(src, len, factor) => ema(src, len) * (1 + factor) - ema(ema(src, len), len) * factor 
t3(src, len, factor) => gd(gd(gd(src, len, factor), len, factor), len, factor) 
tilT3 = t3(src, len, factor) 
 

avg = atype == 1 ? sma(src,len) : atype == 2 ? ema(src,len) : atype == 3 ? wma(src,len) : atype == 4 ? hullma : atype == 5 ? vwma(src, len) : atype == 6 ? rma(src,len) : atype == 7 ? 3 * (ema1 - ema2) + ema3 : tilT3

out = avg 

ema20 = security(syminfo.tickerid, res, out)



plot3 = security(syminfo.tickerid, res2, ema20)

plot33 = security(syminfo.tickerid, res, ema20)

plot(plot3,linewidth=2,color=color.red) 
plot(plot33,linewidth=2,color=color.white) 

// longC = crossover(close[2], plot3) and close[1] > close[2] and close > close[1]
// shortc = crossunder(close[2],plot3)  and close[1] < close[2] and close < close[1]

volumeMA=input(24)
ema_1 = ema(volume, volumeMA)

timeinrange(res, sess) => time(res, sess) != 0
//entrytime = timeinrange(timeframe.period, "0900-0915")

myspecifictradingtimes = input('0900-2300', type=input.session, title="My Defined Hours")


entrytime = time(timeframe.period, myspecifictradingtimes) != 0

longC = crossover(plot33,plot3)  and time_cond and entrytime
shortc = crossunder(plot33,plot3) and time_cond and entrytime

// exitlong = crossunder(plot33,plot3)
// exitshort = crossover(plot33,plot3)

distanta=input(1.0025)
exitshort = plot33/plot3 > distanta
exitlong  = plot3/plot33 > distanta

inverse = input(true)
exit = input(false)
if(inverse==false)

    strategy.entry("long",1,when=longC)
    strategy.entry("short",0,when=shortc)
if(inverse)
    strategy.entry("long",1,when=shortc)
    strategy.entry("short",0,when=longC)

if(exit)
    strategy.close("long",when=exitlong)
    strategy.close("short",when=exitshort)

// if(dayofweek==dayofweek.friday)
//     strategy.close_all()

// risk = input(25)
// strategy.risk.max_intraday_loss(risk, strategy.percent_of_equity)