
Hệ thống giao dịch đột phá điều chỉnh tỷ lệ dao động hai chu kỳ là một chiến lược định lượng được thiết kế dựa trên quy tắc giao dịch nổi tiếng của hải đảo, chiến lược này sử dụng hai chu kỳ thời gian khác nhau ((20 ngày và 55 ngày) để nắm bắt đột phá thị trường, đồng thời kết hợp các chỉ số tỷ lệ dao động để quản lý vị trí động. Hệ thống này kết hợp nhiều kỹ thuật giao dịch định lượng như theo dõi xu hướng, giao dịch đột phá, điều chỉnh tỷ lệ dao động vị trí và tăng vị trí kim tự tháp, nhằm nắm bắt hiệu quả xu hướng thị trường trung và dài hạn.
Các nguyên tắc cốt lõi của chiến lược này bao gồm:
Bước vào vòng haiChiến lược sử dụng hai bộ hệ thống nhập cảnh - Hệ thống 1 sử dụng điểm cao / điểm thấp 20 ngày làm tín hiệu nhập cảnh chính; Hệ thống 2 được kích hoạt sau khi giao dịch thua lỗ lần trước, sử dụng điểm cao / điểm thấp 55 ngày làm tín hiệu nhập cảnh. Thiết kế này có thể tự động điều chỉnh độ nhạy vào thị trường.
Đo lường biến động và quản lý vị tríChiến lược: Sử dụng 20 ngày trung bình real amplitude ((ATR) như một thước đo của thị trường biến động, tính toán vị trí hợp lý bằng công thức: đơn vị vị trí = số tiền rủi ro / (N * điểm giá trị). Trong đó, số tiền rủi ro bằng lợi nhuận tài khoản nhân phần trăm rủi ro đặt ((% 1) mặc định). Phương pháp này đảm bảo tiếp xúc với rủi ro duy trì nhất trong môi trường biến động khác nhau.
Cơ chế tăng giá của kim tự tháp: Khi giá của vị trí lợi nhuận đã có tiếp tục di chuyển theo hướng thuận lợi (khoảng cách ít nhất 0,5N), chiến lược cho phép thêm các đơn vị mới có cùng kích thước. Phương pháp gia tăng giá kim tự tháp này có thể mở rộng tiềm năng lợi nhuận trong thị trường có xu hướng mạnh.
Chu kỳ ngắn đảo ngược mức cân bằngChiến lược: Sử dụng điểm thấp / cao 10 ngày làm tín hiệu thoát cho các vị trí nhiều / trống. Khi giá giảm xuống mức thấp nhất 10 ngày, xóa tất cả các vị trí nhiều đầu; Khi giá phá vỡ mức cao nhất 10 ngày, xóa tất cả các vị trí trống.
Cơ chế chuyển đổi hệ thốngChiến lược sẽ tự động điều chỉnh hệ thống nhập vào tùy thuộc vào kết quả giao dịch. Nếu giao dịch thua lỗ ở một hướng, giao dịch theo hướng tương tự sẽ sử dụng hệ thống 2 ((chu kỳ 55 ngày); Sau khi giao dịch có lợi nhuận, hãy quay trở lại sử dụng hệ thống 1 ((chu kỳ 20 ngày).
Bằng cách sử dụng kết hợp các nguyên tắc này, chiến lược có thể tham gia sớm vào thị trường xu hướng, gia tăng vị thế và rút ra khi xu hướng đảo ngược, để nắm bắt hiệu quả xu hướng thị trường trung và dài hạn.
Khi phân tích mã, chúng ta có thể kết luận rằng chiến lược này có một số ưu điểm chính:
Quyết định giao dịch tự động hóaChiến lược: hoàn toàn dựa trên quy tắc định lượng để thực hiện giao dịch, loại bỏ sự can thiệp của con người và đảm bảo thực hiện nghiêm ngặt kỷ luật giao dịch. Các điều kiện nhập cảnh, gia tăng và thoát ra được xác định rõ ràng trong mã, không cần phán đoán chủ quan.
Quản lý rủi ro độngBằng cách giới hạn rủi ro cho mỗi giao dịch với tỷ lệ phần trăm cố định của quyền lợi tài khoản (bằng mặc định là 1%) và kết hợp với ATR để điều chỉnh kích thước vị trí, chiến lược này có thể duy trì tiếp xúc rủi ro nhất quán trong các môi trường biến động khác nhau. Phương pháp này tự động giảm vị trí trong thị trường biến động cao và tăng vị trí thích hợp trong thị trường biến động thấp.
Thích ứng với điều kiện thị trườngThiết kế hai chu kỳ cho phép chiến lược tự động điều chỉnh theo tình trạng thị trường. Sử dụng chu kỳ ngắn hơn trong thị trường xu hướng có lợi nhuận liên tục (khoảng 20 ngày) để duy trì độ nhạy; chuyển sang chu kỳ dài hơn sau khi gặp lỗ (khoảng 55 ngày) để giảm tín hiệu giả.
Cơ chế tăng trưởng lợi nhuậnChiến lược dựa trên kích thước vị trí tính toán quyền lợi tài khoản hiện tại, tự động tăng vị trí khi tài khoản tăng lên, để đạt được hiệu ứng lợi nhuận; đồng thời mở rộng tiềm năng lợi nhuận trong xu hướng mạnh thông qua cơ chế tăng vị trí kim tự tháp.
Khả năng thích ứng đa thị trườngThiết kế chiến lược có thể áp dụng cho nhiều loại tài sản, đặc biệt là trong thị trường có đặc điểm xu hướng rõ ràng như vàng. Bằng cách điều chỉnh các tham số, có thể tối ưu hóa cho các đặc điểm thị trường khác nhau.
Kiểm soát rủi ro rõ ràng: Sử dụng phá vỡ ngược 10 ngày như một tín hiệu ra đi, cung cấp điểm dừng rõ ràng cho mỗi giao dịch, kiểm soát hiệu quả rủi ro giao dịch đơn lẻ; đồng thời kiểm soát rủi ro hệ thống bằng cách thiết lập tỷ lệ phần trăm rủi ro tối đa.
Mặc dù có nhiều lợi thế, chiến lược này vẫn có những rủi ro tiềm ẩn:
Rủi ro đột phá giảTrong thị trường xung đột, giá có thể xuyên qua các điểm cao / thấp thường xuyên nhưng sau đó giảm nhanh chóng, dẫn đến tổn thất liên tục. Thiếu cơ chế lọc phá vỡ giả mạo trong mã có thể tạo ra nhiều tín hiệu không hiệu quả hơn trong thị trường không xu hướng.
Rủi ro gia tăng: Cơ chế tăng cường kim tự tháp rất hiệu quả khi xu hướng tiếp tục, nhưng nếu xu hướng đột ngột đảo ngược, các vị trí nhiều đơn vị có thể dẫn đến tổn thất lớn. Mặc dù chiến lược đặt điều kiện thoát ra, nhưng trong một sự đảo ngược mạnh mẽ vẫn có thể chịu tổn thất lớn.
Độ nhạy tham sốHiệu suất chiến lược phụ thuộc rất nhiều vào các thiết lập tham số (chu kỳ đầu vào, chu kỳ ra, chu kỳ ATR, khoảng thời gian đặt cược, v.v.). Các môi trường thị trường khác nhau có thể yêu cầu các kết hợp tham số khác nhau, và các tham số cố định có thể dẫn đến hiệu suất không ổn định.
Rủi ro thanh khoản: Trong thị trường ít thanh khoản, việc đặt hàng nhiều có thể làm tăng điểm trượt hoặc khó giao dịch theo giá dự kiến, ảnh hưởng đến hiệu quả thực hiện thực tế. Không có cơ chế xử lý các vấn đề về thanh khoản trong mã.
Tiếp cận rủi ro hệ thống: Là một chiến lược theo dõi xu hướng thuần túy, có thể có liên quan cao đến các chiến lược theo xu hướng khác trong thời gian thị trường giảm chung hoặc biến động mạnh, khó để cung cấp sự bảo vệ đa dạng.
Vấn đề tính chính xác: Sử dụng hàm math.floor trong mã để tính toán toàn bộ vị trí, có thể dẫn đến vị trí quá nhỏ hoặc không thể giao dịch trong tài khoản nhỏ. Đồng thời, thiết lập giá trị điểm không đúng cũng có thể dẫn đến tính toán vị trí sai.
Đối với những rủi ro này, bạn có thể xem xét thêm bộ lọc xu hướng, đặt giới hạn vị trí tối đa, tối ưu hóa các quy tắc gia tăng và tăng cơ chế điều chỉnh tỷ lệ dao động để kiểm soát rủi ro.
Dựa trên phân tích mã, chiến lược này có thể được tối ưu hóa theo một số hướng sau:
Thêm bộ lọc xu hướngChiến lược hiện tại hoàn toàn dựa trên giao dịch phá vỡ giá, dễ bị ảnh hưởng bởi phá vỡ giả. Bạn có thể thêm các chỉ số xu hướng (như trung bình di chuyển, ADX, v.v.) như là điều kiện lọc, chỉ thực hiện giao dịch khi xu hướng phù hợp, giảm giao dịch thua lỗ trong thị trường xung đột.
Tối ưu hóa quy tắc gia tăngCác cơ chế gia hạn hiện có tương đối đơn giản, có thể xem xét việc giới thiệu tỷ lệ gia hạn giảm dần (các đơn vị gia hạn tiếp theo dần dần nhỏ hơn) hoặc đặt giới hạn số lần gia hạn tối đa, cân bằng nhu cầu mở rộng lợi nhuận và kiểm soát rủi ro.
Điều chỉnh tham số động: Có thể điều chỉnh động cơ nhập / thoát chu kỳ và khoảng thời gian đặt cược dựa trên tỷ lệ biến động của thị trường hoặc cường độ xu hướng. Ví dụ, kéo dài chu kỳ nhập vào trong thị trường biến động cao và rút ngắn chu kỳ thoát ra trong thị trường biến động thấp, làm cho chiến lược thích ứng hơn.
Thêm bộ lọc thời gianThêm các điều kiện lọc thời gian giao dịch, tránh các thời điểm công bố dữ liệu kinh tế quan trọng hoặc ít lưu động hơn, giảm rủi ro do biến động bất thường.
Xác nhận khung thời gian đa dạngHướng xu hướng kết hợp với chu kỳ thời gian dài hơn làm điều kiện lọc giao dịch, ví dụ: thực hiện giao dịch chỉ khi xu hướng đường nắng phù hợp với hướng xu hướng 4 giờ, cải thiện chất lượng tín hiệu.
Tối ưu hóa quản lý tài chính: Có thể giới thiệu các mô hình quản lý tài chính phức tạp hơn, chẳng hạn như Công thức Kelly hoặc Phương pháp f giá trị tối ưu, điều chỉnh tỷ lệ rủi ro theo tỷ lệ lợi nhuận dự kiến và tỷ lệ lợi nhuận động để tối ưu hóa hơn nữa đường cong tăng trưởng tài chính.
Thêm hệ thống ngăn chặnChiến lược hiện tại chỉ có cơ chế ra ngoài dựa trên phá vỡ ngược, bạn có thể xem xét thêm một số cơ chế khóa lợi nhuận, chẳng hạn như xóa một số vị trí khi đạt được mục tiêu lợi nhuận cụ thể, đồng thời nắm bắt xu hướng và bảo vệ lợi nhuận.
Những hướng tối ưu hóa này có thể nâng cao hiệu quả tính ổn định và lợi nhuận của chiến lược, đặc biệt là khả năng thích ứng trong các môi trường thị trường khác nhau.
Hệ thống giao dịch đột phá điều chỉnh tỷ lệ dao động hai chu kỳ là một chiến lược giao dịch định lượng hoàn chỉnh dựa trên quy tắc giao dịch hải đảo, kết hợp nhiều kỹ thuật giao dịch định lượng như đột phá vào, quản lý vị trí biến động, đặt hàng bằng kim tự tháp và chu kỳ thích ứng. Chiến lược này bằng cách nắm bắt đợt phá vỡ giá vào xu hướng, sử dụng lỗ hổng kiểm soát rủi ro của biến động và tối đa hóa lợi nhuận theo xu hướng thông qua đặt hàng bằng kim tự tháp.
Giá trị cốt lõi của chiến lược này nằm ở việc thiết kế hệ thống toàn diện của nó, bao gồm các khía cạnh khác nhau như vào, ra, quản lý vị trí và kiểm soát rủi ro, tạo thành một hệ thống giao dịch tự động. Đặc biệt là cơ chế điều chỉnh vị trí biến động và thiết kế thích ứng hai chu kỳ của nó, cho phép chiến lược duy trì hiệu suất tương đối ổn định trong các môi trường thị trường khác nhau.
Tuy nhiên, như một chiến lược theo dõi xu hướng, nó có thể không hoạt động tốt trong thị trường biến động và cần được cải thiện bằng cách thêm bộ lọc xu hướng, tối ưu hóa các quy tắc gia tăng và điều chỉnh các tham số động. Đồng thời, chiến lược này phù hợp với một phần của danh mục đầu tư và được sử dụng kết hợp với các loại chiến lược khác (như chiến lược quay trở lại bình quân) để tạo ra đường cong lợi nhuận mịn hơn.
Nhìn chung, đây là một chiến lược giao dịch định lượng được thiết kế hợp lý, logic rõ ràng, có nền tảng lý thuyết và giá trị thực tế tốt. Với các tham số thích hợp và cơ chế bổ sung, chiến lược này có tiềm năng tạo ra lợi nhuận ổn định trong nhiều môi trường thị trường.
/*backtest
start: 2024-06-16 00:00:00
end: 2025-06-15 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
//策略声明和基础设置
strategy("Turtle Trading System (Full Version)", overlay=true, pyramiding=5)
//风险控制参数
riskPercent = input.float(0.5, title="每笔交易风险占资金百分比", minval=0.1, maxval=5.0, step=0.1)
pointValue = input.float(1.0, title="点值($/点)")
//入场周期参数
entryPeriod1 = input.int(20, title="系统1入场周期")
entryPeriod2 = input.int(55, title="系统2入场周期(亏损后)")
//出场和波动性参数
exitPeriod = input.int(10, title="出场周期")
nPeriod = input.int(20, title="N周期(ATR)")
pyramidSpacing = input.float(0.5, title="每N x ...添加单位", step=0.1)
//波动性指标计算
N = ta.atr(nPeriod)//计算ATR作为市场波动性的量化标准
//系统1入场通道计算(20周期)
entryHigh1 = ta.highest(high, entryPeriod1)//计算20周期内最高价作为做多突破位
entryLow1 = ta.lowest(low, entryPeriod1)//计算20周期内最低价作为做空突破位
//系统2入场通道计算(55周期)
entryHigh2 = ta.highest(high, entryPeriod2)//计算55周期内最高价作为保守做多突破位
entryLow2 = ta.lowest(low, entryPeriod2)//计算55周期内最低价作为保守做空突破位
//出场通道计算(10周期)
exitLong = ta.lowest(low, exitPeriod)//计算10周期内最低价作为多头出场位
exitShort = ta.highest(high, exitPeriod)//计算10周期内最高价作为空头出场位
//交易状态跟踪变量
var bool lastLongLoss = false//记录上次多头交易是否亏损
var bool lastShortLoss = false//记录上次空头交易是否亏损
var float lastLongEntryPrice = na//记录上次多头入场价格
var float lastShortEntryPrice = na//记录上次空头入场价格
//账户权益和风险计算
equity = strategy.equity//获取当前账户总权益
riskDollars = equity * (riskPercent / 100)//计算每笔交易允许的风险金额
unitSize = riskDollars / (N * pointValue)//基于ATR计算标准头寸规模
positionSize = math.round(unitSize, 3)//设定最终头寸大小
//入场信号生成逻辑
useSystem1Long = close > entryHigh1[1]//系统1多头入场条件
useSystem2Long = lastLongLoss and close > entryHigh2[1]//系统2多头入场条件(仅在上次亏损后)
useSystem1Short = close < entryLow1[1]//系统1空头入场条件
useSystem2Short = lastShortLoss and close < entryLow2[1]//系统2空头入场条件(仅在上次亏损后)
//金字塔加仓条件
canAddLong = strategy.opentrades > 0 and strategy.position_size > 0 and close >= lastLongEntryPrice + (pyramidSpacing * N)
//多头加仓条件
canAddShort = strategy.opentrades > 0 and strategy.position_size < 0 and close <= lastShortEntryPrice - (pyramidSpacing * N)
//空头加仓条件
//出场信号生成
longExit = close < exitLong//多头出场条件
shortExit = close > exitShort//空头出场条件
//多头入场执行
if (useSystem1Long or useSystem2Long)
strategy.entry("Long", strategy.long, qty=positionSize)//执行多头开仓
lastLongEntryPrice := close//记录多头入场价格作为加仓基准
lastLongLoss := false//重置多头亏损状态
//空头入场执行
if (useSystem1Short or useSystem2Short)
strategy.entry("Short", strategy.short, qty=positionSize)//执行空头开仓
lastShortEntryPrice := close//记录空头入场价格作为加仓基准
lastShortLoss := false//重置空头亏损状态
//多头加仓执行
if (canAddLong)
strategy.entry("Long Add", strategy.long, qty=positionSize)//执行多头加仓
lastLongEntryPrice := close//更新多头入场价格基准
//空头加仓执行
if (canAddShort)
strategy.entry("Short Add", strategy.short, qty=positionSize)//执行空头加仓
lastShortEntryPrice := close//更新空头入场价格基准
//多头出场执行
if (longExit)
strategy.close("Long")//平掉初始多头头寸
strategy.close("Long Add")//平掉所有多头加仓头寸
lastLongLoss := close < lastLongEntryPrice//根据出场价格更新亏损状态
//空头出场执行
if (shortExit)
strategy.close("Short")//平掉初始空头头寸
strategy.close("Short Add")//平掉所有空头加仓头寸
lastShortLoss := close > lastShortEntryPrice//根据出场价格更新亏损状态
//系统1入场信号可视化
plot(entryHigh1, title="20周期高点", color=color.green)//绘制系统1多头入场线
plot(entryLow1, title="20周期低点", color=color.red)//绘制系统1空头入场线
//系统2入场信号可视化
plot(entryHigh2, title="55周期高点", color=color.lime, linewidth=1)//绘制系统2多头入场线
plot(entryLow2, title="55周期低点", color=color.maroon, linewidth=1)//绘制系统2空头入场线
//出场信号可视化
plot(exitLong, title="10周期低点(多头出场)", color=color.orange)//绘制多头出场信号线
plot(exitShort, title="10周期高点(空头出场)", color=color.blue)//绘制空头出场信号线