Chiến lược này sử dụng nguyên tắc chéo trung bình di chuyển kép kết hợp với chỉ số theo dõi xu hướng để xác định và theo dõi xu hướng. Ý tưởng chính là mua dài khi trung bình di chuyển ngắn hạn vượt quá trung bình di chuyển dài hạn và mua ngắn khi trung bình di chuyển ngắn hạn vượt dưới trung bình di chuyển dài hạn.
Chiến lược chủ yếu bao gồm một hệ thống chéo trung bình động kép và một hệ thống theo dõi xu hướng.
Hệ thống chéo trung bình động kép chứa EMA1 nhanh và EMA2 chậm. Thời gian mặc định là 10 ngày cho EMA1 và 20 ngày cho EMA2. Một tín hiệu mua được tạo ra khi EMA1 vượt qua trên EMA2. Một tín hiệu bán được tạo ra khi EMA1 vượt qua dưới EMA2.
EMA 100 ngày (EMA100) được thêm vào để xác định hướng xu hướng tổng thể. Các tín hiệu mua chỉ được tạo ra khi giá có xu hướng tăng (giá trên EMA 100 ngày). Các tín hiệu bán chỉ được tạo ra khi giá có xu hướng giảm (giá dưới EMA 100 ngày). Điều này lọc ra hầu hết các tình huống đột phá sai.
Mũi tên mua và bán cũng được vẽ trên nến để hiển thị trực quan các tín hiệu giao dịch.
Hệ thống theo dõi xu hướng sử dụng đường ngày trong ngày và chu kỳ để xác nhận hướng xu hướng một lần nữa.
Các tín hiệu giao dịch chỉ được tạo ra khi các phán đoán trong ngày và chu kỳ đồng ý. Điều này tiếp tục lọc hầu hết tiếng ồn trong các hướng xu hướng không chính.
Ưu điểm lớn nhất của chiến lược này là tích hợp cả hệ thống theo dõi xu hướng và hệ thống chéo trung bình động, có hiệu quả lọc các tín hiệu sai và giữ cho các mức rút trong mức chấp nhận được.
Cụ thể, những lợi thế của hệ thống chéo trung bình động kép là:
Logic đơn giản và dễ hiểu, thích hợp cho người mới bắt đầu.
Theo xu hướng, tránh giao dịch chống lại xu hướng.
Có thể tùy chỉnh thời gian EMA nhanh và chậm, thích nghi với các chu kỳ khác nhau.
Lợi nhuận mạnh trong các xu hướng chính.
Việc thêm EMA100 có những lợi thế sau:
Tránh giao dịch chống lại xu hướng, giảm lỗ.
Theo xu hướng, giữ cho việc rút tiền có thể kiểm soát được.
Hệ thống theo dõi xu hướng có những ưu điểm sau:
Phân tích nhiều khung thời gian, tránh tiếng ồn từ một giai đoạn duy nhất.
Đảm bảo sự phù hợp với hướng xu hướng chính, giảm rút tiền.
Heikin-Ashi làm mịn tiếng ồn, chỉ nắm bắt xu hướng.
Một số rủi ro cần lưu ý cho chiến lược này:
Crossover thường xuyên và chi phí giao dịch bổ sung trong quá trình củng cố kéo dài.
Các tín hiệu chậm trễ, thiếu các giai đoạn xu hướng đầu tiên.
Mất rất nhiều khi xu hướng lớn đảo ngược.
Hiệu suất phụ thuộc vào tối ưu hóa tham số.
Giải pháp:
Giảm tần suất giao dịch trong quá trình hợp nhất.
Giảm thời gian EMA để có được tín hiệu xu hướng sớm hơn.
Sử dụng stop loss để kiểm soát single loss.
Tối ưu hóa các thông số cho các sản phẩm và điều kiện thị trường khác nhau.
Chiến lược này có thể được tối ưu hóa trong các lĩnh vực sau:
Tối ưu hóa thời gian EMA. Kiểm tra nhiều kết hợp hơn để tìm thời gian tối ưu.
Thêm thêm các phán quyết về khung thời gian, ví dụ như các dòng hàng tháng hoặc hàng quý.
Kết hợp các cơ chế dừng lỗ như chuyển động hoặc dừng theo cấp số nhân.
Kết hợp với các chỉ số khối lượng như On Balance Volume.
Cải thiện thời gian nhập cảnh bằng cách sử dụng các dao động nhanh hơn như MACD.
Tối ưu hóa tham số cho nhiều sản phẩm và tài sản hơn.
Chiến lược này kết hợp các điểm mạnh của hệ thống chéo trung bình động kép và hệ thống theo dõi xu hướng, tránh những điểm yếu của các hệ thống duy nhất. Phân tích nhiều khung thời gian đảm bảo hướng giao dịch chính xác trong khi kiểm soát rút vốn là tuyệt vời.
/*backtest start: 2023-09-20 00:00:00 end: 2023-09-27 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/ // © askkuldeeprandhawa //@version=4 strategy("KSR Strategy", overlay=true) par1=input(10) par2=input(20) ema1=ema(close,par1) ema2=ema(close,par2) buy=ema1>ema2 sell=ema2<ema1 mycolor= iff(buy,color.green,iff(sell,color.blue,color.red)) barcolor(color=mycolor) ema100=ema(close,100) ibuy=crossover(ema1,ema2) iSell=crossunder(ema1,ema2) varp=tostring(close[1]) plotshape(ibuy, "Up Arrow", shape.triangleup, location.belowbar, color.green, 0, 0,"Buy" , color.green, true, size.tiny) plotshape(iSell, "Down Arrow", shape.triangledown, location.abovebar, color.red, 0, 0, "Sell", color.red, true, size.tiny) crossed =crossover(ema(close,par1), ema(close,par2)) // if crossed // l = label.new(bar_index, na, tostring(close), // color=color.green, // textcolor=color.white, // style=label.style_labelup, yloc=yloc.belowbar) crossed2 =crossunder(ema(close,par1), ema(close,par2)) // if crossed2 // l = label.new(bar_index, na, tostring(close), // color=color.red, // textcolor=color.white, // style=label.style_labeldown, yloc=yloc.abovebar) plot(ema(close,par1),"EMA Short",color=color.white) plot(ema(close,par2),"EMA Long",color=color.orange) longCondition = crossover(ema(close, par1), ema(close, par2)) if (longCondition) strategy.entry("My Long Entry Id", strategy.long) shortCondition = crossunder(ema(close, par1), ema(close, par2)) if (shortCondition) strategy.entry("My Short Entry Id", strategy.short) ma1_len = input(title="MA1", type=input.integer, defval=8, minval=1, maxval=100, step=1) ma2_len = input(title="MA2", type=input.integer, defval=12, minval=1, maxval=100, step=1) o = ema(open, ma1_len) c = ema(close, ma1_len) h = ema(high, ma1_len) l = ema(low, ma1_len) tim1=input('D',"Short Time") tim2=input('W',"Long Time") ema_p=input(title="EMA Period", type=input.integer, defval=16, minval=1, maxval=100, step=1) refma = ema(close, ema_p) plot(refma, title="EMA" , linewidth=1, color=close < refma ? color.orange : color.blue) ha_t = heikinashi(syminfo.tickerid) ha_o = security(ha_t, tim2, o) ha_c = security(ha_t, tim2, c) ha_h = security(ha_t, tim2, h) ha_l = security(ha_t, tim2, l) o2 = ema(ha_o, ma2_len) c2 = ema(ha_c, ma2_len) h2 = ema(ha_h, ma2_len) l2 = ema(ha_l, ma2_len) ha_col = ha_c > ha_o ? color.red : color.green plotshape(true, style=shape.circle, color=ha_c > ha_o ? color.green : color.red, location=location.bottom) ha_t1 = heikinashi(syminfo.tickerid) ha_o1 = security(ha_t1, tim1, o) ha_c1 = security(ha_t1, tim1, c) ha_h1 = security(ha_t1, tim1, h) ha_l1 = security(ha_t1, tim1, l) o3 = ema(ha_o1, ma2_len) c3 = ema(ha_c1, ma2_len) h3 = ema(ha_h1, ma2_len) l3 = ema(ha_l1, ma2_len) ha_col1 = ha_c1 > ha_o1 ? color.red : color.green plotshape(true, style=shape.circle, color=ha_c1 > ha_o1 ? color.green : color.red, location=location.top)