Chiến lược thoát lợi nhuận nhiều phần trăm

Tác giả:ChaoZhang, Ngày: 2023-12-01 15:22:29
Tags:

img

Tổng quan

Chiến lược này thực hiện chức năng thiết lập nhiều phần trăm thoát lợi nhuận. Chiến lược đầu tiên đánh giá các điều kiện dài và ngắn để nhập các vị trí. Sau đó nó sử dụng hàm %AsPoints tùy chỉnh để chuyển đổi tỷ lệ phần trăm thành dấu chấm giá. Chương trình thiết lập 4 lối ra với tỷ lệ phần trăm lợi nhuận 1%, 2%, 3% và 4% dựa trên cấu hình, và cũng thiết lập một lối ra dừng lỗ phổ biến 2%. Điều này đạt được hiệu ứng của nhiều phần trăm thoát lợi nhuận.

Chiến lược logic

Lý thuyết cốt lõi của chiến lược này là sử dụng giao thông chéo SMA để xác định các mục nhập. Cụ thể, khi SMA nhanh (14) vượt qua trên SMA chậm (28), nó sẽ đi dài. Khi SMA nhanh (14) vượt qua dưới SMA chậm (28), nó sẽ đi ngắn.

Sau đó, làm thế nào để thiết lập nhiều phần trăm lợi nhuận thoát? Ở đây một tùy chỉnh phần trămAsPoints chức năng được sử dụng để chuyển đổi phần trăm vào giá.

percentAsPoints(pcnt) =>
    strategy.position_size != 0 ? round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na) 

Nếu kích thước vị trí không phải là 0, nó tính toán các dấu chấm giá theo tỷ lệ phần trăm nhân với giá nhập trung bình và chia cho kích thước dấu chấm tối thiểu.

Với chức năng này, chúng ta có thể dễ dàng chuyển đổi tỷ lệ phần trăm thành dấu chấm.

lossPnt = percentAsPoints(2)

strategy.exit("x1", qty_percent = 25, profit = percentAsPoints(1), loss = lossPnt)   

strategy.exit("x2", qty_percent = 25, profit = percentAsPoints(2), loss = lossPnt)

strategy.exit("x3", qty_percent = 25, profit = percentAsPoints(3), loss = lossPnt)  

strategy.exit("x4", profit = percentAsPoints(4), loss = lossPnt)

Ngoài ra, một mức dừng lỗ 2% phổ biến được sử dụng cho tất cả các bước ra.

Phân tích lợi thế

Chiến lược thoát lợi nhuận nhiều phần trăm này có những lợi thế sau:

  1. Nó cho phép lấy lợi nhuận từng bước, tránh bỏ lỡ lợi nhuận lớn hơn. Nói chung, các bước ra sau có mục tiêu lợi nhuận lớn hơn và rủi ro cao hơn, và chiến lược này cân bằng rủi ro và lợi nhuận.

  2. Việc rời khỏi hàng loạt cho phép thu hồi vốn, giảm rủi ro. Ví dụ: với kích thước hàng 25%, lợi nhuận 1% có thể trả lại 1/4 vốn, và các vị trí sau đó đều là lợi nhuận thuần túy.

  3. 2% dừng lỗ ngăn ngừa tổn thất cực đoan trong các chuyển động thị trường bất thường.

  4. Việc thực hiện là đơn giản và sạch sẽ, dễ hiểu và sửa đổi.

Phân tích rủi ro

Ngoài ra còn có một số rủi ro với chiến lược này:

  1. Lượng phần trăm thoát có thể gây ra sự biến động bên cạnh, với giá dao động xung quanh giá thoát, gây ra việc thoát thường xuyên. Điều này làm tăng tần suất giao dịch và chi phí hoa hồng.

  2. Các bước ra hàng loạt làm tăng số lượng giao dịch và hoa hồng. hoa hồng cao có thể xóa một số lợi nhuận ra.

  3. Việc định vị lối ra không phù hợp cũng có thể ảnh hưởng đến lợi nhuận.

  4. Trong thị trường biến động, nên sử dụng các bước ra nhỏ hơn, trong khi trong các thị trường có xu hướng, nên nhắm mục tiêu các bước ra lớn hơn.

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

Xem xét các rủi ro trên, việc tối ưu hóa hơn nữa có thể được thực hiện trong các khía cạnh sau:

  1. Tối ưu hóa lối ra để thích nghi dựa trên sự biến động và sức mạnh của thị trường bằng cách sử dụng các phương pháp như lối ra ATR.

  2. Tối ưu hóa tỷ lệ phần trăm lô và phạm vi để tìm kết hợp rủi ro-lợi nhuận tối ưu. Thêm tối ưu hóa tham số để tìm các tham số tốt nhất.

  3. Giảm số lần thoát để tránh giao dịch quá mức. Ví dụ: đặt vùng đệm giá, chỉ thoát sau khi vượt quá một chuyển động giá nhất định.

  4. Xem xét các yếu tố hoa hồng, tránh ra khỏi nơi lợi nhuận dự kiến thấp hơn chi phí hoa hồng.

  5. Sử dụng lệnh xuất khẩu theo độ sâu thay vì chuyển giá xuất khẩu.

Tóm lại

Chiến lược này đạt được hiệu ứng của nhiều phần trăm lợi nhuận thoát, với 4 lối ra ở 1%, 2%, 3% và 4%, cho phép lối ra có lợi nhuận dần dần, và sử dụng 2% dừng lỗ để ngăn ngừa tổn thất lớn trong các động thái cực đoan. Nó cân bằng rủi ro và lợi nhuận và ngăn ngừa mất thêm lợi nhuận. Nhưng một số rủi ro tồn tại như sự bất ổn và tần suất giao dịch cao hơn. Các gợi ý tối ưu hóa được cung cấp có thể giúp cải thiện hiệu suất trong nhiều điều kiện thị trường hơn khi được kết hợp vào chiến lược.


/*backtest
start: 2023-10-31 00:00:00
end: 2023-11-30 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © adolgov

//@version=4
strategy("Multiple %% profit exits example", overlay=false, default_qty_value = 10)

longCondition = crossover(sma(close, 14), sma(close, 28))
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

shortCondition = crossunder(sma(close, 14), sma(close, 28))
if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)

percentAsPoints(pcnt) =>
    strategy.position_size != 0 ? round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na)

lossPnt = percentAsPoints(2)

strategy.exit("x1", qty_percent = 25, profit = percentAsPoints(1), loss = lossPnt)
strategy.exit("x2", qty_percent = 25, profit = percentAsPoints(2), loss = lossPnt)
strategy.exit("x3", qty_percent = 25, profit = percentAsPoints(3), loss = lossPnt)
strategy.exit("x4", profit = percentAsPoints(4), loss = lossPnt)

profitPercent(price) =>
    posSign = strategy.position_size > 0 ? 1 : strategy.position_size < 0 ? -1 : 0
    (price - strategy.position_avg_price) / strategy.position_avg_price * posSign * 100

p1 = plot(profitPercent(high), style=plot.style_linebr, title = "open profit % upper bound")
p2 = plot(profitPercent(low), style=plot.style_linebr, title = "open profit % lower bound")
fill(p1, p2, color = color.red)

Thêm nữa