Chiến lược giao dịch kết hợp Double SuperTend và MACD


Ngày tạo: 2023-09-26 17:45:03 sửa đổi lần cuối: 2023-09-26 17:45:03
sao chép: 0 Số nhấp chuột: 1606
1
tập trung vào
1617
Người theo dõi

Tổng quan

Chiến lược giao dịch cặp SuperTrend và MACD kết hợp hai chỉ số theo dõi xu hướng ((SuperTrend 1 và SuperTrend 2) với một chỉ số dao động động ((MACD)) nhằm cung cấp một phương pháp giao dịch có hệ thống liên kết mà không cần phán đoán chủ quan.

Những ưu điểm chính của chiến lược này:

  • Xác minh SuperTrend kép: Sử dụng hai chỉ số SuperTrend, có chu kỳ và yếu tố ATR khác nhau, có thể xác nhận hướng xu hướng, cơ chế xác minh kép có thể giảm tín hiệu sai.

  • Xác nhận động lực: Dòng trụ MACD hoạt động như bộ lọc động lực, xác nhận vào và ra sân, tăng cấp độ xác thực.

  • Nhập và thoát khách quan: Chiến lược tạo ra tín hiệu mua và bán dựa trên hướng xu hướng và sự kết hợp động lực, không có chỗ cho giải thích chủ quan.

  • Quản lý giao dịch tự động hóa: Chiến lược cài đặt hoa hồng, điểm trượt và thiết lập vốn ban đầu, tự động hóa thực hiện giao dịch.

  • Khả năng tùy chỉnh: Tất cả các tham số có thể được tùy chỉnh dễ dàng để phù hợp với nhu cầu của các nhà giao dịch khác nhau và môi trường thị trường thay đổi.

Nguyên tắc

Chiến lược này hoạt động theo một bộ quy tắc rõ ràng, tập trung vào hướng xu hướng được xác nhận bởi hai SuperTrend và động lực được thể hiện bởi đường MACD.

Quy tắc nhập cảnh

  • Đầu vào nhiều đầu: Hai chỉ số SuperTrend có đầu và đường MACD lớn hơn 0

  • Đầu không vào: Hai chỉ số SuperTrend đầu không và MACD cột nhỏ hơn 0

Quy tắc chơi

  • Bảng đa vị trí: bất kỳ đầu xoay SuperTrend hoặc dòng trụ MACD nào.

  • Vị trí trống: Bất kỳ SuperTrend nào chuyển đổi nhiều đầu hoặc MACD trục trục chính xác.

Quản lý giao dịch

  • Chiến lược sử dụng tỷ lệ hoa hồng cố định và tham số điểm trượt.

  • Chế độ quản lý rủi ro tự động được xây dựng để ngăn chặn các lỗ hổng quá mức.

Định hướng giao dịch

Chiến lược này cho phép nhiều giao dịch hai chiều bằng không. Người dùng có thể chọn hướng giao dịch dựa trên thị trường của họ ((chỉ nhiều, chỉ trống hoặc nhiều không) }}.

Hướng dẫn

  • Thời gian thích hợp nhất để có xu hướng rõ ràng.

  • Người dùng có thể điều chỉnh chu kỳ, yếu tố và tham số MACD của SuperTrend theo nhu cầu.

Các tham số mặc định

  • SuperTrend 1 ATR chu kỳ:10

  • SuperTrend 1 nhân tố:3.0

  • SuperTrend 2 ATR chu kỳ:20

  • SuperTrend 2 nhân tố: 5.0

  • Chu kỳ MACD: 12

  • Chu kỳ MACD: 26

  • Giai đoạn MACD: 9

  • Tỷ lệ hoa hồng: 0.1%

  • Điểm trượt: 1 điểm

  • Đường giao dịch: hai chiều

Các tham số mặc định cung cấp phương thức giao dịch cân bằng, nhưng có thể được tùy chỉnh theo sở thích cá nhân.

Phân tích lợi thế

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

  1. Xác minh xu hướng kép giảm tín hiệu giả

Sử dụng hai chỉ số SuperTrend để xác minh xu hướng, có thể làm giảm đáng kể tín hiệu sai do chỉ số đơn. Cơ chế xác nhận kép tăng sự ổn định.

  1. Bộ lọc động lực MACD tăng độ chính xác

Đường cột MACD được sử dụng như một tiêu chuẩn phán đoán phụ trợ, có thể lọc một số tín hiệu giao dịch không mong muốn, cải thiện độ chính xác của entrada.

  1. Khả năng kiểm soát rút lui

Gói chỉ số hai xu hướng, có thể dừng nhanh khi xu hướng chuyển đổi, giúp kiểm soát rút lui.

  1. Mức độ tự động hóa cao, không cần đánh giá chủ quan

Quy tắc nhập cảnh và xuất cảnh rõ ràng, cài đặt quản lý giao dịch tích hợp, không cần phán đoán chủ quan, giảm thiểu lỗi của con người.

  1. Khả năng tùy chỉnh, khả năng thích ứng

Các tham số chỉ số có thể điều chỉnh, có thể được tối ưu hóa cho các giống và sở thích giao dịch khác nhau, có phạm vi sử dụng rộng.

