Chiến lược giao dịch Pullback đường trung bình động động


Ngày tạo: 2024-02-27 14:38:45 sửa đổi lần cuối: 2024-02-27 14:38:45
sao chép: 0 Số nhấp chuột: 584
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch Pullback đường trung bình động động

Tổng quan

Chiến lược này sử dụng hệ thống hai đường trung bình để tìm kiếm cơ hội đột phá tiềm năng trong một cổ phiếu hoặc tiền kỹ thuật số cụ thể. Nguyên tắc cơ bản của nó là mua cổ phiếu hoặc tiền kỹ thuật số khi đường trung bình ngắn hạn phục hồi dưới đường trung bình dài hạn.

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

Chiến lược này sử dụng trung bình di chuyển đơn giản ((SMA) của hai chu kỳ khác nhau làm tín hiệu giao dịch. Chu kỳ SMA đầu tiên dài hơn, đại diện cho hướng xu hướng tổng thể. Chu kỳ SMA thứ hai ngắn hơn, được sử dụng để bắt biến động giá trong thời gian ngắn.

Khi SMA ngắn từ phía dưới đeo SMA dài, đại diện cho giá trong xu hướng tăng tổng thể, do đó chiến lược mở vị trí nhiều đầu. Khi giá giảm lại kiểm tra SMA dài, báo hiệu kết thúc pullback ngắn hạn, khi chiến lược sẽ xem xét dừng lỗ hoặc lợi nhuận đóng cửa vị trí.

Ngoài ra, chiến lược cũng đặt ra các điều kiện bán quá và mua quá để tránh giao dịch trong các trường hợp cực đoan. Chỉ khi đáp ứng điều kiện cân bằng chéo và định giá hợp lý đồng thời, bạn sẽ mở vị trí.

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

  • Sử dụng hệ thống hai đường bằng nhau để xác định hiệu quả xu hướng trung và ngắn hạn
  • Kết hợp lợi thế của việc theo dõi xu hướng và điều chỉnh giao dịch
  • Cấu hình bán tháo và mua tháo được xây dựng để giảm các giao dịch không cần thiết

Phân tích rủi ro

  • Thời điểm kết thúc đợt quay trở lại rất khó xác định, có thể dự đoán lỗi dừng lỗ
  • Khi xu hướng thay đổi, không thể dừng lại nhanh chóng và có thể chịu tổn thất lớn
  • Thiết lập tham số không đúng có thể dẫn đến giao dịch quá thường xuyên hoặc bảo thủ

Tối ưu hóa chiến lược

Chiến lược này có thể được tối ưu hóa hơn nữa:

  1. Sử dụng các công cụ phức tạp hơn để xác định biến động và xu hướng của giá, chẳng hạn như Brinband, KD Indicator
  2. Kết hợp các yếu tố khác để xác định thời gian kết thúc hồi phục, chẳng hạn như biến đổi khối lượng giao dịch, biến động
  3. Động thái điều chỉnh quy mô vị trí để tối đa hóa lợi nhuận
  4. Tối ưu hóa logic dừng lỗ, sử dụng KAMA, đám mây Ichimoku và mốc thời gian thấp hơn để xác định thời gian dừng lỗ

Tóm tắt

Chiến lược này tích hợp các lợi thế của theo dõi xu hướng và điều chỉnh giao dịch, sử dụng hệ thống hai đường thẳng để đánh giá sự xuất hiện của cơ hội. Đồng thời, xây dựng một số điều kiện mua quá mức, bán quá mức, tránh mở vị trí không cần thiết. Đây là một chiến lược giao dịch định lượng rất thực tế, đáng để nghiên cứu và tối ưu hóa sâu hơn.

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

// @version=5
strategy("Profitable Pullback Trading Strategy", overlay=true,initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Inputs
ma_length1 = input.int(280,'MA length 1', step = 10,group = 'Moving Avg. Parameters', inline = 'MA')
ma_length2 = input.int(13,'MA length 2', step = 1,group = 'Moving Avg. Parameters', inline = 'MA')
sl = input.float(title="Stop Loss (%)", defval=0.07, step=0.1, group="Moving Avg. Parameters")
too_deep    = input.float(title="Too Deep (%)", defval=0.27, step=0.01, group="Too Deep and Thin conditions", inline = 'Too')
too_thin    = input.float(title="Too Thin (%)", defval=0.03, step=0.01, group="Too Deep and Thin conditions", inline = 'Too')

// Calculations
ma1 = ta.sma(close,ma_length1)
ma2 = ta.sma(close,ma_length2)
too_deep2   = (ma2/ma1-1) < too_deep
too_thin2   = (ma2/ma1-1) > too_thin

// Entry and close condtions
var float buy_price = 0
buy_condition = (close > ma1) and (close < ma2) and strategy.position_size == 0 and too_deep2 and too_thin2
close_condition1  = (close > ma2) and strategy.position_size > 0 and (close < low[1])
stop_distance = strategy.position_size > 0 ? ((buy_price - close) / close) : na
close_condition2 = strategy.position_size > 0 and stop_distance > sl
stop_price = strategy.position_size > 0 ? buy_price - (buy_price * sl) : na

// Entry and close orders
if buy_condition
    strategy.entry('Long',strategy.long)
if buy_condition[1]
    buy_price := open
if close_condition1 or close_condition2
    strategy.close('Long',comment="Exit" + (close_condition2 ? "SL=true" : ""))
    buy_price := na

plot(ma1,color = color.blue)
plot(ma2,color = color.orange)