
Chiến lược này xác định xu hướng giá bằng cách tính toán chéo của hai đường trung bình và kết hợp với các giới hạn tham số nhất định để phát ra tín hiệu mua và bán. Chiến lược này có ba phần chính: một, xác định xu hướng giá bằng cách tính toán chéo của đường trung bình nhanh và đường trung bình chậm; hai, kết hợp với các giới hạn tham số nhất định để tránh giao dịch sai; ba, sử dụng dừng lỗ để kiểm soát rủi ro.
Cốt lõi của chiến lược này là tính toán đường trung bình nhanh và đường trung bình chậm. Các tham số đường trung bình nhanh là một nửa của chu kỳ đường trung bình, biến đổi giá phản ứng nhạy cảm hơn; Các tham số đường trung bình chậm là chu kỳ đường trung bình, biến đổi giá phản ứng ổn định hơn.
Ngoài ra, chiến lược cũng đặt một số tham số để tránh giao dịch sai. Nếu thiết lập ngưỡng quyết định, tín hiệu giao dịch sẽ chỉ được phát ra khi chênh lệch đường trung bình nhanh hơn một mức độ nhất định; tham số tin cậy được sử dụng để lọc biến động, tín hiệu chỉ được phát ra khi biến động giá đạt đến một mức độ nhất định.
Cuối cùng, chiến lược sử dụng dừng lỗ để kiểm soát rủi ro. Nếu openprofit nhỏ hơn điểm dừng lỗ, bạn sẽ rút khỏi vị trí, nếu vượt quá điểm dừng, bạn sẽ rút khỏi vị trí, điều này sẽ kiểm soát hiệu quả tổn thất đơn lẻ.
Ưu điểm lớn nhất của chiến lược này là kết hợp các chỉ số đường thẳng để xác định xu hướng giá và các đặc điểm dao động. Đường thẳng chéo để xác định xu hướng giá là phương pháp chỉ số kỹ thuật hiệu quả cổ điển, có thể nắm bắt xu hướng một cách chính xác sau khi tối ưu hóa các tham số; Chỉ số tín nhiệm dao động có thể lọc hiệu quả thị trường biến động và tránh giao dịch sai thường xuyên.
Ngoài ra, các thiết lập tham số như giá trị quyết định, giá trị dừng và giá trị dừng cũng có thể làm giảm đáng kể rủi ro giao dịch và tránh theo đuổi giá cao và giá thấp.
Rủi ro chính của chiến lược này là khả năng các chỉ số đường hai đường trung bình phát ra tín hiệu sai. Các đường trung bình nhanh và đường trung bình chậm đều là các đường trung bình di chuyển có trọng lượng, phản ứng chậm đối với sự kiện bất ngờ và có thể bỏ lỡ sự đảo ngược giá trong ngắn hạn.
Ngoài ra, việc thiết lập điểm dừng không đúng cũng làm tăng nguy cơ. Điểm dừng quá cao hoặc quá thấp có thể gây ra tổn thất nhiều hơn dự kiến. Điều này cần thiết để thiết lập các tham số hợp lý dựa trên các đặc điểm và tỷ lệ biến động của các giống khác nhau.
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 chu kỳ đường trung bình, thiết lập đường trung bình thích ứng để có thể mô hình tốt hơn các biến động giá trong các chu kỳ khác nhau;
Thiết lập cơ chế theo dõi động thái dừng lỗ bằng cách tính toán biến động trong thời gian thực, cho phép điểm dừng lỗ thay đổi động;
Thêm mô hình học máy để xác định xu hướng giá, sử dụng nhiều dữ liệu lịch sử hơn để xác định xu hướng giá hiện tại, giảm tín hiệu sai.
Chiến lược này nói chung là một chiến lược giao dịch xu hướng đơn giản và hiệu quả. Sử dụng xu hướng xác định chéo hai đường bằng nhau, thiết lập tham số để kiểm soát rủi ro, có thể cấu hình, phù hợp với giao dịch đa dạng. Nếu có thể đưa ra các biện pháp phán quyết thông minh hơn như học máy, hiệu quả tổng thể sẽ tốt hơn và đáng để nghiên cứu thêm.
/*backtest
start: 2023-12-03 00:00:00
end: 2024-01-02 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
// Any timeFrame ok but good on 15 minute & 60 minute , Ichimoku + Daily-Candle_cross(DT) + HULL-MA_cross + MacD combination 420 special blend
strategy("Trade Signal", shorttitle="Trade Alert", overlay=true )
keh=input(title="Double HullMA",defval=14, minval=1)
dt = input(defval=0.0010, title="Decision Threshold (0.001)", type=float, step=0.0001)
SL = input(defval=-10.00, title="Stop Loss in $", type=float, step=1)
TP = input(defval=100.00, title="Target Point in $", type=float, step=1)
ot=1
n2ma=2*wma(close,round(keh/2))
nma=wma(close,keh)
diff=n2ma-nma
sqn=round(sqrt(keh))
n2ma1=2*wma(close[1],round(keh/2))
nma1=wma(close[1],keh)
diff1=n2ma1-nma1
sqn1=round(sqrt(keh))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
b=n1>n2?lime:red
c=n1>n2?green:red
d=n1>n2?red:green
confidence=(request.security(syminfo.tickerid, '5', close[1])-request.security(syminfo.tickerid, '60', close[1]))/request.security(syminfo.tickerid, '60', close[1])
conversionPeriods = input(9, minval=1, title="Conversion Line Periods")
basePeriods = input(26, minval=1, title="Base Line Periods")
laggingSpan2Periods = input(52, minval=1, title="Lagging Span 2 Periods")
displacement = input(26, minval=1, title="Displacement")
donchian(len) => avg(lowest(len), highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)
LS=close, offset = -displacement
MACD_Length = input(9)
MACD_fastLength = input(12)
MACD_slowLength = input(26)
MACD = ema(close, MACD_fastLength) - ema(close, MACD_slowLength)
aMACD = ema(MACD, MACD_Length)
closelong = n1<n2 and close<n2 and confidence<dt or strategy.openprofit<SL or strategy.openprofit>TP
if (closelong)
strategy.close("Long")
closeshort = n1>n2 and close>n2 and confidence>dt or strategy.openprofit<SL or strategy.openprofit>TP
if (closeshort)
strategy.close("Short")
longCondition = n1>n2 and strategy.opentrades<ot and confidence>dt and close>n2 and leadLine1>leadLine2 and open<LS and MACD>aMACD
if (longCondition)
strategy.entry("Long",strategy.long)
shortCondition = n1<n2 and strategy.opentrades<ot and confidence<dt and close<n2 and leadLine1<leadLine2 and open>LS and MACD<aMACD
if (shortCondition)
strategy.entry("Short",strategy.short)
//alerts
alertcondition(closelong, title='Close Buy Position', message='Close Buy Position')
alertcondition(closeshort, title='Close Short Position', message='Close Short Position')
alertcondition(longCondition, title='Buy Signal', message='Buy Signal Alert')
alertcondition(shortCondition, title='Sell Signal', message='Sell Signal Alert')
//a1=plot(n1,color=c)
//a2=plot(n2,color=c)plot(cross(n1, n2) ? n1 : na, style = circles, color=b, linewidth = 4)
//plot(cross(n1, n2) ? n1 : na, style = line, color=d, linewidth = 4)
plot(conversionLine, color=#0496ff, title="Conversion Line")
plot(baseLine, color=#991515, title="Base Line")
plot(close, offset = -displacement, color=#459915, title="Lagging Span")
p1=plot (leadLine1, offset = displacement, color=green, title="Lead 1")
p2=plot (leadLine2, offset = displacement, color=red, title="Lead 2")
fill(p1, p2, color = leadLine1 > leadLine2 ? green : red)
// remove the "//" from before the plot script if want to see the indicators on chart