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

Động lực hỗ trợ và kháng cự Chiến lược giao dịch chuyển động thích nghi

Tác giả:ChaoZhang, Ngày: 2025-01-10 15:08:24
Tags:ATRTrục

 Dynamic Support and Resistance Adaptive Pivot Trading Strategy

Tổng quan

Chiến lược này là một hệ thống giao dịch thích nghi dựa trên việc xác định động các mức hỗ trợ và kháng cự bằng cách sử dụng các điểm pivot giá. Nó xác định mức giá chính bằng cách tính toán mức cao và thấp địa phương trong thời gian thực và thực hiện giao dịch phù hợp.

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

Logic cốt lõi dựa trên một số yếu tố chính: 1. tính toán pivot động: Sử dụng tham số chiều dài pivot có thể điều chỉnh (bên mặc định 2) để xác định mức cao và thấp địa phương 2. Khu vực hỗ trợ / kháng cự: Thiết lập phạm vi dựa trên tỷ lệ phần trăm (bên định sẵn 0,4%) xung quanh các điểm pivot để xác định các khu vực giao dịch hợp lệ 3. Sản xuất tín hiệu: tín hiệu dài khi giá phá vỡ trên ngưỡng hỗ trợ, tín hiệu ngắn khi giá phá vỡ dưới ngưỡng kháng cự Quản lý rủi ro: Thực hiện mức dừng lỗ (10%) và thu lợi nhuận (27%) năng động, với kích thước vị trí dựa trên vốn chủ sở hữu tài khoản

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

  1. Khả năng thích nghi cao: Điều chỉnh động mức hỗ trợ / kháng cự dựa trên điều kiện thị trường, tránh chậm lại từ các mức tĩnh
  2. Rủi ro được kiểm soát: duy trì rủi ro hợp lý cho mỗi giao dịch thông qua các điểm dừng dựa trên tỷ lệ phần trăm nghiêm ngặt và kích thước vị trí năng động
  3. Scalability: Hỗ trợ nhiều khung thời gian và kết hợp tham số để tối ưu hóa trên các môi trường thị trường khác nhau
  4. Tính minh bạch: Logic giao dịch rõ ràng với tất cả các tín hiệu và mức giá được hiển thị trực quan trên biểu đồ

Rủi ro chiến lược

  1. Rủi ro phá vỡ sai: Có thể tạo ra các tín hiệu sai thường xuyên trong các thị trường dao động, đòi hỏi phải điều chỉnh các thông số vùng hỗ trợ / kháng cự
  2. Tác động trượt: Giá thực hiện thực tế có thể khác biệt đáng kể với giá tín hiệu trong điều kiện thị trường ít thanh khoản hơn
  3. Tùy thuộc vào xu hướng: Chiến lược hoạt động tốt hơn trong các thị trường xu hướng nhưng có thể tạo ra các tín hiệu quá mức trong giai đoạn củng cố
  4. Độ nhạy của tham số: Hiệu suất phụ thuộc rất nhiều vào cài đặt tham số, đòi hỏi phải kiểm tra kỹ lưỡng để tối ưu hóa

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

  1. Thêm mô-đun nhận dạng môi trường thị trường để điều chỉnh tham số tự động dựa trên biến động
  2. Bao gồm khối lượng và các chỉ số kỹ thuật bổ sung làm tín hiệu xác nhận
  3. Tối ưu hóa thuật toán định kích thước vị trí với các điều chỉnh động dựa trên biến động thị trường
  4. Thực hiện các bộ lọc thời gian để tránh giao dịch trong thời gian bất lợi
  5. Phát triển thuật toán dừng lỗ thích nghi với điều chỉnh năng động dựa trên biến động thị trường

Tóm lại

