Chiến lược mua chốt lời dừng lỗ có độ biến động thấp


Ngày tạo: 2023-12-18 12:00:07 sửa đổi lần cuối: 2023-12-18 12:00:07
sao chép: 1 Số nhấp chuột: 573
1
tập trung vào
1621
Người theo dõi

Chiến lược mua chốt lời dừng lỗ có độ biến động thấp

Tổng quan

Chiến lược này được gọi là Chiến lược dừng lỗ mua theo hướng giảm giá. Nó sử dụng đường chéo của đường trung bình di chuyển làm tín hiệu mua, kết hợp với dừng lỗ để khóa lợi nhuận, áp dụng cho các loại tiền tệ trong phạm vi biến động thấp.

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

Chiến lược này sử dụng trung bình di chuyển của 3 chu kỳ khác nhau: 50 chu kỳ, 100 chu kỳ và 200 chu kỳ. Logic mua của nó là: khi 50 chu kỳ đi qua 100 chu kỳ và 200 chu kỳ đi qua 100 chu kỳ, hãy tham gia nhiều hơn.

Dấu hiệu này cho thấy thị trường đang phá vỡ từ vùng biến động thấp và bắt đầu đi vào trạng thái xu hướng. 50 chu kỳ tăng nhanh cho thấy sức mạnh nội bộ ngắn hạn tăng đột ngột và bắt đầu đẩy đường dài trung bình lên; 100 chu kỳ cũng bắt đầu lên cho thấy sức mạnh trung bình gia nhập và ổn định xu hướng lên.

Sau khi vào cửa, chiến lược sử dụng phương thức dừng lỗ để khóa lợi nhuận. Mục tiêu dừng là 8% giá vào cửa và đường dừng là 4% giá vào cửa. Thiết lập dừng lớn hơn dừng lỗ, có lợi cho lợi nhuận hơn tổn thất, đảm bảo lợi nhuận của chiến lược.

Phân tích lợi thế

Chiến lược này có những ưu điểm sau:

  1. Có thể nắm bắt chính xác các cơ hội của xu hướng trong khu vực có biến động thấp.
  2. Đường trung bình di chuyển dễ tính và đo lại, logic đơn giản và rõ ràng.
  3. Cài đặt dừng lỗ là hợp lý, có lợi cho thu nhập ổn định.
  4. Các tham số có thể được cấu hình linh hoạt và dễ dàng tối ưu hóa.

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro:

  1. Một tín hiệu đột phá sai có thể gây thiệt hại.
  2. Thị trường không thể dừng lại khi thị trường đảo ngược.
  3. Thiết lập parameter Stop Loss không đúng sẽ ảnh hưởng đến lợi nhuận.

Phản ứng:

  1. Kết hợp với các chỉ số khác, các tín hiệu lọc đảm bảo hiệu quả đột phá.
  2. Giảm thời gian dừng lỗ một cách thích hợp để giảm tổn thất do đảo ngược.
  3. Kiểm tra các tỷ lệ stop loss khác nhau để tìm các tham số tối ưu.

Hướng tối ưu hóa

Chiến lược này có thể được tối ưu hóa bằng cách:

  1. Kiểm tra các tham số khác nhau của chu kỳ trung bình di chuyển để tìm ra sự kết hợp tốt nhất.
  2. Thêm các chỉ số như số lượng giao dịch để xác nhận sự phá vỡ xu hướng.
  3. Động thái điều chỉnh stop-loss
  4. Kết hợp các phương pháp như học máy để dự đoán tỷ lệ đột phá.
  5. Điều chỉnh các tham số cho các điều kiện thị trường và tiền tệ khác nhau.

Tóm lại, chiến lược này hoạt động theo logic rõ ràng, có thể được áp dụng linh hoạt cho giao dịch định lượng để có được lợi nhuận có rủi ro thấp bằng cách cấu hình chu kỳ trung bình di chuyển và mức dừng lỗ. Tiếp theo, có thể được tối ưu hóa từ các tín hiệu đầu vào, phương thức dừng lỗ, v.v., phối hợp với điều chỉnh tham số để tìm ra hiệu quả tối ưu.

Mã nguồn chiến lược
/*backtest
start: 2023-12-10 00:00:00
end: 2023-12-17 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(shorttitle='Low volatility Buy w/ TP & SL (by Coinrule)',title='Low volatility Buy w/ TP & SL', overlay=true, initial_capital = 1000, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 10,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2019, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false       // create function "within window of time"

//MA inputs and calculations
movingaverage_fast = sma(close, input(50))
movingaverage_slow = sma(close, input(200))
movingaverage_normal= sma(close, input(100))



//Entry 
strategy.entry(id="long", long = true, when = movingaverage_slow > movingaverage_normal and movingaverage_fast > movingaverage_normal)

//Exit
longStopPrice  = strategy.position_avg_price * (1 - 0.04)
longTakeProfit = strategy.position_avg_price * (1 + 0.08)

strategy.close("long", when = close < longStopPrice or close > longTakeProfit and window())

//PLOT

plot(movingaverage_fast, color=color.orange, linewidth=2)
plot(movingaverage_slow, color=color.purple, linewidth=3)
plot(movingaverage_normal, color=color.blue, linewidth=2)