Hệ thống giao dịch đảo ngược xu hướng giá bên trong

IBS EMA 趋势跟踪 反转交易 价格动量 RSI 风险管理 止损策略 多时间周期分析
Ngày tạo: 2025-03-05 09:55:24 sửa đổi lần cuối: 2025-03-05 09:55:24
sao chép: 0 Số nhấp chuột: 415
2
tập trung vào
319
Người theo dõi

Hệ thống giao dịch đảo ngược xu hướng giá bên trong Hệ thống giao dịch đảo ngược xu hướng giá bên trong

Tổng quan

Hệ thống giao dịch đảo ngược xu hướng cường độ giá nội bộ là một chiến lược giao dịch ở cấp độ ngày dựa trên chỉ số cường độ giá nội bộ (IBS). Cốt lõi của chiến lược này là xác định các điểm đảo ngược thị trường tiềm ẩn, đánh giá tình trạng quá mua quá bán của thị trường bằng cách theo dõi vị trí tương đối của giá đóng cửa đường dây trước trong phạm vi cao thấp của nó.

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

Cốt lõi của chiến lược này là tính toán và sử dụng chỉ số sức mạnh giá nội bộ (IBS). Chỉ số IBS được tính bằng công thức sau:

IBS = (前一日收盘价 - 前一日最低价) / (前一日最高价 - 前一日最低价)

IBS luôn dao động từ 0 đến 1:

  • IBS dưới 0.2 thường được giải thích là quá bán, đại diện cho thị trường có thể sắp tăng
  • IBS cao hơn 0,9 cho thấy tình trạng mua quá mức, có nghĩa là thị trường có thể sắp sửa điều chỉnh

