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

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

Tác giả:ChaoZhang, Ngày: 2024-12-04 15:19
Tags:SRPA

img

Tổng quan

Chiến lược này là một hệ thống giao dịch dựa trên hành động giá và mức hỗ trợ / kháng cự năng động, thực hiện giao dịch gần mức giá chính khi các mô hình nến cụ thể xuất hiện. Hệ thống sử dụng phương pháp tính toán hỗ trợ / kháng cự năng động 16 giai đoạn, kết hợp với bốn mô hình nến đảo ngược cổ điển - Hammer, Shooting Star, Doji và Pin Bar để nắm bắt sự đảo ngược tiềm năng của thị trường. Chiến lược sử dụng tỷ lệ phần trăm cố định lấy lợi nhuận và mức dừng lỗ để quản lý rủi ro và sử dụng một tham số độ nhạy để kiểm soát độ nghiêm ngặt của tín hiệu nhập cảnh.

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

Lòng cốt lõi của chiến lược nằm trong việc tính toán năng động mức hỗ trợ và kháng cự để thiết lập ranh giới chuyển động giá. Khi giá tiếp cận các mức chính này, hệ thống tìm kiếm các mẫu nến cụ thể như là tín hiệu đảo ngược. Điều kiện nhập cảnh yêu cầu hình thành mô hình trong phạm vi 1,8% (sự nhạy cảm mặc định) của mức hỗ trợ / kháng cự. Hệ thống thực hiện quy tắc quản lý cổ phiếu 35% với 16% dừng lỗ và 9,5% lấy lợi nhuận, kiểm soát hiệu quả rủi ro ở khoảng 5,6% tổng vốn chủ sở hữu cho mỗi giao dịch. Chiến lược được thực hiện trong Script Pine với chức năng quản lý giao dịch và trực quan đầy đủ.

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

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

Rủi ro chiến lược

  1. Hiệu quả hỗ trợ/kháng cự có thể giảm ở các thị trường biến động cao
  2. Đặt lỗ tương đối rộng (16%) có thể dẫn đến tổn thất đáng kể trong điều kiện biến động
  3. Các thiết lập tham số độ nhạy có ảnh hưởng đáng kể đến tần suất và độ chính xác giao dịch
  4. Chỉ dựa vào các mô hình giá có thể bỏ lỡ các tín hiệu thị trường quan trọng khác
  5. Cần phải xem xét chi phí giao dịch ảnh hưởng đến lợi nhuận chiến lược

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

  1. Tạo ra âm lượng như một chỉ số xác nhận để cải thiện độ tin cậy tín hiệu
  2. Phát triển các tham số nhạy cảm thích nghi điều chỉnh năng động dựa trên biến động thị trường
  3. Tối ưu hóa cài đặt dừng lỗ, xem xét thực hiện dừng lại hoặc kế hoạch dừng lỗ từng bước
  4. Thêm các bộ lọc xu hướng để tránh các giao dịch đảo ngược trong thời gian xu hướng mạnh
  5. Phát triển hệ thống định hình vị trí năng động điều chỉnh kích thước giao dịch dựa trên điều kiện thị trường

Tóm lại

Chiến lược giao dịch dựa trên hành động giá này cung cấp cho các nhà giao dịch một cách tiếp cận giao dịch có hệ thống bằng cách kết hợp các mức hỗ trợ / kháng cự năng động với các mô hình đảo ngược cổ điển.


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






Có liên quan

Thêm nữa