Chiến lược theo xu hướng dựa trên tỷ lệ thoái lui


Ngày tạo: 2023-09-14 19:49:14 sửa đổi lần cuối: 2023-09-14 19:49:14
sao chép: 1 Số nhấp chuột: 643
1
tập trung vào
1617
Người theo dõi

Trong bài viết này, chúng tôi sẽ giải thích chi tiết về một chiến lược giao dịch định lượng dựa trên tỷ lệ điều chỉnh giá để theo dõi xu hướng. Chiến lược này được xác định bằng cách xác định các điểm cao nhất định và đưa vào thị trường với tỷ lệ điều chỉnh nhất định.

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

Lý luận cốt lõi của chiến lược này là xác định giá cao nhất trong một chu kỳ nhất định, sau đó theo dõi giao dịch ở vị trí giảm một tỷ lệ nhất định. Các bước cụ thể sau đây:

  1. Đầu tiên, tính giá cao nhất trong 90 đường K gần đây nhất, làm điểm cao nhất tại địa phương;

  2. Theo dõi mua khi giá giảm một tỷ lệ nhất định (như 3%) từ mức cao;

  3. Stop-loss được thiết lập để tăng một tỷ lệ nhất định (ví dụ: 6%) từ giá nhập, và khi giá đạt đến điểm dừng, nó sẽ xóa lệnh.

  4. Không thiết lập dừng lỗ để theo dõi xu hướng.

Bằng cách này, thời gian nhập vào được đánh giá bằng tỷ lệ hồi phục điểm cao địa phương, có thể lọc hiệu quả các biến động, chỉ nhập vào khi xu hướng được xác nhận. Cài đặt dừng cũng cho phép mỗi lần thu lợi nhuận có một số quản lý dự kiến.

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

Ưu điểm lớn nhất của chiến lược này là sử dụng tỷ lệ quay trở lại để đánh giá xu hướng, lọc ra rất nhiều tiếng ồn. Nó có thể làm giảm khả năng bị đặt vào khi nhập trực tiếp vào điểm biến.

Một lợi thế khác là thiết lập logic dừng. Điều này làm cho mỗi giao dịch có thể kiểm soát được lợi nhuận và thua lỗ, phù hợp với nguyên tắc quản lý tiền tích cực.

Cuối cùng, theo dõi stop loss lớn hơn tỷ lệ callback cũng cho phép chiến lược có một cơ chế trả lại rủi ro.

Ba, rủi ro tiềm ẩn

Mặc dù chiến lược này có một số ưu điểm, nhưng trong thực tế, các rủi ro sau đây cũng nên được lưu ý:

Đầu tiên, tỷ lệ hồi phục cần được thiết lập một cách cẩn thận.

Thứ hai, không có thiết lập dừng lỗ khiến chiến lược phải đối mặt với rủi ro đơn lẻ lớn hơn.

Cuối cùng, việc tối ưu hóa tham số không đúng cũng có thể gây ra vấn đề quá phù hợp, dẫn đến giảm chất lượng tín hiệu.

Bốn nội dung, tóm tắt

Bài viết này giới thiệu chi tiết về một chiến lược định lượng để theo dõi xu hướng dựa trên tỷ lệ đảo ngược giá. Nó có thể phân biệt hiệu quả hướng xu hướng, sử dụng đảo ngược để nhập vào. Đồng thời, thiết lập quản lý dừng cũng cho phép chiến lược có một cơ chế kiểm soát rủi ro. Nói chung, chiến lược này có thể là một trong những phương án lựa chọn để xây dựng quy tắc giao dịch dựa trên sự đảo ngược điểm cao địa phương.

Mã nguồn chiến lược
/*backtest
start: 2022-09-07 00:00:00
end: 2023-09-13 00:00:00
period: 1d
basePeriod: 1h
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/
// © luboremenar

//@version=4
strategy("test_%_down_up", overlay = false, initial_capital = 1000, pyramiding = 0, default_qty_value = 1000,
     default_qty_type = strategy.cash, precision = 8, commission_type = strategy.commission.percent, commission_value = 0.1)

// inputs
range_of_tops = input(title="Range of candles to find highest value from.", defval=90, type=input.integer, minval=1 )
basis_points = input(title="Basis points, if asset has two decimals use 100, three decimals 1000, etc.", defval=100, type=input.integer, minval=1)
retrace_percent = input(title="Percent value retrace from the top.", type=input.integer, defval=3, minval = 1, maxval=99)
take_profit_percent = input(title="Percent value of take profit from entry price.", type=input.integer, defval=6, minval=1)

// strategy definition
three_months_top = highest(range_of_tops)
longCondition1 = (close <= float((three_months_top*(1-(take_profit_percent/100)))) and strategy.position_size == 0)

if (longCondition1)
    strategy.entry("Long1", strategy.long, qty = strategy.equity/close)

strategy.exit(id="TP1", from_entry="Long1", profit=((close*(1 + take_profit_percent/100)-close)*basis_points),
     when= crossover(strategy.position_size, 0))


// plot
plot(strategy.equity)

// for testing, debugging
//test=0.0  
//if(crossover(strategy.position_size, 0))
//    test := (close*1.06-close)*basis_points
//plot(test)