Chiến lược chỉ dài MACD

Tác giả:ChaoZhang, Ngày: 2024-01-12 11:02:06
Tags:

img

Tổng quan

Chiến lược này dựa trên chỉ số MACD và đường dài và đường đóng để thực hiện giao dịch dài hạn của cặp tiền tệ. Nó mở các vị trí khi đường chỉ số MACD vượt qua đường dài và đóng các vị trí khi đường chỉ số MACD vượt qua đường đóng. Chiến lược dừng lỗ cũng được cấu hình.

Chiến lược logic

Chiến lược này sử dụng các đường nhanh và chậm của chỉ số MACD. Đường nhanh có tham số EMA 12 ngày và đường chậm có tham số EMA 26 ngày. Sự khác biệt giữa hai đường là biểu đồ MACD. Ngoài ra, EMA 9 ngày được tính như đường tín hiệu. Nó đi dài khi biểu đồ MACD vượt trên 0,04 và đóng các vị trí dài khi vượt dưới 0,015.

Đặc biệt, chiến lược đầu tiên tính toán đường nhanh, đường chậm và đường tín hiệu của chỉ số MACD. Sau đó đường dài được đặt ở -0.04, đường đóng được đặt ở 0.015. Nếu biểu đồ MACD hiện tại lớn hơn đường dài, nó sẽ đi dài. Nếu biểu đồ MACD hiện tại nhỏ hơn đường đóng, nó sẽ đóng vị trí dài. Ngoài ra, đường dừng lỗ được đặt ở mức 95% giá nhập cảnh.

Phân tích lợi thế

Chiến lược có những lợi thế sau:

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

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro:

  1. Chỉ số MACD có một số trễ, có thể bỏ lỡ cơ hội ngắn hạn
  2. Cài đặt dừng lỗ có thể quá bảo thủ để theo dõi xu hướng dài hạn
  3. Parameter điều chỉnh cần rất nhiều backtesting, nếu không quá phù hợp có thể xảy ra
  4. Chỉ áp dụng cho, hiệu quả cho các cặp khác là không chắc chắn

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

Hướng dẫn tối ưu hóa

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

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

    Đường nhanh, đường chậm, đường tín hiệu với chiều dài khác nhau có thể được thử để tìm kết hợp phù hợp hơn

  2. Hãy thử các chỉ số khác

    Các chỉ số như RSI, KD có thể có kết quả rất khác nhau

  3. Tối ưu hóa các thông số đường dài và đường gần

    Các thông số phù hợp hơn có thể được tìm thấy thông qua kiểm tra ngược lặp đi lặp lại

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

    Xem xét dừng lại để làm cho dừng lỗ năng động hơn

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

    Áp dụng chiến lược cho các cặp tiền khác và xem xét tác động

Kết luận

Tóm lại, đây là một chiến lược giao dịch dài hạn tổng thể rất đơn giản và trực quan. Nó đánh giá điều kiện thị trường bằng chỉ số MACD và thiết lập các tiêu chí lọc kép để giảm giao dịch sai. Kiểm soát rủi ro cũng được cấu hình thông qua dừng lỗ. Logic rõ ràng và chiếm dụng tài nguyên thấp. Nó dễ hiểu và thực hiện, đáng khuyến cáo. Tất nhiên, vẫn còn nhiều chỗ để cải thiện thông qua điều chỉnh tham số, thay đổi chỉ số và các phương tiện khác, để làm cho chiến lược trở nên nổi bật hơn.


/*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)

Thêm nữa