Chiến lược đột phá dài hạn dựa trên K-line


Ngày tạo: 2024-01-05 12:37:46 sửa đổi lần cuối: 2024-01-05 12:37:46
sao chép: 0 Số nhấp chuột: 638
1
tập trung vào
1621
Người theo dõi

Chiến lược đột phá dài hạn dựa trên K-line

Tổng quan

Chiến lược này có những ưu điểm như đơn giản, logic rõ ràng và dễ hiểu.

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

Lý luận phán đoán cốt lõi của chiến lược dựa trên 4 quy tắc hình dạng K-line sau:

  1. Giá thấp nhất hiện tại của đường K 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 K hiện tại cao hơn giá mở cửa
  4. Giá đóng cửa K hiện tại cao hơn giá mở cửa và đóng cửa của K trước đó

Khi đáp ứng cùng một lúc với 4 quy tắc trên, thực hiện các hoạt động mở vị trí đa hướng.

Ngoài ra, chiến lược cũng đặt điểm dừng lỗ và vị trí dừng lỗ, khi giá kích hoạt điều kiện dừng lỗ hoặc dừng lỗ, thực hiện các hoạt động thanh toán.

Phân tích lợi thế

Chiến lược này có một số ưu điểm:

  1. Quy tắc phán đoán K-line được sử dụng rất đơn giản và trực tiếp, dễ hiểu và dễ thực hành.
  2. Chỉ dựa trên giá cả thực thể, không sử dụng các chỉ số kỹ thuật quá phức tạp, hiệu quả được đo lường trực tiếp.
  3. Có thể thực hiện với số lượng mã nhỏ, hiệu quả hoạt động cao, dễ dàng tối ưu hóa và cải tiến.
  4. Có thể điều chỉnh thông qua các tham số, tự do thiết lập điều kiện dừng lỗ, kiểm soát rủi ro.

Phân tích rủi ro

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

  1. Sử dụng số lượng cố định để mở vị trí, không xem xét quản lý vị trí, có thể có nguy cơ giao dịch quá mức.
  2. Không có bộ lọc, quá nhiều giao dịch có thể bị vô hiệu hóa trong tình huống chấn động.
  3. Dữ liệu phản hồi không đầy đủ, có thể gây sai lệch trong đánh giá hiệu quả của chiến lược.

Bạn có thể giảm thiểu rủi ro bằng cách:

  1. Tham gia vào mô-đun quản lý vị trí, điều chỉnh số lượng giao dịch theo kích thước quỹ.
  2. Tăng các điều kiện lọc giao dịch để tránh việc mở các vị trí không có trật tự trong đĩa rung động.
  3. Lưu trữ nhiều dữ liệu lịch sử hơn, kéo dài thời gian tra lại và tăng độ tin cậy của kết quả.

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

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

  1. Thêm mô-đun quản lý vị thế, xác định quy mô giao dịch dựa trên tỷ lệ sử dụng tiền.
  2. Thiết kế hệ thống theo dõi chống hư hỏng để tạo ra sự linh hoạt trong trận đấu.
  3. Thêm mô-đun lọc giao dịch để tránh giao dịch không hiệu lực.
  4. Sử dụng phương pháp học máy để tự động tối ưu hóa các tham số.
  5. Hỗ trợ nhiều loại giao dịch thâm nhập.

Tóm tắt

Chiến lược này thực hiện nhiều giao dịch đột phá thông qua quy tắc phán đoán hình dạng K đơn giản, mặc dù có một số không gian cải tiến, nhưng xét đến sự đơn giản và trực tiếp, chiến lược này là một chiến lược dài hạn rất phù hợp để người mới bắt đầu hiểu và sử dụng. Bằng cách tối ưu hóa liên tục, có thể làm cho hiệu quả chiến lược trở nên tuyệt vời hơn.

Mã nguồn chiến lược
/*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)