Quy tắc giao dịch của chiến lược này là:

  1. Có nhiều điều kiện cho bạn tham gia:

    • Điều kiện 1: IBS thấp hơn ngưỡng nhập định của người dùng ((0.09 mặc định)
    • Điều kiện 2: Giá hiện tại nằm trên đường trung bình di chuyển của chỉ số N chu kỳ (EMA) (chu kỳ mặc định là 220)
    • Lưu ý: Người dùng có thể vô hiệu hóa điều kiện EMA bằng cách đặt chu kỳ EMA là 0
  2. Điều kiện thi đấu nhiều lần:

    • Khi IBS tăng vượt quá ngưỡng xuất phát được định nghĩa bởi người dùng (chỉ mặc định là 0.985)
    • Hoặc khi giao dịch kéo dài đến chu kỳ giao dịch tối đa (14 ngày mặc định)

Ngoài ra, chiến lược này cũng giới thiệu tham số “phân số phần trăm khoảng cách đầu vào mới tối thiểu” để đảm bảo vị trí mới chỉ được mở khi giá rút đủ, giảm thiểu rủi ro rút và tối ưu hóa quản lý tiền.

Lợi thế chiến lược

  1. Tính chính xác thời gian thị trường: Sử dụng chỉ số IBS có thể nắm bắt chính xác tình trạng quá mua quá bán của thị trường, cung cấp cơ sở toán học khách quan cho việc vào và ra thị trường, giảm sai lệch do phán đoán chủ quan.

  2. Cơ chế lọc xu hướng: Bằng cách sử dụng EMA làm bộ lọc xu hướng, đảm bảo hướng giao dịch phù hợp với xu hướng chính, tránh rủi ro giao dịch ngược. Chiến lược có thể điều chỉnh chu kỳ EMA theo các đặc điểm thị trường khác nhau hoặc vô hiệu hóa hoàn toàn điều kiện này.

  3. Quản lý vị trí linh hoạt: Chiến lược hỗ trợ gia tăng vị trí theo kiểu kim tự tháp (tối đa 2 lần) và giới thiệu tham số “phân số khoảng cách nhập mới tối thiểu”, thực hiện cơ chế xây dựng kho hàng loạt thông minh hơn, có thể giảm hiệu quả chi phí giữ vị trí trung bình khi giá rút lui.

  4. Kiểm soát rủi ro tự động: Chiến lược đặt giới hạn thời gian giữ vị trí tối đa, tự động thanh toán vị trí sau chu kỳ giao dịch tối đa được đặt trước ngay cả khi thị trường không kích hoạt tín hiệu xuất phát thông thường, điều này kiểm soát hiệu quả thời gian tiếp xúc rủi ro cho mỗi giao dịch.

  5. Tối ưu hóa tham số: Các tham số mặc định đã được tối ưu hóa cho các chỉ số thị trường chính như SPY và QQQ / NDQ, người dùng có thể áp dụng các thiết lập được đề xuất trực tiếp:

    • Cài đặt khuyến nghị của QQQ: Thấp nhập 0.09, Thấp xuất 0.985, Chu kỳ EMA 220, Khoảng cách nhập tối thiểu 0%, Số ngày nắm giữ tối đa 14 ngày
    • Cài đặt khuyến cáo SPY: Thấp nhập 0.11, Thấp xuất 0.995, Chu kỳ EMA 200, Khoảng cách nhập tối thiểu là 0%, Số ngày nắm giữ tối đa là 12 ngày
  6. Các mô hình giao dịch toàn diện: hỗ trợ các mô hình giao dịch chỉ mua, chỉ bán hoặc hai chiều, thích ứng với các môi trường thị trường và phong cách giao dịch khác nhau.

Rủi ro chiến lược

  1. Tính nhạy cảm của tham số: IBS nhập và thoát giá có ảnh hưởng lớn đến hiệu suất chiến lược, thiết lập tham số không đúng có thể dẫn đến giao dịch quá mức hoặc bỏ lỡ cơ hội giao dịch quan trọng.

  2. Rủi ro của thị trường chấn động: Trong thị trường chấn động không có xu hướng rõ ràng, tín hiệu IBS có thể xuất hiện thường xuyên, dẫn đến giao dịch quá mức và tăng chi phí giao dịch không cần thiết. Giải pháp là thêm các điều kiện lọc, chẳng hạn như yêu cầu xác nhận nhiều tín hiệu IBS liên tiếp hoặc kết hợp với các chỉ số khác (như ATR) để đánh giá sự biến động của thị trường.

  3. Sự chậm trễ của sự thay đổi xu hướng đột ngột: Khi thị trường thay đổi xu hướng nhanh chóng, chỉ số IBS được tính dựa trên dữ liệu ngày hôm trước có thể phản ứng chậm trễ, dẫn đến thời điểm vào hoặc ra khỏi thị trường không phù hợp.

  4. Quản lý rủi ro tài chính: Tính mặc định sử dụng 50% tài chính của tài khoản để giao dịch, có thể dẫn đến rủi ro bị phơi bày quá lớn trong trường hợp đặt nhiều lần. Người dùng được khuyến khích điều chỉnh kích thước vị trí và tham số đặt cược tùy theo khả năng chịu rủi ro của mình.

  5. Hạn chế thực hiện kỹ thuật: Chiến lược dựa trên giá đóng cửa thực hiện giao dịch, trong hoạt động thực tế có thể đối mặt với điểm trượt và chênh lệch giá. Để giảm rủi ro như vậy, bạn có thể xem xét đặt hàng trước một thời gian nhất định trước khi đóng cửa hoặc sử dụng đơn giá giới hạn thay vì đơn giá thị trường.

Hướng tối ưu hóa chiến lược

  1. Điều chỉnh ngưỡng động: Chiến lược hiện tại sử dụng ngưỡng IBS nhập và thoát cố định, bạn có thể xem xét điều chỉnh các ngưỡng này dựa trên động lực biến động của thị trường. Ví dụ: tăng ngưỡng nhập và giảm ngưỡng thoát thích hợp trong thời gian biến động cao để giảm tín hiệu giả; trong thời gian biến động thấp, bạn có thể sử dụng các thiết lập mạnh mẽ hơn.

  2. Xác nhận nhiều chu kỳ thời gian: giới thiệu khung phân tích nhiều chu kỳ thời gian, yêu cầu tín hiệu IBS ngắn hạn và trung hạn được xác nhận đồng thời để thực hiện giao dịch. Ví dụ, ngoài tín hiệu IBS đường ngày, bạn cũng có thể tính giá trị IBS đường chu kỳ hoặc đường 4 giờ, chỉ khi nhiều chu kỳ thời gian hiển thị trạng thái quá mua hoặc quá bán, điều này sẽ cải thiện đáng kể chất lượng tín hiệu.

  3. Cơ chế dừng chân thông minh: Chiến lược hiện tại chỉ dựa vào tín hiệu ra ngoài của IBS và kiểm soát rủi ro thời gian giữ vị trí tối đa, có thể đưa ra các cơ chế dừng chân thông minh hơn. Ví dụ: dừng động dựa trên ATR, theo dõi dừng hoặc chiến lược dừng chân dựa trên vị trí hỗ trợ / kháng cự để bảo vệ lợi nhuận tốt hơn và kiểm soát rủi ro giao dịch đơn lẻ.

  4. Thị trường tự điều chỉnh: giới thiệu cơ chế nhận dạng trạng thái thị trường, sử dụng các thiết lập tham số khác nhau trong các môi trường thị trường khác nhau (thị trường xu hướng, thị trường chấn động). Có thể nhận dạng trạng thái thị trường thông qua ADX (hàm chỉ số hướng trung bình) hoặc các chỉ số cường độ xu hướng khác, nới lỏng điều kiện IBS trong môi trường xu hướng mạnh, áp dụng ngưỡng IBS nghiêm ngặt hơn trong thị trường chấn động.

  5. Tối ưu hóa học máy: Sử dụng công nghệ học máy để tối ưu hóa và lọc các tín hiệu IBS. Bằng cách đào tạo mô hình, xác định các tín hiệu IBS nào có khả năng tạo ra giao dịch có lợi nhuận hơn và tự động điều chỉnh các tham số theo đặc điểm thị trường để đạt được hiệu suất tự điều chỉnh của chiến lược. Phương pháp này có thể cải thiện đáng kể tính ổn định và khả năng thích ứng của chiến lược, đặc biệt là khi đối mặt với các điều kiện thị trường và các loại giao dịch khác nhau.

Tóm tắt

Hệ thống giao dịch đảo ngược xu hướng cường độ giá nội bộ là một chiến lược giao dịch ở cấp độ ngày kết hợp các chỉ số cường độ giá nội bộ (IBS) và chỉ số di chuyển trung bình (EMA). Chiến lược này tối ưu hóa các quyết định giao dịch bằng cách xác định các điểm đảo ngược thị trường tiềm năng và tuân theo xu hướng dài hạn, đặc biệt phù hợp với giao dịch cổ phiếu và chỉ số Mỹ.

Chiến lược đã được tối ưu hóa cho các chỉ số thị trường chính như SPY / SPX và NDQ / QQQ, người dùng có thể áp dụng các thiết lập khuyến cáo để giao dịch trực tiếp. Tuy nhiên, bất kỳ chiến lược giao dịch nào cũng có rủi ro, bao gồm cả khả năng nhạy cảm của các tham số, rủi ro của thị trường xung đột và trì trệ khi thay đổi xu hướng đột ngột.

Các hướng tối ưu hóa trong tương lai bao gồm điều chỉnh ngưỡng động, xác nhận nhiều chu kỳ thời gian, cơ chế dừng lỗ thông minh, tự điều chỉnh trạng thái thị trường và tối ưu hóa học máy. Những cải tiến này có thể làm tăng thêm khả năng thích ứng và ổn định của chiến lược, cho phép nó hoạt động tốt trong các môi trường thị trường khác nhau.

Là một chiến lược giao dịch định lượng, hệ thống giao dịch đảo ngược xu hướng cường độ giá nội bộ cung cấp cho các nhà giao dịch một phương pháp giao dịch dựa trên quy tắc, khách quan, giảm ảnh hưởng của yếu tố cảm xúc đối với quyết định giao dịch, giúp đạt được kết quả giao dịch nhất quán và có thể dự đoán hơn.

Mã nguồn chiến lược
/*backtest
start: 2024-03-05 00:00:00
end: 2025-03-03 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDT"}]
*/

//Implementation by AlgoTradeKit
//v.0.5
//The IBS Trading Strategy is a daily bars long-only trading system, based on the concept of Internal Bar Strength (IBS). 
//The strategy aims to identify potential reversals by monitoring how the previous bar’s close positions itself within its high-low range. 
//It is suitable for stock and US indices. The default parameters are optimized for SPY/SPX and NDQ/QQQ
//Setting for QQQ: 0.09, 0.985, 220, 0, 14
//Setting for SPY: 0.11, 0.995, 200, 0, 12

//@version=6
strategy("IBS (Internal Bar Strength) Trading Strategy for SPY and NDQ", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=50, pyramiding = 2, currency = currency.USD, process_orders_on_close=false)

// ***** INPUTS *****
// IBS thresholds
ibsEntryThreshold = input.float(0.09, title="IBS Entry Threshold", step=0.01, tooltip="IBS = (Previous Close - Previous Low) / (Previous High - Previous Low), and IBS value below 0.2 is typically interpreted as an oversold condition, while a value above 0.9 suggests an overbought state.")
ibsExitThreshold  = input.float(0.985, title="IBS Exit Threshold", step=0.01, tooltip="IBS = (Previous Close - Previous Low) / (Previous High - Previous Low), and IBS value below 0.2 is typically interpreted as an oversold condition, while a value above 0.9 suggests an overbought state.")
// EMA period (set to 0 to disable the EMA condition)
emaPeriod = input.int(220, title="EMA Period (0 to disable)", minval=0, maxval=5000, step=1, tooltip="Exponential Moving Average Filter Period (0 to disable)")
// Minimum percentage drop required for a new entry (for dollar-cost averaging)
minEntryPct = input.float(0, title="Minimum Distance for New Entry (%)", step=0.05, minval=0.0, maxval=100, tooltip = "Distance in Price from Last Opened Position, in Percentage Terms (%)")
maxTradeDuration = input.int(title="Maximum Trade Duration (days)", defval=14, minval=1, step=1, maxval=1000, tooltip = "Exit at close if maximum trade duration is reached.")


// Persistent variable to record the bar index when the trade is entered.
var int entryBarIndex = na

// ***** EMA CALCULATION *****
// Calculate the EMA globally if the period is greater than 0, otherwise leave as na.
emaValue = emaPeriod > 0 ? ta.ema(close, emaPeriod) : na

// ***** IBS CALCULATION *****
// Calculate IBS using the previous bar’s values.
// Guard against division by zero: if previous high equals previous low, default IBS to 0.5.
prevHigh  = high[1]
prevLow   = low[1]
prevClose = close[1]
ibs = (prevHigh != prevLow) ? (prevClose - prevLow) / (prevHigh - prevLow) : 0.5

// ***** ENTRY AND EXIT CONDITIONS *****
// Define the EMA condition: if emaPeriod is 0, bypass the EMA check.
emaConditionLong = emaPeriod == 0 or (close > emaValue)
emaConditionShort = emaPeriod == 0 or (close < emaValue)

// Entry: IBS is below the entry threshold and the EMA condition holds.
enterLong = (ibs < ibsEntryThreshold) and emaConditionLong 
enterShort = (ibs > ibsExitThreshold) and emaConditionShort 

// Exit: IBS is above the exit threshold.
exitLong = ibs > ibsExitThreshold
exitShort = ibs < ibsEntryThreshold

// ***** DOLLAR-COST AVERAGING CONDITION IN PERCENTAGE *****
// Track the last entry price. Reset when there is no open position.
var float lastEntryPrice = na
if strategy.position_size == 0
    lastEntryPrice := na

// If there is no previous entry, the condition is met.
// Otherwise, allow a new entry only if the current price is lower than the last entry price
// by at least the predefined percentage (converted to a fraction).
dcaCondition = na(lastEntryPrice) or ((close < lastEntryPrice) and (((lastEntryPrice - close) / lastEntryPrice) >= (minEntryPct / 100)))
dcaConditionShort = na(lastEntryPrice) or ((close > lastEntryPrice) and (((close - lastEntryPrice) / lastEntryPrice) >= (minEntryPct / 100)))


// ***** STRATEGY ORDERS *****
// Enter a long position only if both the entry condition and the DCA condition are met.
if enterLong and dcaCondition 
    strategy.entry("Long", strategy.long)
    lastEntryPrice := close  // update the last entry price
    entryBarIndex := bar_index

if enterShort and dcaConditionShort 
    strategy.entry("Short", strategy.short)
    lastEntryPrice := close  // update the last entry price
    entryBarIndex := bar_index

// Compute trade duration in days using the absolute difference
tradeDuration = not na(entryBarIndex) ? math.abs(bar_index - entryBarIndex) : 0

// Exit the long position when the exit condition is met or if the trade duration reaches maxTradeDuration days.
if exitLong or (tradeDuration >= maxTradeDuration)
    strategy.close("Long")

// Exit the long position when the exit condition is met or if the trade duration reaches maxTradeDuration days.
if exitShort or (tradeDuration >= maxTradeDuration)
    strategy.close("Short")

// ***** PLOTTING *****
// Plot IBS for reference, along with horizontal lines for the entry and exit thresholds.
//plot(ibs, title="IBS", color=color.blue, linewidth=2)
//hline(ibsEntryThreshold, title="IBS Entry Threshold", color=color.green)
//hline(ibsExitThreshold, title="IBS Exit Threshold", color=color.red)