Chiến lược này sử dụng True Range và Weighted Moving Average (WMA) để xây dựng một chỉ số giai đoạn chéo để đánh giá xu hướng. Đồng thời, nó có cơ chế tích lũy vị trí kim tự tháp với nhiều cơ chế dừng lỗ để theo đuổi lợi nhuận ổn định.
Chiến lược này đầu tiên tính toán chiều cao lên (sube) và chiều cao xuống (baja), và sau đó tính toán WMA của chu kỳ đường nhanh (corto) và chu kỳ đường chậm (largo) tương ứng. Sự khác biệt giữa đường nhanh và đường chậm được tính toán lại thông qua WMA để có được chỉ số (ind). Khi chỉ số vượt trên 0, một tín hiệu mua được tạo ra. Khi vượt dưới 0, một tín hiệu bán được tạo ra.
Sau khi tham gia thị trường, chiến lược đặt trước 5 vị trí, được tích lũy theo cách kim tự tháp (lặp đôi). Đồng thời, một cơ chế dừng lỗ được thiết lập để các vị trí mở tiếp theo sẽ được đánh giá liệu lợi nhuận nổi hiện tại có thấp hơn đường dừng lỗ không, để kiểm soát rủi ro.
Chiến lược tích hợp các cơ chế như phán đoán chu kỳ chéo, tích lũy vị trí kim tự tháp và nhiều lỗ dừng, có thể kiểm soát rủi ro hiệu quả và theo đuổi lợi nhuận ổn định.
Các phán đoán chéo chu kỳ thiết lập một hệ thống phán đoán xu hướng thông qua sự kết hợp các đường nhanh và chậm, có thể lọc hiệu quả tiếng ồn thị trường và xác định các điểm chuyển hướng xu hướng. Các vị trí kim tự tháp có thể kiếm được nhiều lợi nhuận hơn ở đầu xu hướng, và nhiều cơ chế dừng lỗ có thể kiểm soát hiệu quả lỗ đơn.
Rủi ro chính của chiến lược này là khả năng một sự kiện đột ngột gây ra một sự đảo ngược thị trường nhanh chóng kích hoạt giới hạn dừng lỗ và gây ra tổn thất.
Nguy cơ đảo ngược thị trường có thể được xử lý bằng cách nới lỏng đúng đường dừng lỗ. Tối ưu hóa cài đặt tham số và điều chỉnh các tham số chu kỳ, số lượng vị trí, v.v. có thể cải thiện tính ổn định của chiến lược.
Chiến lược có thể được tối ưu hóa trong các khía cạnh sau:
Tăng các chỉ số thống kê để đánh giá, sử dụng các chỉ số như biến động và khối lượng để điều chỉnh các thông số và làm cho chiến lược thích nghi hơn.
Tăng mô hình học máy để đánh giá, sử dụng LSTM và các mô hình học sâu khác để hỗ trợ đánh giá và cải thiện độ chính xác chiến lược.
Tối ưu hóa các cơ chế quản lý vị trí, xem xét điều chỉnh phạm vi gia tăng vị trí theo tỷ lệ lợi nhuận thay đổi để làm cho tăng trưởng vị trí hợp lý hơn.
Kết hợp các mô hình phòng ngừa rủi ro tương lai để kiểm soát rủi ro hơn nữa thông qua sự điều chỉnh giao dịch tại chỗ và tương lai.
Tóm lại, đây là một chiến lược xu hướng chéo chu kỳ dựa trên các chỉ số True Range với tích lũy vị trí kim tự tháp và nhiều cơ chế dừng lỗ, có thể kiểm soát rủi ro hiệu quả và theo đuổi lợi nhuận ổn định. Đây là một chiến lược giao dịch định lượng rất thực tế. Tuy nhiên, vẫn cần chú ý đến việc đảo ngược rủi ro và các vấn đề tối ưu hóa tham số.
/*backtest start: 2023-01-10 00:00:00 end: 2024-01-16 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/ // © MaclenMtz //@version=5 strategy("[MACLEN] Rangos", shorttitle="Rangos [https://t.me/Bitcoin_Maclen]", overlay=false ) //------WINDOW---------- i_startTime = input(defval = timestamp("01 Jan 2022 00:00 -0700"), title = "Start Time", group = "Backtest Window") i_endTime = input(defval = timestamp("31 Dec 2025 00:00 -0700"), title = "End Time") window = true //----------------------------- sube = close>close[1] ? ta.tr : 0 baja = close<close[1] ? ta.tr : 0 corto = input(10) largo = input(30) suavizado = input(10) fastDiff = ta.wma(sube, corto) - ta.wma(baja,corto) slowDiff = ta.wma(sube, largo) - ta.wma(baja, largo) ind = ta.wma(fastDiff - slowDiff, suavizado) iColor = ind>0 ? color.green : ind<0 ? color.red : color.black plot(ind, color=iColor) plot(0, color=color.white) long = ind[1]<ind and ind[2]<ind[1] and ind<0 short = ind[1]>ind and ind[2]>ind[1] and ind>0 plotshape(long and not long[1], style = shape.xcross, color=color.green, location=location.bottom, size=size.tiny) plotshape(short and not short[1], style = shape.xcross, color=color.red, location=location.top, size=size.tiny) //Contratos contrato1 = input(50000)/(16*close) c1 = contrato1 c2 = contrato1 c3 = contrato1*2 c4 = contrato1*4 c5 = contrato1*8 //cap_enopentrade = strategy.opentrades == 1 ? c1: strategy.opentrades == 2 ? c1+c2: strategy.opentrades == 3 ? c1+c2+c3: strategy.opentrades == 4 ? c1+c2+c3+c4: strategy.opentrades == 5 ? c1+c2+c3+c4+c5 : 0 openprofit_porc = math.round((close-strategy.position_avg_price)/strategy.position_avg_price * 100,2) porc_tp = input.float(6.5) safe = input(-6) //----------------Strategy--------------------------- if strategy.opentrades == 0 strategy.entry('BUY1', strategy.long, qty=c1, when = long and not long[1] and window) if strategy.opentrades == 1 strategy.entry('BUY2', strategy.long, qty=c2, when = long and not long[1] and window and openprofit_porc<safe) if strategy.opentrades == 2 strategy.entry('BUY3', strategy.long, qty=c3, when = long and not long[1] and window and openprofit_porc<safe) if strategy.opentrades == 3 strategy.entry('BUY4', strategy.long, qty=c4, when = long and not long[1] and window and openprofit_porc<safe) if strategy.opentrades == 4 strategy.entry('BUY5', strategy.long, qty=c5, when = long and not long[1] and window and openprofit_porc<safe) min_prof = strategy.openprofit>0 strategy.close_all(when=short and min_prof) plot(openprofit_porc)