Hệ thống giao dịch hành động giá hỗ trợ động

SR PA
Ngày tạo: 2024-12-04 15:19:00 sửa đổi lần cuối: 2024-12-04 15:19:00
sao chép: 0 Số nhấp chuột: 422
1
tập trung vào
1617
Người theo dõi

Hệ thống giao dịch hành động giá hỗ trợ động

Tổng quan

Chiến lược này là một hệ thống giao dịch dựa trên hành vi giá và các mức kháng cự hỗ trợ động, giao dịch bằng cách xác định các hình dạng giá quan trọng ở gần các mức hỗ trợ và kháng cự. Hệ thống sử dụng phương pháp tính toán kháng cự hỗ trợ động 16 chu kỳ, kết hợp bốn hình dạng quay ngược cổ điển - đường nón, đường sao chổi, hình chữ thập và kim để nắm bắt cơ hội đảo ngược tiềm năng của thị trường. Chiến lược sử dụng tỷ lệ dừng lỗ cố định để quản lý rủi ro và sử dụng các tham số nhạy cảm để kiểm soát mức độ nghiêm ngặt của tín hiệu nhập cảnh.

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

Cốt lõi của chiến lược là hình thành một ranh giới trên và dưới của hoạt động giá bằng cách tính toán động các mức hỗ trợ và kháng cự. Khi giá gần các mức quan trọng này, hệ thống sẽ tìm kiếm các hình dạng biểu đồ cụ thể như một tín hiệu đảo ngược. Điều kiện nhập cảnh yêu cầu giá phải nằm trong phạm vi 1.8% của mức kháng cự hỗ trợ.

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

  1. Chiến lược kết hợp hai yếu tố đáng tin cậy nhất trong phân tích kỹ thuật: hình dạng giá và kháng cự hỗ trợ, nâng cao độ tin cậy của tín hiệu giao dịch
  2. Sử dụng tính toán động để hỗ trợ mức kháng cự, có thể thích ứng với những thay đổi trong điều kiện thị trường
  3. Sử dụng các biện pháp quản lý tài chính và kiểm soát rủi ro nghiêm ngặt để ngăn chặn rút tiền lớn
  4. Chiến lược logic rõ ràng, tham số có thể điều chỉnh được, dễ dàng tối ưu hóa theo các tình huống thị trường khác nhau
  5. Tín hiệu nhập là rõ ràng, không có thành phần phán đoán chủ quan, phù hợp với giao dịch tự động

Rủi ro chiến lược

  1. Trong thị trường biến động cao, hiệu quả của hỗ trợ kháng cự có thể giảm
  2. Vị trí dừng lỗ tương đối xa (<16%), có thể chịu tổn thất lớn hơn trong tình huống căng thẳng
  3. Cài đặt các tham số nhạy cảm có ảnh hưởng quan trọng đến tần suất và độ chính xác của giao dịch
  4. Chỉ dựa vào hình thức giá có thể bỏ lỡ các tín hiệu thị trường quan trọng khác
  5. Cần xem xét tác động của chi phí giao dịch đến lợi nhuận chiến lược

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

  1. Tiến hành lưu lượng giao thông như một chỉ số xác nhận phụ trợ để tăng độ tin cậy tín hiệu
  2. Phát triển các tham số nhạy cảm thích ứng, điều chỉnh theo động thái biến động của thị trường
  3. Tối ưu hóa thiết lập dừng lỗ, xem xét sử dụng phương pháp dừng lỗ di động hoặc dừng lỗ phân đoạn
  4. Thêm bộ lọc xu hướng để tránh giao dịch đảo ngược trong xu hướng mạnh
  5. Phát triển hệ thống quản lý vị thế động, điều chỉnh quy mô giao dịch theo thị trường

Tóm tắt

Chiến lược giao dịch dựa trên hành vi giá này cung cấp cho các nhà giao dịch một phương pháp giao dịch có hệ thống bằng cách kết hợp mức kháng cự hỗ trợ động và hình thức đảo ngược cổ điển. Ưu điểm của chiến lược là rõ ràng về logic, có thể kiểm soát rủi ro, nhưng vẫn cần tối ưu hóa liên tục dựa trên hiệu quả giao dịch thực tế.

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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © felipemiransan

