Tài nguyên đang được tải lên... tải...

Định thuật giao dịch xu hướng động đa khung thời gian Supertrend

Tác giả:ChaoZhang, Ngày: 2025-01-06 16:38:12
Tags:ATRMTFEMARSI

img

Tổng quan

Chiến lược này là một hệ thống theo xu hướng thích nghi dựa trên chỉ số Supertrend Multi-Timeframe. Nó tích hợp các tín hiệu Supertrend từ các khung thời gian 15 phút, 5 phút và 2 phút để xây dựng một khuôn khổ xác định xu hướng toàn diện. Chiến lược sử dụng bộ lọc thời gian để đảm bảo hoạt động chỉ trong các phiên giao dịch tích cực nhất và tự động đóng các vị trí vào cuối ngày để tránh rủi ro qua đêm.

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

Cơ chế cốt lõi dựa trên sự nhất quán xu hướng trên nhiều khung thời gian để xác nhận tín hiệu giao dịch.

  1. Tính toán các đường siêu xu hướng bằng cách sử dụng thời gian ATR và nhân cho mỗi khung thời gian.
  2. Các kích hoạt mua tín hiệu khi các điều kiện tăng đều phù hợp trên cả ba khung thời gian (giá trên đường Supertrend).
  3. Người bắt đầu bán tín hiệu khi giá phá vỡ dưới đường Supertrend 5 phút hoặc đạt đến cuối ngày giao dịch.
  4. Kiểm soát giờ giao dịch thông qua cài đặt múi giờ và bộ lọc phiên (bên mặc định 09:30-15:30).

Ưu điểm chiến lược

  1. Xác nhận xu hướng đa chiều tăng độ tin cậy tín hiệu và giảm rủi ro đột phá sai.
  2. Các thông số Supertrend thích nghi cho phép điều chỉnh chiến lược theo môi trường biến động thị trường khác nhau.
  3. Cơ chế quản lý thời gian nghiêm ngặt loại bỏ sự can thiệp từ các khoảng thời gian giao dịch không hiệu quả.
  4. Giao diện trực quan rõ ràng hiển thị trạng thái xu hướng trên tất cả các khung thời gian.
  5. Hệ thống quản lý vị trí linh hoạt hỗ trợ cấu hình dựa trên tỷ lệ phần trăm.

Rủi ro chiến lược

  1. Có thể tạo ra tín hiệu giao dịch quá mức trên các thị trường khác nhau, làm tăng chi phí giao dịch.
  2. Nhiều điều kiện lọc có thể gây ra cơ hội lợi nhuận bị bỏ lỡ.
  3. Tùy thuộc tối ưu hóa tham số đòi hỏi điều chỉnh cho môi trường thị trường khác nhau.
  4. Sự phức tạp tính toán cao có thể dẫn đến các vấn đề về hiệu quả thực hiện.

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

  1. Đưa ra cơ chế thích nghi biến động để điều chỉnh động các thông số Supertrend.
  2. Thêm các chỉ số xác nhận khối lượng để cải thiện độ chính xác đánh giá xu hướng.
  3. Phát triển thuật toán lọc thời gian thông minh để tự động xác định các phiên giao dịch tối ưu.
  4. Tối ưu hóa thuật toán quản lý vị trí để kiểm soát rủi ro chính xác hơn.
  5. Thêm mô-đun phân loại môi trường thị trường để thực hiện các chiến lược khác biệt cho các đặc điểm thị trường khác nhau.

Tóm lại

Chiến lược này xây dựng một hệ thống giao dịch mạnh mẽ thông qua phân tích xu hướng nhiều khung thời gian và các cơ chế kiểm soát rủi ro nghiêm ngặt. Mặc dù có chỗ để tối ưu hóa, logic cốt lõi của nó vững chắc và phù hợp với việc phát triển hơn nữa và ứng dụng giao dịch trực tiếp.


/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Multi-Timeframe Supertrend Strategy", 
         overlay=true, 
         shorttitle="MTF Supertrend TF", 
         default_qty_type=strategy.percent_of_equity, 
         default_qty_value=100, 
         initial_capital=50000, 
         currency=currency.USD)

