Chiến lược dài hạn dựa trên MACD


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

Chiến lược dài hạn dựa trên MACD

Tổng quan

Chiến lược này dựa trên chỉ số MACD và đường dài và đường dài, thực hiện giao dịch đường dài của cặp tiền tệ. Khi đường MACD đi qua đường dài, bạn sẽ mở vị trí và khi đường MACD đi qua đường ngang, bạn sẽ đặt vị trí. Đồng thời, bạn cũng có thể thiết lập chiến lược dừng lỗ.

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

Chiến lược này sử dụng đường nhanh và đường chậm của chỉ số MACD. Các tham số đường nhanh là 12 ngày EMA, tham số đường chậm là 26 ngày EMA. Sự chênh lệch giữa hai đường trung bình là biểu đồ trụ MACD. Ngoài ra, tính toán 9 ngày EMA làm đường tín hiệu.

Cụ thể, chiến lược đầu tiên tính toán đường nhanh, đường chậm và đường tín hiệu của MACD. Sau đó, đặt đường dài là -0.04 và đường ngang là 0.015. Nếu MACD hiện tại lớn hơn đường dài, hãy thực hiện thêm; Nếu MACD hiện tại nhỏ hơn đường ngang, hãy thực hiện thêm. Ngoài ra, đặt đường dừng là 95% giá mở vị trí.

Phân tích lợi thế

Chiến lược này có những ưu điểm sau:

  1. Sử dụng chỉ số MACD để đánh giá xu hướng thị trường, có độ chính xác cao
  2. Đồng thời sử dụng dây dài và dây khoan lọc kép để tránh tín hiệu sai
  3. Thiết lập chiến lược dừng lỗ và kiểm soát rủi ro hiệu quả
  4. Đơn giản, rõ ràng, logic, dễ hiểu và dễ thực hiện
  5. Chỉ cần chỉ số MACD, sử dụng ít tài nguyên

Phân tích rủi ro

Chiến lược này cũng có những rủi ro:

  1. Chỉ số MACD có một chút chậm trễ, có thể bỏ lỡ cơ hội ngắn
  2. Cài đặt dừng lỗ có thể quá bảo thủ và không thể liên tục theo dõi xu hướng dài
  3. Cài đặt tham số cần được kiểm tra và tối ưu hóa nhiều lần, nếu không có thể quá phù hợp
  4. Chỉ áp dụng cho các đồng tiền khác, hiệu quả của các đồng tiền khác bị nghi ngờ

Có thể tối ưu hóa và cải thiện bằng cách điều chỉnh các tham số phù hợp, kết hợp các chỉ số khác.

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

Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:

  1. Kiểm tra các kết hợp các tham số MACD khác nhau để tìm các tham số tốt hơn

Bạn có thể thử các đường dây nhanh, chậm, tín hiệu với các chiều dài khác nhau để tìm ra sự kết hợp phù hợp nhất.

  1. Thay thế các chỉ số khác

Các chỉ số như RSI, KD có thể mang lại hiệu quả khác nhau

  1. Tối ưu hóa các tham số đường dài và đường bọc

Có thể tìm các tham số long position phù hợp hơn bằng cách lặp lại dữ liệu.

  1. Điều chỉnh chiến lược dừng lỗ

Bạn có thể xem xét các phương pháp như trailing stop để dừng lỗ theo dõi động hơn.

  1. Thử nghiệm các cặp tiền tệ khác nhau

Sử dụng chiến lược này cho các cặp tiền tệ khác để xem xét hiệu quả

Tóm tắt

Chiến lược này nói chung là một chiến lược giao dịch đường dài rất đơn giản và trực quan. Sử dụng chỉ số MACD để đánh giá tình hình, và đặt điều kiện lọc kép để giảm giao dịch sai. Đồng thời, thiết lập dừng lỗ để kiểm soát rủi ro. Chiến lược có logic rõ ràng, sử dụng ít tài nguyên, dễ hiểu và thực hiện, đáng được đề xuất.

Mã nguồn chiến lược
/*backtest
start: 2024-01-04 00:00:00
end: 2024-01-11 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(shorttitle = "GBPJPY MACD", title = "GBPJPY MACD")
fastMA = input(title="Fast moving average",  defval = 12, minval = 7)
slowMA = input(title="Slow moving average",  defval = 26, minval = 7)
lastColor = yellow
[currMacd,_,_] = macd(close[0], fastMA, slowMA, 9)
[prevMacd,_,_] = macd(close[1], fastMA, slowMA, 9)
plotColor = currMacd > 0 ? currMacd > prevMacd ? lime : green : currMacd < prevMacd ? maroon : red
plot(currMacd, style = histogram, color = plotColor, linewidth = 3)
plot(0, title = "Zero line", linewidth = 1, color = gray)

//MACD
// Getting inputs
fast_length = input(title="Fast Length",  defval=12)
slow_length = input(title="Slow Length",  defval=26)
src = input(title="Source",  defval=close)
signal_length = input(title="Signal Smoothing",  minval = 1, maxval = 50, defval =9)
sma_source = input(title="Simple MA(Oscillator)", type=bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=bool, defval=false)

// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00

// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal

//plot(hist, title="Histogram", style=columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
plot(macd, title="MACD", color=col_macd, transp=0)
plot(signal, title="Signal", color=col_signal, transp=0)
///END OF MACD

//Long and Close Long Lines
linebuy = input(title="Enter Long", type=float, defval=-0.04)
linesell = input(title="Close Long", type=float, defval=0.015)

//Plot Long and Close Long Lines
plot(linebuy,color=green),plot(linesell,color=red)


//Stop Loss Input
sl_inp = input(0.05, title='Stop Loss %', type=float)/100


//Order Conditions
longCond = crossover(currMacd, linebuy)
exitLong = crossover(currMacd, linesell)
stop_level = strategy.position_avg_price * (1 - sl_inp)


//Order Entries
strategy.entry("long", strategy.long,  when=longCond==true)
strategy.close("long", when=exitLong==true)
strategy.exit("Stop Loss", stop=stop_level)