Rủi ro và tối ưu hóa

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

  1. Khó khăn trong chuyển đổi động đa không khí

Giao thức chỉ số xu hướng kép, chuyển đổi nhiều không gian tương đối khó, không phù hợp với thị trường chuyển hướng thường xuyên.

  1. Khả năng kiểm soát rút lui hạn chế

Trong trường hợp có xu hướng mạnh, giá dừng có thể bị tụt lại và rút lại rủi ro mở rộng.

  1. Không thể đối phó với sự cố bất ngờ

Không thể đáp ứng nhanh chóng với vụ Black Swan, có nguy cơ rút lui lớn hơn.

Định hướng tối ưu hóa:

  1. Tối ưu hóa các tham số chỉ số để thích ứng với các giống khác nhau.

  2. Thêm các cơ chế dừng lỗ, chẳng hạn như dừng di chuyển, để kiểm soát thêm sự rút lui.

  3. Kết hợp với các chỉ số khác để xác định sự kiện bất ngờ và giảm rút lui.

Tóm tắt

Nói chung, chiến lược kết hợp SuperTrend và MACD kết hợp các ưu điểm của theo dõi xu hướng và phân tích động lực, quy tắc rõ ràng, mức độ tự động hóa cao, có thể lọc hiệu quả các tín hiệu giao dịch tiếng ồn, có tính thực tiễn rất mạnh mẽ. Tuy nhiên, cũng cần chú ý đến vấn đề kiểm soát rút lui và tối ưu hóa tham số. Nhìn chung, chiến lược này là một trong những đại diện tốt nhất của giao dịch xu hướng hệ thống.

Mã nguồn chiến lược
/*backtest
start: 2023-09-18 00:00:00
end: 2023-09-25 00:00:00
period: 30m
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/
// © PresentTrading

//@version=5
// Define the strategy settings
// strategy("Dual-Supertrend with MACD - Strategy [presentTrading]", overlay=true, precision=3, default_qty_type=strategy.cash, 
//  commission_value= 0.1, commission_type=strategy.commission.percent, slippage= 1, 
//   currency=currency.USD, default_qty_type = strategy.percent_of_equity, default_qty_value = 10, initial_capital= 10000)

// Trading Direction Dropdown
tradeDirection = input.string("both", "Trading Direction", options=["long", "short", "both"])

// MACD Inputs
fast_length = input(12, "Fast Length")
slow_length = input(26, "Slow Length")
signal_length = input(9, "Signal Smoothing")
sma_source = input.string("EMA", "Oscillator MA Type", options=["SMA", "EMA"])
sma_signal = input.string("EMA", "Signal Line MA Type", options=["SMA", "EMA"])


// MACD Calculation
fast_ma = sma_source == "SMA" ? ta.sma(close, fast_length) : ta.ema(close, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(close, slow_length) : ta.ema(close, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal

// Input Parameters for Supertrend 1
atrPeriod1 = input(10, "ATR Length for Supertrend 1")
factor1 = input.float(3.0, "Factor for Supertrend 1", step=0.01)

// Supertrend Calculation for 1
[supertrend1, direction1] = ta.supertrend(factor1, atrPeriod1)

// Input Parameters for Supertrend 2
atrPeriod2 = input(20, "ATR Length for Supertrend 2")
factor2 = input.float(5.0, "Factor for Supertrend 2", step=0.01)

// Supertrend Calculation for 2
[supertrend2, direction2] = ta.supertrend(factor2, atrPeriod2)

// Combined Conditions
isBullish = direction1 < 0 and direction2 < 0 and hist > 0
isBearish = direction1 > 0 and direction2 > 0 and hist < 0
exitLong = direction1 > 0 or direction2 > 0 or hist < 0
exitShort = direction1 < 0 or direction2 < 0 or hist > 0

// Strategy Entry and Exit based on Trading Direction
if (tradeDirection == "both" or tradeDirection == "long")
    strategy.entry("Buy", strategy.long, when=isBullish)
    strategy.close("Buy", when=exitLong)

if (tradeDirection == "both" or tradeDirection == "short")
    strategy.entry("Sell", strategy.short, when=isBearish)
    strategy.close("Sell", when=exitShort)

bodyMiddle1 = plot((open + close) / 2, display=display.none)
upTrend1 = plot(direction1 < 0 ? supertrend1 : na, "Up Trend", color = color.green, style=plot.style_linebr)
downTrend1 = plot(direction1 < 0? na : supertrend1, "Down Trend", color = color.red, style=plot.style_linebr)

fill(bodyMiddle1, upTrend1, color.new(color.green, 90), fillgaps=false)
fill(bodyMiddle1, downTrend1, color.new(color.red, 90), fillgaps=false)

bodyMiddle2 = plot((open + close) / 2, display=display.none)
upTrend2 = plot(direction2 < 0 ? supertrend2 : na, "Up Trend", color = color.green, style=plot.style_linebr)
downTrend2 = plot(direction2 < 0? na : supertrend2, "Down Trend", color = color.red, style=plot.style_linebr)

fill(bodyMiddle2, upTrend2, color.new(color.green, 90), fillgaps=false)
fill(bodyMiddle2, downTrend2, color.new(color.red, 90), fillgaps=false)