// === Input Parameters === //
atrPeriod = input.int(title="ATR Period", defval=10, minval=1)
factor = input.float(title="Factor", defval=3.0, step=0.1)

// === Time Filter Parameters === //
// Define the trading session using input.session
// Format: "HHMM-HHMM", e.g., "0930-1530"
sessionInput = input("0930-1530", title="Trading Session")

// Specify the timezone (e.g., "Europe/Istanbul")
// Refer to the list of supported timezones: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
timezoneInput = input.string("Europe/Istanbul", title="Timezone", tooltip="Specify a valid IANA timezone (e.g., 'Europe/Istanbul', 'America/New_York').")

// === Calculate Supertrend for Different Timeframes === //
symbol = syminfo.tickerid

// 15-Minute Supertrend
[st_15m, dir_15m] = request.security(symbol, "15", ta.supertrend(factor, atrPeriod), lookahead=barmerge.lookahead_off)

// 5-Minute Supertrend
[st_5m, dir_5m] = request.security(symbol, "5", ta.supertrend(factor, atrPeriod), lookahead=barmerge.lookahead_off)

// 2-Minute Supertrend
[st_2m, dir_2m] = request.security(symbol, "2", ta.supertrend(factor, atrPeriod), lookahead=barmerge.lookahead_off)

// === Current Timeframe Supertrend === //
[st_current, dir_current] = ta.supertrend(factor, atrPeriod)

// === Time Filter: Check if Current Bar is Within the Trading Session === //
in_session = true

// === Define Trend Directions Based on Supertrend === //
is_up_15m = close > st_15m
is_up_5m  = close > st_5m
is_up_2m  = close > st_2m
is_up_current = close > st_current

// === Buy Condition === //
buyCondition = is_up_15m and is_up_5m and is_up_2m and is_up_current and in_session and strategy.position_size == 0

// === Sell Conditions === //
// 1. Price falls below the 5-minute Supertrend during trading session
sellCondition1 = close < st_5m

// 2. End of Trading Day: Sell at the close of the trading session
is_new_day = ta.change(time("D"))
sellCondition2 = not in_session and is_new_day

// Combined Sell Condition: Only if in Position
sellSignal = (sellCondition1 and in_session) or sellCondition2
sellCondition = sellSignal and strategy.position_size > 0

// === Execute Trades === //
if (buyCondition)
    strategy.entry("Buy", strategy.long)

if (sellCondition)
    strategy.close("Buy")

// === Plot Supertrend Lines === //
// Plotting current timeframe Supertrend
plot(st_current, title="Current TF Supertrend", color=is_up_current ? color.green : color.red, linewidth=2, style=plot.style_line)

// Plotting higher timeframe Supertrend lines
plot(st_15m, title="15m Supertrend", color=is_up_15m ? color.green : color.red, linewidth=1, style=plot.style_line)
plot(st_5m, title="5m Supertrend", color=is_up_5m ? color.green : color.red, linewidth=1, style=plot.style_line)
plot(st_2m, title="2m Supertrend", color=is_up_2m ? color.green : color.red, linewidth=1, style=plot.style_line)

// === Plot Buy and Sell Signals === //
plotshape(series=buyCondition, title="Buy Signal", location=location.belowbar, 
          color=color.green, style=shape.labelup, text="BUY", size=size.small)

plotshape(series=sellCondition, title="Sell Signal", location=location.abovebar, 
          color=color.red, style=shape.labeldown, text="SELL", size=size.small)

// === Optional: Background Color to Indicate Position === //
bgcolor(strategy.position_size > 0 ? color.new(color.green, 90) : na, title="In Position Background")

// === Alerts === //
// Create alerts for Buy and Sell signals
alertcondition(buyCondition, title="Buy Alert", message="Buy signal generated by MTF Supertrend Strategy with Time Filter.")
alertcondition(sellCondition, title="Sell Alert", message="Sell signal generated by MTF Supertrend Strategy with Time Filter.")


Có liên quan

Thêm nữa