Chiến lược liên thời gian trung bình động có trọng số dựa trên biến động thực


Ngày tạo: 2024-01-17 15:09:28 sửa đổi lần cuối: 2024-01-17 15:09:28
sao chép: 0 Số nhấp chuột: 374
1
tập trung vào
1237
Người theo dõi

Chiến lược liên thời gian trung bình động có trọng số dựa trên biến động thực

Tổng quan

Chiến lược này sử dụng True Range và WMA để xây dựng một chỉ số xuyên thời gian để đánh giá xu hướng. Đồng thời, nó có nhiều cơ chế tăng cường kim tự tháp với nhiều vị trí tích lũy, cũng như nhiều cơ chế dừng lỗ nhằm theo đuổi lợi nhuận ổn định.

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

Chiến lược này lần đầu tiên tính các đợt tăng lên (sube) và giảm xuống (baja), sau đó tính WMA của chu kỳ đường nhanh (corto) và chu kỳ đường chậm (largo) tương ứng. Điểm chênh lệch đường nhanh (slow) một lần nữa được tính toán thông qua WMA của chỉ số (ind). Khi chỉ số vượt lên 0 tạo ra tín hiệu mua và khi vượt xuống 0 tạo ra tín hiệu bán.

Sau khi đưa ra thị trường, chiến lược dự kiến 5 vị trí, theo phương thức tích lũy tương đương (tỷ lệ gấp đôi) để thực hiện đặt hàng kim tự tháp. Đồng thời thiết lập cơ chế dừng lỗ, sau đó khi mở vị trí phải xác định xem xu hướng hiện tại có thấp hơn đường dừng lỗ hay không, do đó kiểm soát rủi ro.

Phân tích lợi thế

Chiến lược này tích hợp các cơ chế như phán quyết theo giai đoạn, tăng cường kim tự tháp, và dừng lỗ nhiều lần để kiểm soát rủi ro một cách hiệu quả và theo đuổi lợi nhuận ổn định.

Xác định giữa các giai đoạn thiết lập hệ thống phán đoán xu hướng bằng cách kết hợp các đường nhanh và chậm, có thể lọc hiệu quả tiếng ồn thị trường, nhận ra điểm biến xu hướng. Lưu trữ kim tự tháp có thể kiếm được nhiều lợi nhuận hơn trong giai đoạn bắt đầu của xu hướng, cơ chế dừng lỗ nhiều có thể kiểm soát hiệu quả tổn thất đơn lẻ.

Phân tích rủi ro

Rủi ro chính của chiến lược này là có thể xảy ra sự kiện bất ngờ dẫn đến sự đảo ngược nhanh chóng của thị trường, gây ra tổn thất do kích hoạt cắt giảm lỗ. Ngoài ra, cài đặt tham số không đúng cũng có thể ảnh hưởng đến sự ổn định của chiến lược.

Có thể giải quyết rủi ro của sự đảo ngược của thị trường bằng cách nới lỏng các đường dừng thích hợp. Thiết lập tham số tối ưu hóa, điều chỉnh tham số chu kỳ, số vị trí có thể làm tăng sự ổn định của chiến lược.

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

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

  1. Tăng các chỉ số thống kê, kết hợp các tham số sửa đổi các chỉ số như tỷ lệ biến động, khối lượng giao dịch, làm cho chiến lược phù hợp hơn.

  2. Tăng khả năng phán đoán của mô hình học máy, sử dụng các mô hình học sâu như LSTM để hỗ trợ phán đoán, nâng cao độ chính xác của chiến lược.

  3. Tối ưu hóa cơ chế quản lý vị trí, có thể xem xét điều chỉnh tỷ lệ gia tăng vị trí theo tỷ lệ nổi, để tăng vị trí hợp lý hơn.

  4. Kết hợp với mô hình bảo đảm hợp đồng tương lai, sử dụng tháo gỡ tháo gỡ để kiểm soát rủi ro hơn nữa.

Tóm tắt

Chiến lược này nói chung là một chiến lược xu hướng xuyên chu kỳ được xây dựng dựa trên chỉ số sóng thực, có cơ chế tăng cường kim tự tháp và nhiều điểm dừng, có thể kiểm soát rủi ro hiệu quả, theo đuổi lợi nhuận ổn định, 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 các vấn đề tối ưu hóa biến động và tham số, có thể được tối ưu hóa hơn nữa từ các khía cạnh thống kê, học máy.

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