Chiến lược đột phá dài dựa trên xây dựng K-Line

Tác giả:ChaoZhang, Ngày: 2024-01-05 12:37:46
Tags:

img

Tổng quan

Chiến lược này thực hiện giao dịch breakout vị trí dài trên đường 4 giờ của Tesla bằng cách thiết lập các quy tắc phán đoán mô hình K-line đơn giản.

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

Logic đánh giá cốt lõi của chiến lược dựa trên các quy tắc mẫu 4 đường K sau:

  1. Giá thấp nhất của dòng K hiện tại thấp hơn giá mở cửa
  2. Giá thấp nhất của dòng K hiện tại thấp hơn giá thấp nhất của dòng K trước đó
  3. Giá đóng của dòng K hiện tại cao hơn giá mở
  4. Giá đóng của dòng K hiện tại cao hơn giá mở và giá đóng của dòng K trước đó

Khi tất cả 4 quy tắc được đáp ứng cùng một lúc, một hoạt động mở vị trí dài được thực hiện.

Ngoài ra, chiến lược cũng thiết lập lệnh dừng lỗ và lấy lợi nhuận để đóng các vị trí khi giá kích hoạt lệnh dừng lỗ hoặc lấy lợi nhuận.

Phân tích lợi thế

Chiến lược có những lợi thế sau:

  1. Các quy tắc phán đoán đường K được sử dụng rất đơn giản và thẳng thắn, dễ hiểu và dễ thực hành.
  2. Nó hoàn toàn dựa trên đánh giá của các đơn vị giá mà không sử dụng các chỉ số kỹ thuật quá phức tạp và kết quả backtest là đơn giản.
  3. Việc thực hiện mã có kích thước nhỏ, chạy hiệu quả và dễ tối ưu hóa và cải thiện.
  4. Stop loss và take profit có thể được thiết lập linh hoạt bằng cách điều chỉnh các tham số để kiểm soát rủi ro.

Phân tích rủi ro

Những rủi ro chính cần lưu ý là:

  1. Số lượng cố định được sử dụng để mở các vị trí mà không xem xét kích thước vị trí, có thể gây ra rủi ro giao dịch quá mức.
  2. Không có bộ lọc nào được thiết lập có thể tạo ra quá nhiều giao dịch không hợp lệ trên các thị trường giới hạn phạm vi.
  3. Dữ liệu backtest không đủ có thể sai lệch đánh giá về hiệu suất chiến lược.

Các phương pháp sau đây có thể được áp dụng để giảm thiểu rủi ro:

  1. Kết hợp mô hình kích thước vị trí để điều chỉnh kích thước giao dịch theo quy mô vốn.
  2. Thêm các bộ lọc thương mại để tránh việc mở giao dịch vô trật tự trong điều kiện thị trường hỗn loạn.
  3. Thu thập nhiều dữ liệu lịch sử hơn để mở rộng thời gian backtest và cải thiện độ tin cậy kết quả.

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

Các hướng tối ưu hóa tiềm năng cho chiến lược bao gồm:

  1. Tích hợp mô-đun kích thước vị trí để xác định kích thước giao dịch dựa trên tỷ lệ sử dụng vốn.
  2. Thiết kế dừng lỗ và lấy lợi nhuận theo dõi cơ chế cho lối ra linh hoạt.
  3. Thêm bộ lọc giao dịch để tránh giao dịch không hợp lệ.
  4. Tự động tối ưu hóa các thông số bằng cách sử dụng các phương pháp học máy.
  5. Hỗ trợ giao dịch phân phối trên nhiều sản phẩm.

Kết luận

Chiến lược này thực hiện giao dịch đột phá dài bằng cách sử dụng các quy tắc mẫu đường K đơn giản. Mặc dù vẫn còn một số chỗ để cải thiện, từ quan điểm đơn giản và trực tiếp, nó là một chiến lược vị trí dài rất phù hợp cho người mới bắt đầu hiểu và sử dụng. Với việc tối ưu hóa liên tục, hiệu suất chiến lược có thể được tăng thêm.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
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/
// © TheQuantScience

//@version=5
strategy("SimpleBarPattern_LongOnly", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, currency = currency.EUR, initial_capital = 1000, commission_type = strategy.commission.percent, commission_value = 0.03)

// Make input options that configure backtest date range
startDate = input.int(title="Start Date",
     defval=1, minval=1, maxval=31)
startMonth = input.int(title="Start Month",
     defval=1, minval=1, maxval=12)
startYear = input.int(title="Start Year",
     defval=2017, minval=1800, maxval=2100)

endDate = input.int(title="End Date",
     defval=8, minval=1, maxval=31)
endMonth = input.int(title="End Month",
     defval=3, minval=1, maxval=12)
endYear = input.int(title="End Year",
     defval=2022, minval=1800, maxval=2100)
     
// Look if the close time of the current bar
// Falls inside the date range
inDateRange = true

// Setting Conditions 
ConditionA = low < open 
ConditionB = low < low[1]
ConditionC = close > open
ConditionD = close > open[1] and close > close[1]

FirstCondition = ConditionA and ConditionB 
SecondCondition = ConditionC and ConditionD
IsLong = FirstCondition and SecondCondition

TakeProfit_long = input(4.00)
StopLoss_long = input(4.00)
Profit = TakeProfit_long*close/100/syminfo.mintick
Loss = StopLoss_long*close/100/syminfo.mintick

EntryCondition = IsLong and inDateRange

// Trade Entry&Exit Condition 
if EntryCondition and strategy.opentrades == 0
    strategy.entry(id = 'Open_Long', direction = strategy.long)
    strategy.exit(id = "Close_Long", from_entry = 'Open_Long', profit = Profit, loss = Loss)







Thêm nữa