//@version=5
strategy("Price Action Strategy", overlay=true)

// Settings
length = input.int(16, title="Support and Resistance Length")
sensitivity = input.float(0.018, title="Sensitivity")

// Stop Loss and Take Profit
stop_loss_pct = input.float(16, title="Stop Loss percentage", minval=0.1) / 100
take_profit_pct = input.float(9.5, title="Take Profit percentage", minval=0.1) / 100

// Function to identify a Hammer
isHammer() =>
    body = close - open
    price_range = high - low
    lower_shadow = open - low
    upper_shadow = high - close
    body > 0 and lower_shadow > body * 2 and upper_shadow < body * 0.5 and price_range > 0

// Function to identify a Shooting Star
isShootingStar() =>
    body = open - close
    price_range = high - low
    lower_shadow = close - low
    upper_shadow = high - open
    body > 0 and upper_shadow > body * 2 and lower_shadow < body * 0.5 and price_range > 0

// Function to identify a Doji
isDoji() =>
    body = close - open
    price_range = high - low
    math.abs(body) < (price_range * 0.1)  // Doji has a small body

// Function to identify a Pin Bar
isPinBar() =>
    body = close - open
    price_range = high - low
    lower_shadow = open - low
    upper_shadow = high - close
    (upper_shadow > body * 2 and lower_shadow < body * 0.5) or (lower_shadow > body * 2 and upper_shadow < body * 0.5)

// Support and resistance levels 
support = ta.lowest(low, length)
resistance = ta.highest(high, length)

// Entry criteria
long_condition = (isHammer() or isDoji() or isPinBar()) and close <= support * (1 + sensitivity)
short_condition = (isShootingStar() or isDoji() or isPinBar()) and close >= resistance * (1 - sensitivity)

// Function to calculate stop loss and take profit (long)
calculate_levels(position_size, avg_price, stop_loss_pct, take_profit_pct) =>
    stop_loss_level = avg_price * (1 - stop_loss_pct)
    take_profit_level = avg_price * (1 + take_profit_pct)
    [stop_loss_level, take_profit_level]

// Function to calculate stop loss and take profit (short)
calculate_levels_short(position_size, avg_price, stop_loss_pct, take_profit_pct) =>
    stop_loss_level = avg_price * (1 + stop_loss_pct)
    take_profit_level = avg_price * (1 - take_profit_pct)
    [stop_loss_level, take_profit_level]

// Buy entry order with label
if (long_condition and strategy.opentrades == 0)
    strategy.entry("Buy", strategy.long)
    pattern = isHammer() ? "Hammer" : isDoji() ? "Doji" : isPinBar() ? "Pin Bar" : ""
    label.new(x=bar_index, y=low, text=pattern, color=color.green, textcolor=color.black, size=size.small)

// Sell entry order with label
if (short_condition and strategy.opentrades == 0)
    strategy.entry("Sell", strategy.short)
    pattern = isShootingStar() ? "Shooting Star" : isDoji() ? "Doji" : isPinBar() ? "Pin Bar" : ""
    label.new(x=bar_index, y=high, text=pattern, color=color.red, textcolor=color.black, size=size.small)

// Stop Loss and Take Profit management for open positions
if (strategy.opentrades > 0)
    if (strategy.position_size > 0)  // Long position
        avg_price_long = strategy.position_avg_price  // Average price of long position
        [long_stop_level, long_take_profit_level] = calculate_levels(strategy.position_size, avg_price_long, stop_loss_pct, take_profit_pct)
        strategy.exit("Exit Long", from_entry="Buy", stop=long_stop_level, limit=long_take_profit_level)
    if (strategy.position_size < 0)  // Short position
        avg_price_short = strategy.position_avg_price  // Average price of short position
        [short_stop_level, short_take_profit_level] = calculate_levels_short(strategy.position_size, avg_price_short, stop_loss_pct, take_profit_pct)
        strategy.exit("Exit Short", from_entry="Sell", stop=short_stop_level, limit=short_take_profit_level)

// Visualization of Support and Resistance Levels
plot(support, title="Support", color=color.green, linewidth=2)
plot(resistance, title="Resistance", color=color.red, linewidth=2)