Chiến lược giao dịch định lượng động lượng dựa trên chu kỳ mặt trăng trên thị trường tiền điện tử

Lunar Calendar Cyclical Trading ETHUSDT Fixed Date Entry/Exit Quantitative Strategy
Ngày tạo: 2025-08-11 09:09:22 sửa đổi lần cuối: 2025-08-11 09:09:22
sao chép: 0 Số nhấp chuột: 182
2
tập trung vào
319
Người theo dõi

Chiến lược giao dịch định lượng động lượng dựa trên chu kỳ mặt trăng trên thị trường tiền điện tử Chiến lược giao dịch định lượng động lượng dựa trên chu kỳ mặt trăng trên thị trường tiền điện tử

Tổng quan

Chiến lược này là một phương pháp giao dịch tiền điện tử dựa trên ngày theo lịch sử, mua và bán các hoạt động bằng cách sử dụng các ngày cụ thể trong chu kỳ lịch. Chiến lược này bắt đầu từ năm mới theo lịch và kéo dài đến cuối tháng 12 theo lịch và tuân theo các quy tắc đơn giản: mua vào ngày 5 của mỗi tháng theo lịch và bán vào ngày 26 của mỗi tháng theo lịch.

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

Nguyên tắc cốt lõi của chiến lược này dựa trên các tác động có thể có của chu kỳ lịch đối với thị trường tiền điện tử. Mã thực hiện ý tưởng này bằng cách:

  1. Đầu tiên, hãy xác định ngày bắt đầu năm mới của mỗi năm và số ngày của mỗi tháng, bao gồm giai đoạn từ năm 2020 đến 2026.
  2. Xác định tháng và ngày hiện tại bằng cách tính số ngày khác nhau giữa ngày hiện tại và năm mới theo lịch.
  3. SIGNAL BUY được kích hoạt khi ngày là ngày thứ 5 và không có vị trí hiện tại.
  4. Khi ngày 26 theo lịch Lunar và giữ vị trí, kích hoạt tín hiệu bán.
  5. Khi mua, hãy tính đến các điểm trượt và các khoản phí, và sử dụng tất cả số tiền có sẵn để mua càng nhiều tiền điện tử càng tốt.
  6. Bán đi tất cả các cổ phần của mình để có được lợi nhuận hoặc dừng lỗ.

Chiến lược sử dụng phương pháp tính ngày chính xác, lưu trữ số ngày của mỗi tháng theo lịch bằng mảng và tính tổng số ngày từ năm mới theo lịch để xác định chính xác ngày tháng hiện tại. Phương pháp này đảm bảo kích hoạt chính xác tín hiệu giao dịch.

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

Phân tích các mã của chiến lược này, chúng ta có thể tóm tắt những ưu điểm sau:

  1. Quy tắc đơn giản và rõ ràng: Ngày mua và bán cố định làm cho chiến lược rất trực quan, dễ hiểu và thực hiện, giảm phán đoán chủ quan của nhà giao dịch.
  2. Cân nhắc các yếu tố xung đột thị trườngChiến lược này có tính đến phí và điểm trượt 0.1%, giúp kết quả đo lại gần với môi trường giao dịch thực tế.
  3. Tăng cường hiệu quả sử dụng vốnGiao dịch này sử dụng 100% số tiền có sẵn, tối đa hóa lợi nhuận tiềm năng.
  4. Cân nhắc về chu kỳ kinh nguyệtKhác với phân tích kỹ thuật truyền thống, chiến lược này đã đưa ra yếu tố lịch sử, có thể nắm bắt được các mô hình độc đáo liên quan đến hành vi của các nhà đầu tư trên thị trường châu Á.
  5. Tính bền vững lâu dàiChiến lược cung cấp dữ liệu lịch từ năm 2020 đến 2026, cho phép các nhà giao dịch áp dụng phương pháp này trong thời gian dài.
  6. Hỗ trợ thị giác: Giúp các nhà giao dịch trực quan theo dõi sự thực hiện chiến lược bằng cách hiển thị các thẻ ngày theo lịch trên biểu đồ.
  7. Tránh buôn bán quá mứcTrong khi đó, các nhà đầu tư khác cũng đang tìm cách giảm bớt chi phí và rủi ro của việc giao dịch quá mức.

Rủi ro chiến lược

Mặc dù có những lợi thế như trên, chiến lược này cũng có một số rủi ro tiềm ẩn:

  1. Thiếu cơ chế quản lý rủi roChiến lược không đặt điểm dừng lỗ, có thể dẫn đến tổn thất đáng kể nếu thị trường giảm mạnh sau khi mua.
  2. Bỏ qua xu hướng và tình trạng thị trườngChiến lược chỉ giao dịch dựa trên ngày, không tính đến xu hướng, biến động hoặc các chỉ số kỹ thuật khác của thị trường.
  3. Giả sử có định luật chu kỳChiến lược này giả định rằng chu kỳ âm lịch có liên quan đến giá tiền điện tử, nhưng mối liên quan này có thể không ổn định hoặc không tồn tại.
  4. Giới hạn thời gian cụ thểMặc dù dữ liệu được cung cấp cho năm 2020-2026, dữ liệu lịch trong những năm tới cần được cập nhật và chiến lược có thể không hoạt động ngoài phạm vi này.
  5. Rủi ro thanh khoản: Có thể gặp rắc rối về tính thanh khoản của thị trường vào một ngày đặc biệt, đặc biệt là khi sử dụng số tiền lớn.
  6. Khả năng tính toán lỗi ngày: Bất kỳ lỗi nào trong việc tính toán ngày dương lịch có thể dẫn đến tín hiệu giao dịch sai.
  7. Thiếu khả năng thích ứng: Ngày giao dịch cố định không thích ứng với điều kiện thị trường thay đổi, có thể bỏ lỡ cơ hội mua hoặc bán tốt hơn.

