Chiến lược giao dịch thích ứng dựa trên chỉ báo động lượng


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

Chiến lược giao dịch thích ứng dựa trên chỉ báo động lượng

Tổng quan

Chiến lược này là một chiến lược giao dịch chứng khoán tự điều chỉnh dựa trên chỉ số động lực. Nó tích hợp các chỉ số Brin Belt, Keltner Channel và Price Compression để thực hiện giao dịch hoàn toàn tự động trong việc đánh giá xu hướng, nhận diện điểm đột phá và dừng lỗ.

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

Chiến lược này chủ yếu xây dựng các kênh giá thông qua các kênh Brin và Keltner, xác định các kênh phá vỡ tạo ra tín hiệu giao dịch. Khi giá từ dưới lên phá vỡ kênh, thực hiện hành động đợt tăng giá; Khi giá từ trên xuống phá vỡ kênh, thực hiện hành động đợt giảm giá. Ngoài ra, chiến lược cũng sử dụng chỉ số nén giá để xác định hiện đang ở trong kênh giá và thực hiện hành động tương ứng dựa trên giá trị chênh lệch tích cực của chỉ số.

Cụ thể, Brin Belt được lên và xuống đường bằng cách tính toán chênh lệch tiêu chuẩn của giá; Keltner Channel được lên và xuống đường bằng cách tính toán giá trị trung bình của giá trị ± phạm vi biến động trung bình. Khi cả hai kênh xảy ra fdopen, cho rằng thị trường đi vào cân bằng và chờ đợi đột phá tiếp theo. Chỉ số nén giá phản ánh liệu giá có bị nén trong hai kênh hay không, và định hướng thị trường dựa trên giá trị tích cực hoặc tiêu cực của chênh lệch nén.

Nói chung, chiến lược này kết hợp nhiều chỉ số để xác định xu hướng giá thành, tạo ra một logic dài và ngắn rõ ràng, có thể lọc hiệu quả các đột phá giả mạo và xác định cơ hội giao dịch có xác suất cao.

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

  1. Kết hợp nhiều chỉ số, có khả năng phán đoán cao. Kết hợp các chỉ số có thể giúp tăng độ chính xác nhận diện.

  2. Xác định chênh lệch chỉ số nén, giảm đột phá giả. Chỉ số chênh lệch là điều kiện phụ trợ, tránh giao dịch vô nghĩa.

  3. Chuyển đổi tự động với lỗ hổng kênh, kiểm soát rủi ro hiệu quả. Cổng là vị trí dừng lỗ, có thể tự động điều chỉnh theo biến động của thị trường, giảm tổn thất.

  4. Cài đặt tham số đơn giản, thích hợp cho tự động hóa. Chỉ có một vài tham số chính, dễ dàng kiểm tra và tối ưu hóa, dễ dàng tích hợp vào hệ thống giao dịch tự động.

Rủi ro chiến lược

  1. Chuyển đổi đa không gian thường xuyên sẽ làm tăng số lần giao dịch. Khi thị trường biến động, có thể dẫn đến việc mở và đóng các vị trí thường xuyên.

  2. Các tham số chỉ số không phù hợp có thể bỏ lỡ cơ hội được đào tạo tốt. Cần thử nghiệm đầy đủ để tối ưu hóa và tìm các tham số tối ưu.

  3. Chỉ phù hợp với giá cổ phiếu có định hướng rõ ràng, không phù hợp với thị trường biến động cực kỳ. Chỉ số dễ bị nhầm lẫn, tạo ra tín hiệu sai.

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

  1. Thêm mô-đun kiểm soát vị trí, tối ưu hóa hiệu quả sử dụng vốn. Ví dụ: phân bổ vốn theo cường độ đột phá.

  2. Thêm mô hình học máy để điều chỉnh các tham số chỉ số động. Cho phép tham số chỉ số tự động thích ứng với các chu kỳ khác nhau, các cổ phiếu khác nhau.

  3. Nâng cao chiến lược dừng lỗ, giới thiệu nhiều chỉ số hỗ trợ để xác định thời gian dừng lỗ. Sau khi cải tiến, có thể giảm số lần dừng lỗ ở các điểm quan trọng.

Tóm tắt

Chiến lược này tích hợp các chỉ số Brin Belt, Keltner Channel và Price Compression để tạo ra một hệ thống logic phán đoán và kiểm soát rủi ro rõ ràng. Nó kết hợp sự phán đoán xu hướng và hoạt động đột phá, có thể tự động thích ứng với tình hình và xác định cơ hội giao dịch có tỷ lệ xác suất cao.

Mã nguồn chiến lược
/*backtest
start: 2022-12-29 00:00:00
end: 2024-01-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © juliopetronilo

//@version=4
strategy("DMI/ADX/Squeeze Robot", shorttitle="DMI/ADX/SQZ", overlay=true)

// Squeeze Momentum Indicator
length = input(20, title="BB Length")
mult = input(2.0, title="BB MultFactor")
lengthKC = input(20, title="KC Length")
multKC = input(1.5, title="KC MultFactor")
useTrueRange = input(true, title="Use TrueRange (KC)")

source = close
basis = sma(source, length)
dev = multKC * stdev(source, length)
upperBB = basis + dev
lowerBB = basis - dev

ma = sma(source, lengthKC)
rangeKC = useTrueRange ? tr : (high - low)
rangema = sma(rangeKC, lengthKC)
upperKC = ma + rangema * multKC
lowerKC = ma - rangema * multKC

sqzOn = (lowerBB > lowerKC) and (upperBB < upperKC)
sqzOff = (lowerBB < lowerKC) and (upperBB > upperKC)
noSqz = not (sqzOn or sqzOff)

val = linreg(source - avg(avg(highest(high, lengthKC), lowest(low, lengthKC)), sma(close, lengthKC)), lengthKC, 0)

// DMI/ADX Plot
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
keyLevel = input(23, title="Key Level for ADX")

dirmov(len) =>
    up = change(high)
    down = -change(low)
    truerange = rma(tr, len)
    plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, len) / truerange)
    minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, len) / truerange)
    [plus, minus]

adx(dilen, adxlen) =>
    [plus, minus] = dirmov(dilen)
    sum = plus + minus
    adx_val = abs(plus - minus) / (sum == 0 ? 1 : sum) * 100
    [adx_val, plus, minus]

[sig, up, down] = adx(dilen, adxlen)

// Estrategia de Trading
strategy.entry("Buy", strategy.long, when=sqzOn and crossover(up, down) and crossover(val, 0))
strategy.entry("Sell", strategy.short, when=sqzOn and crossunder(up, down) and crossunder(val, 0))
strategy.close("Buy", when=sqzOff)
strategy.close("Sell", when=sqzOff)

// Plot de los indicadores
plot(val, color=color.blue, style=plot.style_histogram, linewidth=4)
plot(0, color=noSqz ? color.blue : sqzOn ? color.black : color.rgb(236, 238, 247), style=plot.style_cross, linewidth=2)
plot(up, color=color.blue, title="+DI")
plot(down, color=color.gray, title="-DI")
plot(keyLevel, color=color.white, title="Key Level")