Dựa trên chiến lược đột phá xu hướng kép


Ngày tạo: 2024-02-19 11:52:40 sửa đổi lần cuối: 2024-02-19 11:52:40
sao chép: 0 Số nhấp chuột: 711
1
tập trung vào
1617
Người theo dõi

Dựa trên chiến lược đột phá xu hướng kép

Tổng quan

Chiến lược phá vỡ xu hướng kép sử dụng một loạt các chỉ số kỹ thuật, bao gồm đường xu hướng, giao điểm đường trung bình và phá vỡ kênh giá, nhằm xác định sự thay đổi xu hướng thị trường và nắm bắt cơ hội đảo ngược xu hướng. Chiến lược này kết hợp theo dõi xu hướng và tín hiệu phá vỡ, nhập và thoát vị thế tương đối ổn định, nhưng cũng có một số rủi ro phá vỡ giả.

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

Đường xu hướng

Chiến lược này đầu tiên sử dụng các điểm cao và thấp của trục trung tâm để phân chia xu hướng đa chiều, khi giá vượt qua đường xu hướng, nó cho thấy xu hướng tiềm ẩn bị đảo ngược.

Giao nhau

Chiến lược này sử dụng đường 5 ngày ngắn và đường 34 ngày dài để xây dựng chiến lược chéo đường trung bình chậm. Đường trung bình ngắn là tín hiệu mua, đường trung bình dài là tín hiệu bán. Sử dụng đường trung bình nhanh để nắm bắt xu hướng ngắn hạn và đường trung bình chậm để theo dõi xu hướng dài hạn.

Cổng giá

Chiến lược này cũng thiết lập một kênh giá 5 ngày, phá vỡ mua trên đường ray, phá vỡ bán dưới đường ray, và nắm bắt các đợt phá vỡ giá ngắn hạn.

Các tín hiệu chỉ số kỹ thuật trên được sử dụng trong chiến lược này để tạo ra một cơ chế phán đoán kép vững chắc, tránh giao dịch sai.

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

  1. Nhiều chỉ số kỹ thuật được tích hợp để đánh giá tín hiệu mạnh hơn, giảm thiệt hại do đột phá giả.

  2. Đường trung bình nhanh và đường giá có thể nắm bắt được sự thay đổi trong xu hướng giá trong thời gian ngắn. Đường trung bình chậm và đường xu hướng theo dõi xu hướng dài hạn, vào và ra thị trường tương đối ổn định.

  3. Cấu trúc mã rõ ràng, các tham số chỉ số có thể điều chỉnh, có thể điều chỉnh và tối ưu hóa cho các chu kỳ và giống khác nhau.

  4. Kết hợp với sự phán đoán xu hướng và tín hiệu phá vỡ, trong thị trường bò xu hướng, tình hình thị trường tích cực hơn sẽ có lợi cho lợi nhuận; Trong phạm vi sắp xếp, tần suất giao dịch của tín hiệu phá vỡ sẽ giảm, có lợi cho việc tránh những cú sốc lớn.

Rủi ro chiến lược

  1. Có một số rủi ro phá vỡ giả, đặc biệt là trong các tình huống biến động giá, có thể gây ra tổn thất.

  2. Đường trung bình giao nhau là một tín hiệu chậm trễ, nếu có một sự đảo ngược xu hướng lớn, sẽ có nguy cơ theo đuổi mua cao hoặc bán thấp.

  3. Nhiều chỉ số kỹ thuật được tích hợp, yêu cầu rất nhiều thử nghiệm và tính toán khi tối ưu hóa tham số, tốn thời gian.

  • Đối với nguy cơ phá vỡ giả, có thể lọc thêm các chỉ số khối lượng giao dịch, chẳng hạn như cần tăng khối lượng giao dịch khi phá vỡ, hoặc giá đóng cửa một K-line trước khi phá vỡ hoặc trước khi thấp.

  • Đối với rủi ro mua cao, bạn có thể đặt điều kiện lọc cho chỉ số mua quá mức, chẳng hạn như chỉ số RSI để tránh mua quá mức. Hoặc đặt đường dừng để tăng tốc độ dừng.

  • Đối với các vấn đề tối ưu hóa tham số, có thể sử dụng các phương pháp học máy để hỗ trợ tìm kiếm tối ưu hóa, tìm kiếm các tổ hợp tham số tối ưu trong một lượng lớn dữ liệu lịch sử.