Để giảm thiểu các rủi ro này, các nhà giao dịch có thể xem xét xác nhận giao dịch kết hợp với các chỉ số kỹ thuật khác hoặc đặt mức dừng cố định để hạn chế tổn thất trong một giao dịch.

Hướng tối ưu hóa chiến lược

Một số hướng tối ưu hóa có thể được đưa ra thông qua phân tích sâu về mã:

  1. Giới thiệu cơ chế dừng lỗ: Thêm điều kiện dừng lỗ theo tỷ lệ phần trăm hoặc số tiền tuyệt đối, tự động thanh toán lỗ khi lỗ đạt đến một mức thấp nhất định, tránh mất mát lớn. Mã tối ưu có thể tăng tương tựif strategy.position_size > 0 and close < entry_price * (1 - stop_loss_percent)Điều kiện phán quyết.

  2. Xác nhận chỉ số kỹ thuậtGiao dịch ngày dương lịch chỉ được thực hiện khi chỉ số kỹ thuật cung cấp tín hiệu thuận lợi. Điều này có thể cải thiện chất lượng tín hiệu.

  3. Tối ưu hóa ngày mua bán: Phân tích ngày nào trong lịch sử thực sự cung cấp thời gian mua và bán tốt nhất cho cặp, thay vì sử dụng ngày 5 và ngày 26 một cách cố định. Có thể một số cặp ngày cụ thể sẽ hoạt động tốt hơn.

  4. Quản lý một số vị tríThay đổi chiến lược để giao dịch với một phần vốn thay vì 100% vốn, hoặc điều chỉnh kích thước vị trí theo động thái biến động của thị trường để phân tán rủi ro.

  5. Thêm bộ lọc trạng thái thị trườngTrong các trường hợp thị trường cực đoan (như biến động cao hoặc xu hướng thị trường gấu rõ ràng), hãy tạm dừng thực hiện chiến lược và tránh giao dịch trong môi trường bất lợi.

  6. Mở rộng phạm vi thời gian áp dụng: Thêm dữ liệu lịch nhiều năm hơn, hoặc phát triển một hàm tự động tính toán ngày lịch để chiến lược có thể hoạt động vô hạn.

  7. Tăng thương mại đa giống: Mở rộng chiến lược sang nhiều loại tiền điện tử hoặc các loại tài sản khác, và quan sát sự khác biệt về hiệu suất trong các thị trường khác nhau theo chu kỳ âm lịch.

Việc thực hiện các hướng tối ưu hóa này có thể làm tăng đáng kể tính mạnh mẽ và khả năng thích ứng của chiến lược, trong khi vẫn giữ nguyên ý tưởng cốt lõi đơn giản và trực quan của nó.

Tóm tắt

Chiến lược giao dịch tiền điện tử dựa trên chu kỳ lịch cung cấp một góc nhìn giao dịch độc đáo, sử dụng các hoạt động mua và bán vào các ngày lịch cụ thể. Ưu điểm lớn nhất của chiến lược này là các quy tắc đơn giản và rõ ràng và dễ thực hiện, kết hợp với yếu tố độc đáo của chu kỳ lịch, có thể nắm bắt các mô hình thị trường bị bỏ qua trong phân tích kỹ thuật thông thường.

Tuy nhiên, chiến lược này cũng phải đối mặt với những thách thức về việc thiếu quản lý rủi ro và khả năng thích ứng của thị trường. Để tăng hiệu quả của chiến lược, các biện pháp cải tiến như giới thiệu các cơ chế dừng lỗ, xác nhận các chỉ số kỹ thuật và tối ưu hóa ngày mua bán được đề xuất. Những cải tiến này không chỉ làm giảm rủi ro tiềm ẩn mà còn tăng khả năng thích ứng của chiến lược trong các môi trường thị trường khác nhau.

Điều đáng chú ý là bất kỳ chiến lược giao dịch nào cũng cần được kiểm tra đầy đủ và kiểm tra về phía trước để xác minh hiệu quả của nó trong điều kiện thị trường thực tế. Khi áp dụng chiến lược này, các nhà giao dịch nên điều chỉnh phù hợp với khả năng chịu rủi ro và mục tiêu đầu tư của mình và kết hợp với các phương pháp phân tích khác để đưa ra quyết định giao dịch toàn diện hơn.