Chiến lược cung cấp một khuôn khổ đáng tin cậy cho việc theo dõi xu hướng và đảo ngược giao dịch thông qua việc xác định năng động các mức giá chính kết hợp với kiểm soát rủi ro nghiêm ngặt. Mặc dù nó thể hiện một số độ nhạy cảm của các tham số và sự phụ thuộc vào môi trường thị trường, việc tối ưu hóa và tinh chỉnh liên tục cho phép hiệu suất nhất quán trong các điều kiện thị trường khác nhau. Việc thực hiện thành công đòi hỏi các nhà giao dịch phải hiểu sâu các nguyên tắc của nó và điều chỉnh các tham số theo tình huống thị trường cụ thể.


/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-08 08:00:00
period: 1d
basePeriod: 1d
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=6
strategy("Dynamic Support and Resistance Pivot Strategy ", overlay=true)

// Strategy parameters
pivot_length = input.int(2, title="Pivot Length", tooltip="Pivot size to identify peaks and troughs")
support_resistance_distance = input.float(0.4, title="Support/Resistance Distance %", tooltip="Distance to consider a support or resistance level in %")

// Stop Loss and Take Profit parameters
stop_loss_pct = input.float(10.0, title="Stop Loss %", tooltip="Stop loss percentage", minval=0.1) / 100
take_profit_pct = input.float(26.0, title="Take Profit %", tooltip="Take profit percentage", minval=0.1) / 100

// Functions to identify high and low pivots
pivot_high = ta.pivothigh(high, pivot_length, pivot_length)
pivot_low = ta.pivotlow(low, pivot_length, pivot_length)

// Storing support and resistance levels
var float resistance_level = na
var float support_level = na
var float last_pivot_high = na
var float last_pivot_low = na

// Updating support and resistance based on pivots
if (not na(pivot_high))
    resistance_level := high[pivot_length]
    last_pivot_high := high[pivot_length]

if (not na(pivot_low))
    support_level := low[pivot_length]
    last_pivot_low := low[pivot_length]

// Function to check if the current price is near a support or resistance level
is_near_resistance = (not na(resistance_level)) and (close >= resistance_level * (1 - support_resistance_distance / 100)) and (close <= resistance_level * (1 + support_resistance_distance / 100))
is_near_support = (not na(support_level)) and (close >= support_level * (1 - support_resistance_distance / 100)) and (close <= support_level * (1 + support_resistance_distance / 100))

// Cross conditions variables
long_cross = ta.crossover(close, support_level) and not na(support_level)
short_cross = ta.crossunder(close, resistance_level) and not na(resistance_level)

// Entry conditions
long_condition = is_near_support and long_cross  // Buy when crossing support from below
short_condition = is_near_resistance and short_cross  // Sell when crossing resistance from above

// Order execution
if (long_condition)
    strategy.entry("Long", strategy.long)

if (short_condition)
    strategy.entry("Short", strategy.short)

// Stop Loss and Take Profit
if (strategy.opentrades > 0)
    if (strategy.position_size > 0)  // For long position
        avg_price_long = strategy.position_avg_price
        long_stop_level = avg_price_long * (1 - stop_loss_pct)
        long_take_profit_level = avg_price_long * (1 + take_profit_pct)
        strategy.exit("Exit Long", from_entry="Long", stop=long_stop_level, limit=long_take_profit_level)

    if (strategy.position_size < 0)  // For short position
        avg_price_short = strategy.position_avg_price
        short_stop_level = avg_price_short * (1 + stop_loss_pct)
        short_take_profit_level = avg_price_short * (1 - take_profit_pct)
        strategy.exit("Exit Short", from_entry="Short", stop=short_stop_level, limit=short_take_profit_level)

// Plotting support and resistance levels on the chart
plot(support_level, title="Support", color=color.green, linewidth=2, style=plot.style_line)
plot(resistance_level, title="Resistance", color=color.red, linewidth=2, style=plot.style_line)

// Adding labels to show pivot values
if (long_condition and not na(support_level))
    label.new(bar_index, low[pivot_length], str.tostring(low[pivot_length]), style=label.style_label_up, color=color.green, textcolor=color.white, size=size.small)

if (short_condition and not na(resistance_level))
    label.new(bar_index, high[pivot_length], str.tostring(high[pivot_length]), style=label.style_label_down, color=color.red, textcolor=color.white, size=size.small)


Có liên quan

Thêm nữa