Tối ưu hóa chiến lược

  1. Thêm chỉ số giao dịch hoặc chỉ số mua quá mức để đánh giá độ tin cậy của xu hướng, thiết lập các điều kiện lọc nghiêm ngặt để tránh tổn thất do phá vỡ giả.

  2. Điều chỉnh các thiết lập tham số đường trung bình và tham số kênh giá cho các loại giao dịch khác nhau để phù hợp hơn với đặc tính của loại đó.

  3. Tăng chiến lược dừng lỗ, kiểm soát lỗ đơn bằng cách di chuyển dừng, dừng đơn.

  4. Sử dụng phương pháp thích ứng, giảm tần suất mở vị trí khi thị trường đi vào giai đoạn thu xếp xung đột; tăng tần suất giao dịch khi xu hướng rõ ràng.

  5. Sử dụng phương pháp học sâu để đào tạo mô hình để đánh giá điểm mua và bán, hỗ trợ hoặc thay thế các chỉ số kỹ thuật truyền thống, sử dụng khả năng phổ biến học sâu để tìm kiếm chiến lược giao dịch hiệu quả hơn.

Tóm tắt

Chiến lược này tích hợp nhiều chỉ số kỹ thuật được sử dụng thường xuyên để tạo ra hệ thống phán đoán kép, có thể xác định hiệu quả sự thay đổi xu hướng, thể hiện sự ổn định tốt trong phản hồi. Tuy nhiên, cũng nên chú ý đến một số rủi ro phá vỡ giả, tối ưu hóa bằng cách thêm điều kiện lọc, chiến lược dừng lỗ, điều chỉnh tham số và sử dụng phương pháp học máy, có thể tăng cường hơn nữa hiệu suất thực tế của chiến lược.

