Chiến lược định lượng MACD Gradient


Ngày tạo: 2023-12-19 16:14:50 sửa đổi lần cuối: 2023-12-19 16:14:50
sao chép: 0 Số nhấp chuột: 713
1
tập trung vào
1621
Người theo dõi

Chiến lược định lượng MACD Gradient

Tổng quan

Chiến lược này cung cấp tín hiệu giao dịch bằng cách tính toán đường Heikin-Ashi, giá đường K mịn, kết hợp với MACD để thực hiện chiến lược giao dịch định lượng theo dõi xu hướng đường dài và đường trung.

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

  1. Tính toán giá mở, giá đóng, giá cao nhất, giá thấp nhất, vẽ đường Heikin-Ashi, phẳng đường K.

  2. Thiết lập các tham số MACD: đường nhanh 12, đường chậm 26, đường tín hiệu 9.

  3. Tính toán đường chậm DEA, đường nhanh DEA và chênh lệch MACD. Vẽ biểu đồ MACD theo hình cột.

  4. Khi MACD trên 0, làm nhiều hơn; khi MACD dưới 0, làm trống.

  5. Cài đặt các điều kiện lọc năm, tháng, ngày, chỉ giao dịch trong khoảng thời gian được chỉ định.

Phân tích lợi thế

  1. Heikin-Ashi có khả năng lọc thành công tiếng ồn thị trường và nhận biết xu hướng.

  2. MACD cung cấp các điểm mua và bán xu hướng rõ ràng hơn.

  3. Kết hợp Heikin-Ashi và MACD, có thể cải thiện chất lượng giao dịch và tăng lợi nhuận cho các giao dịch.

  4. Cài đặt các điều kiện lọc thời gian để xác định thời gian giao dịch tốt nhất dựa trên dữ liệu lịch sử để tăng tỷ lệ lợi nhuận.

Phân tích rủi ro

  1. Nếu xu hướng thay đổi, có thể sẽ có những tổn thất lớn hơn.

  2. Các tham số MACD được thiết lập không đúng, có thể tạo ra quá nhiều tín hiệu không hiệu quả.

  3. Điều kiện lọc thời gian quá cứng nhắc, có thể làm mất cơ hội giao dịch tốt hơn.

Phản ứng:

  1. Thiết lập Stop Loss Stop, kiểm soát lỗ đơn.

  2. Tối ưu hóa các tham số MACD để xác định sự kết hợp tham số tốt nhất.

  3. Kết hợp với các chỉ số khác để đánh giá xu hướng địa phương.

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

  1. Kiểm tra các kết hợp tham số khác nhau để tìm ra tham số tối ưu.

  2. Thêm các cơ chế dừng lỗ, chẳng hạn như để lại / theo dõi dừng lỗ.

  3. Các chỉ số như EMA, KDJ và các chỉ số khác đã đánh giá điểm đảo ngược.

  4. Thêm chỉ số năng lượng, tránh phân kỳ năng lượng.

Tóm tắt

Chiến lược này thực hiện một chiến lược định lượng dựa trên việc theo dõi xu hướng bằng cách tính toán giá trơn đường Heikin-Ashi, kết hợp với MACD Tradingview để xác định hướng xu hướng và điểm đầu vào. So với chiến lược MACD thông thường, nó làm mịn đường cong giá, lọc một phần tiếng ồn và có thể xác định hướng xu hướng rõ ràng hơn. Bằng cách tối ưu hóa tham số, cơ chế dừng lỗ và kết hợp các chỉ số khác, bạn có thể tăng thêm sự ổn định và khả năng sinh lợi của chiến lược.

Mã nguồn chiến lược
/*backtest
start: 2023-11-18 00:00:00
end: 2023-12-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("MACD ASHI BARS .v1 ", overlay=false,default_qty_type = strategy.percent_of_equity, default_qty_value = 100,commission_type=strategy.commission.percent,commission_value=0.1,slippage=1)

// Calculation HA Values 
haopen  = 0.0
haclose = (open + high + low + close) / 4
haopen := na(haopen[1]) ? (open + close) / 2 : (haopen[1] + haclose[1]) / 2
hahigh  = max(high, max(haopen, haclose))
halow   = min(low,  min(haopen, haclose))

// HA colors
hacolor = haclose > haopen ? color.green : color.red
src=haclose



fastmacd = input(12,title='MACD Fast  Line Length')
slowmacd = input(26,title='MACD Slow Line Length')
signalmacd = input(9,title='Signal Line Length')

macdslowline1 = sma(src,slowmacd)
macdslowline2 = sma(macdslowline1,slowmacd)
DEMAslow = ((2 * macdslowline1) - macdslowline2 )

macdfastline1 = sma(src,fastmacd)
macdfastline2 = sma(macdfastline1,fastmacd)
DEMAfast = ((2 * macdfastline1) - macdfastline2)

MACDLine = (DEMAfast - DEMAslow)

SignalLine = sma(MACDLine, signalmacd)

delta = MACDLine-SignalLine




swap1 = delta>0?color.green:color.red



plot(delta,color=swap1,style=plot.style_columns,title='Histo',histbase=0,transp=20)
p1 = plot(MACDLine,color=color.blue,title='MACD Line')
p2 = plot(SignalLine,color=color.red,title='Signal')
fill(p1, p2, color=color.blue)
hline(0)



yearfrom = input(2020)
yearuntil =input(2042)
monthfrom =input(1)
monthuntil =input(12)
dayfrom=input(1)
dayuntil=input(31)







if ( crossover(delta,0)  and   year >= yearfrom and year <= yearuntil and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil) 
    strategy.entry("MMAL", strategy.long, stop=close, oca_name="TREND",  comment="AL")
    
else
    strategy.cancel(id="MMAL")


if (  crossunder(delta,0) and  year >= yearfrom and year <= yearuntil and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil ) 

    strategy.entry("MMSAT", strategy.short,stop=close, oca_name="TREND",  comment="SAT")
else
    strategy.cancel(id="MMSAT")