Mã nguồn chiến lược
/*backtest
start: 2024-08-11 00:00:00
end: 2025-08-09 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("Lunar ETHUSDT Trading 100% Invest with Fee & Slippage (2020~2026)", overlay=true, commission_type=strategy.commission.percent, commission_value=0.1)

// Fee and slippage settings
feePercent = 0.1    // 0.1%
slippageTicks = 3
tickSize = syminfo.mintick
slippage = slippageTicks * tickSize

// Function for lunar new year start date and monthly lengths by year
f_get_lunar_data() =>
    y = year(time)
    if y == 2020
        [timestamp("Asia/Seoul", 2020, 1, 25, 0, 0), array.from(29,30,29,30,29,30,29,30,29,30,30,29)]
    else if y == 2021
        [timestamp("Asia/Seoul", 2021, 2, 12, 0, 0), array.from(30,29,30,29,30,29,30,29,30,29,30,30)]
    else if y == 2022
        [timestamp("Asia/Seoul", 2022, 2, 1, 0, 0), array.from(29,30,29,30,29,30,29,30,30,29,30,29)]
    else if y == 2023
        [timestamp("Asia/Seoul", 2023, 1, 22, 0, 0), array.from(30,29,30,29,30,29,30,30,29,30,29,30)]
    else if y == 2024
        [timestamp("Asia/Seoul", 2024, 2, 10, 0, 0), array.from(30,29,30,29,30,29,30,29,30,29,30,30,29)]
    else if y == 2025
        [timestamp("Asia/Seoul", 2025, 1, 29, 0, 0), array.from(29,30,29,30,29,30,29,30,30,29,30,29)]
    else if y == 2026
        [timestamp("Asia/Seoul", 2026, 2, 17, 0, 0), array.from(30,29,30,29,30,29,30,30,29,30,29,30)]
    else
        [na, array.new_int()]

// Function to create cumulative monthly days array
f_get_lunar_md(days_arr) =>
    arr = array.new_int()
    sum = 0
    for i = 0 to array.size(days_arr) - 1
        sum += array.get(days_arr, i)
        array.push(arr, sum)
    arr

// Get lunar start date and monthly lengths
[ts_start, lunar_lengths] = f_get_lunar_data()
valid = not na(ts_start)
days_since = valid ? math.floor((time - ts_start) / 86400000) : na
cumulative = valid ? f_get_lunar_md(lunar_lengths) : na

// Declare lunar month, day, last day variables
var int lunar_month = na
var int lunar_day = na
var int lunar_last_day = na

// Calculate lunar date
if valid and not na(days_since) and days_since >= 0
    lunar_month := na
    lunar_day := na
    lunar_last_day := na
    for i = 0 to array.size(cumulative) - 1
        cum = array.get(cumulative, i)
        prev = i == 0 ? 0 : array.get(cumulative, i - 1)
        if days_since < cum
            lunar_month := i + 1
            lunar_day := days_since - prev + 1
            lunar_last_day := array.get(lunar_lengths, i)
            break
else
    lunar_month := na
    lunar_day := na
    lunar_last_day := na

// Buy condition: Lunar day 5 and no current position
buy_condition = not na(lunar_day) and lunar_day == 5 and strategy.position_size == 0

// Sell condition: Lunar day 26 and holding position
sell_condition = not na(lunar_day) and lunar_day == 26 and strategy.position_size > 0

// Buy/sell price adjusted for slippage and fee
price_buy = close + slippage
price_buy_with_fee = price_buy * (1 + feePercent * 0.01)

price_sell = close - slippage
price_sell_with_fee = price_sell * (1 - feePercent * 0.01)

// Calculate buy quantity using 100% of equity
qty = math.floor(strategy.equity / price_buy_with_fee)

// Buy order (limit)
if buy_condition and qty > 0
    strategy.entry("Lunar Buy", strategy.long, qty, limit=price_buy)

// Sell order (close all)
if sell_condition and strategy.position_size > 0
    strategy.close("Lunar Buy")

// True range variable (for label position adjustment)
tr = ta.tr(true)

// Date format creation
yr = year(time)
mo = month(time)
dy = dayofmonth(time)
mo_str = mo < 10 ? "0" + str.tostring(mo) : str.tostring(mo)
dy_str = dy < 10 ? "0" + str.tostring(dy) : str.tostring(dy)
solar_str = str.tostring(yr) + "-" + mo_str + "-" + dy_str

// Display solar and lunar date and position label (on bar close)
if barstate.islastconfirmedhistory and not na(lunar_day)
    label.new(bar_index, high - tr * 6,  "Solar: " + solar_str + "\nLunar: " + str.tostring(lunar_month) + "-" + str.tostring(lunar_day) ,
      style=label.style_label_up, size=size.normal, color=color.new(color.teal, 50), textcolor=color.white)

// Display "15" label at bottom on lunar day 15 (lowest of last 50 bars - 1 true range)
if not na(lunar_day) and lunar_day == 15
    low_offset = ta.lowest(low, 50) - tr
    label.new(bar_index, low_offset, "15", style=label.style_label_down, color=color.orange, textcolor=color.white, size=size.normal)