Mã nguồn chiến lược
/*backtest
start: 2024-02-11 00:00:00
end: 2024-02-18 00:00:00
period: 1h
basePeriod: 15m
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/
// © FinanceUpPvtLtd

//@version=5
strategy("FINANCE UP FREE STRATEGY (+919665229664)", overlay=true)

// Script 01 - Trendlines
length_tl = input.int(14, 'Swing Detection Lookback')
mult_tl = input.float(1., 'Slope', minval=0, step=.1)
calcMethod_tl = input.string('Atr', 'Slope Calculation Method', options=['Atr', 'Stdev', 'Linreg'])
backpaint_tl = input(true, tooltip='Backpainting offset displayed elements in the past. Disable backpainting to see real-time information returned by the indicator.')
upCss_tl = input(color.teal, 'Up Trendline Color', group='Style')
dnCss_tl = input(color.red, 'Down Trendline Color', group='Style')
showExt_tl = input(true, 'Show Extended Lines')

var upper_tl = 0.
var lower_tl = 0.
var slope_ph_tl = 0.
var slope_pl_tl = 0.
var offset_tl = backpaint_tl ? length_tl : 0
n_tl = bar_index
src_tl = close
ph_tl = ta.pivothigh(length_tl, length_tl)
pl_tl = ta.pivotlow(length_tl, length_tl)
slope_tl = switch calcMethod_tl
    'Atr'    => ta.atr(length_tl) / length_tl * mult_tl
    'Stdev'  => ta.stdev(src_tl, length_tl) / length_tl * mult_tl
    'Linreg' => math.abs(ta.sma(src_tl * n_tl, length_tl) - ta.sma(src_tl, length_tl) * ta.sma(n_tl, length_tl)) / ta.variance(n_tl, length_tl) / 2 * mult_tl
slope_ph_tl := ph_tl ? slope_tl : slope_ph_tl
slope_pl_tl := pl_tl ? slope_tl : slope_pl_tl
upper_tl := ph_tl ? ph_tl : upper_tl - slope_ph_tl
lower_tl := pl_tl ? pl_tl : lower_tl + slope_pl_tl
var upos_tl = 0
var dnos_tl = 0
upos_tl := ph_tl ? 0 : close > upper_tl - slope_ph_tl * length_tl ? 1 : upos_tl
dnos_tl := pl_tl ? 0 : close < lower_tl + slope_pl_tl * length_tl ? 1 : dnos_tl

// var uptl_tl = line.new(na, na, na, na, color=upCss_tl, style=line.style_dashed, extend=extend.right)
// var dntl_tl = line.new(na, na, na, na, color=dnCss_tl, style=line.style_dashed, extend=extend.right)
// if ph_tl and showExt_tl
//     uptl_tl.set_xy1(n_tl - offset_tl, backpaint_tl ? ph_tl : upper_tl - slope_ph_tl * length_tl)
//     uptl_tl.set_xy2(n_tl - offset_tl + 1, backpaint_tl ? ph_tl - slope_tl : upper_tl - slope_ph_tl * (length_tl + 1))
// if pl_tl and showExt_tl
//     dntl_tl.set_xy1(n_tl - offset_tl, backpaint_tl ? pl_tl : lower_tl + slope_pl_tl * length_tl)
//     dntl_tl.set_xy2(n_tl - offset_tl + 1, backpaint_tl ? pl_tl + slope_tl : lower_tl + slope_pl_tl * (length_tl + 1))

plot(backpaint_tl ? upper_tl : upper_tl - slope_ph_tl * length_tl, 'Upper', color=ph_tl ? na : upCss_tl, offset=-offset_tl)
plot(backpaint_tl ? lower_tl : lower_tl + slope_pl_tl * length_tl, 'Lower', color=pl_tl ? na : dnCss_tl, offset=-offset_tl)

plotshape(upos_tl > upos_tl[1] ? low : na, "Upper Break", shape.labelup, location.absolute, upCss_tl, text="B", textcolor=color.white, size=size.tiny)
plotshape(dnos_tl > dnos_tl[1] ? high : na, "Lower Break", shape.labeldown, location.absolute, dnCss_tl, text="B", textcolor=color.white, size=size.tiny)

alertcondition(upos_tl > upos_tl[1], 'Upward Breakout', 'Price broke the down-trendline upward')
alertcondition(dnos_tl > dnos_tl[1], 'Downward Breakout', 'Price broke the up-trendline downward')

// Script 02 - Channel Breakout
length_channel = input.int(title="Channel Length", minval=1, maxval=1000, defval=5)
upBound_channel = ta.highest(high, length_channel)
downBound_channel = ta.lowest(low, length_channel)
if (not na(close[length_channel]))
    strategy.entry("LE-LE", strategy.long, stop=upBound_channel + syminfo.mintick, comment="LE-LE")
strategy.entry("BECH-DE", strategy.short, stop=downBound_channel - syminfo.mintick, comment="BECH-DE")

// Script 03 - MA Cross
shortlen_ma = input.int(5, "Short MA Length", minval=1)
longlen_ma = input.int(34, "Long MA Length", minval=1)
short_ma = ta.sma(close, shortlen_ma)
long_ma = ta.sma(close, longlen_ma)
plot(short_ma, color=#FF6D00, title="Short MA")
plot(long_ma, color=#43A047, title="Long MA")
plot(ta.cross(short_ma, long_ma) ? short_ma : na, color=#2962FF, style=plot.style_cross, linewidth=4, title="Cross")