Chiến lược theo xu hướng dựa trên đột phá và lọc tần suất (chỉ dài hạn)

EMA AO
Ngày tạo: 2024-05-28 14:00:24 sửa đổi lần cuối: 2024-05-28 14:00:24
sao chép: 0 Số nhấp chuột: 501
1
tập trung vào
1617
Người theo dõi

Chiến lược theo xu hướng dựa trên đột phá và lọc tần suất (chỉ dài hạn)

Tổng quan

Chiến lược này là một chiến lược theo dõi xu hướng dựa trên phá vỡ và lọc tần số, chỉ giao dịch nhiều đầu. Ý tưởng chính của chiến lược là sử dụng chỉ số EMA để xác định hướng xu hướng hiện tại, tạo ra nhiều tín hiệu khi giá phá vỡ mức giá cao nhất trong một khoảng nhất định, đồng thời sử dụng bộ lọc tần số để kiểm soát tần số giao dịch, tránh mở vị trí quá thường xuyên.

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

  1. Tính toán chỉ số EMA để xác định xu hướng hiện tại. Khi giá đóng cửa trên EMA, xu hướng hiện tại được coi là đa đầu.
  2. Tính toán giá cao nhất trong một khoảng nhất định, như là điều kiện phá vỡ. Khi giá đóng cửa phá vỡ giá cao nhất trong thời gian lùi ngắn nhất hoặc thời gian lùi dài nhất, và xu hướng hiện tại là đa đầu, tạo ra tín hiệu làm nhiều.
  3. Tiếp tục áp dụng bộ lọc tần số để kiểm soát khoảng thời gian tối thiểu để mở các vị trí liên tục và tránh tần số giao dịch quá cao.
  4. Thiết lập điểm dừng lỗ, kiểm soát rủi ro khi giá giảm xuống giá dừng lỗ.
  5. Định nghĩa tín hiệu kết thúc xu hướng, khi giá đóng cửa giảm xuống dưới EMA, xu hướng được coi là kết thúc, tại thời điểm này nếu nắm giữ nhiều đơn vị thì sẽ bị phá sản.

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

  1. Theo dõi xu hướng: Xác định hướng của xu hướng thông qua chỉ số EMA, giao dịch theo xu hướng, giúp tăng lợi nhuận chiến lược.
  2. Xác nhận phá vỡ: Sử dụng phá vỡ giá như một tín hiệu đầu vào, có thể vào kịp thời trong giai đoạn đầu của xu hướng, để nắm bắt thêm không gian lợi nhuận.
  3. Kiểm soát tần số: giới thiệu bộ lọc tần số, kiểm soát khoảng thời gian mở vị trí liên tục, tránh giao dịch quá thường xuyên, giảm chi phí giao dịch và rủi ro.
  4. Bảo vệ dừng lỗ: thiết lập điểm dừng lỗ, dừng lỗ kịp thời khi giá biến động ngược đạt đến một mức độ nhất định, kiểm soát hiệu quả rủi ro giảm giá.
  5. Định vị động: Định vị động theo tín hiệu kết thúc xu hướng, có thể khóa kịp thời thu nhập đã có và tránh tổn thất do đảo ngược xu hướng.

Rủi ro chiến lược

  1. Tính nhạy cảm với tham số: Hiệu suất của chiến lược nhạy cảm với lựa chọn tham số, các thiết lập tham số khác nhau có thể dẫn đến sự khác biệt lớn trong hiệu suất của chiến lược. Cần kiểm tra và tối ưu hóa đầy đủ các tham số.
  2. Thâm nhập thất bại: Thâm nhập không đảm bảo xu hướng sẽ tiếp tục, có thể xảy ra tình huống thất bại, dẫn đến tổn thất liên tục của chiến lược.
  3. Nhận định xu hướng: Chiến lược phụ thuộc vào các chỉ số EMA để đánh giá xu hướng, nhưng các chỉ số EMA có thể bị chậm trễ hoặc sai lệch, ảnh hưởng đến độ chính xác của chiến lược.
  4. Giao dịch thường xuyên: Mặc dù chiến lược đã giới thiệu bộ lọc tần số, nhưng khi thị trường biến động lớn, vẫn có thể xảy ra tình huống mở và đóng vị trí thường xuyên, làm tăng chi phí giao dịch.
  5. Rủi ro dừng lỗ: thiết lập điểm dừng lỗ có thể không hoàn toàn tránh được sự rút lui tối đa của chiến lược, trong trường hợp cực đoan vẫn có thể có tổn thất lớn.

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

  1. Tối ưu hóa tham số: Tối ưu hóa các tham số quan trọng của chiến lược như độ dài EMA, độ dài thời gian lùi, tỷ lệ dừng lỗ, tìm kiếm các tham số kết hợp tốt nhất để tăng sự ổn định và lợi nhuận của chiến lược.
  2. Chèn tín hiệu: Sau khi tạo ra tín hiệu đột phá, có thể giới thiệu các chỉ số hoặc điều kiện kỹ thuật khác để xác nhận lại tín hiệu, cải thiện chất lượng tín hiệu, giảm sai lầm và tín hiệu giả.
  3. Xác định xu hướng: Bạn có thể thử sử dụng các chỉ số định xu hướng khác như MACD, DMI, v.v., hoặc kết hợp nhiều chỉ số để đánh giá xu hướng, cải thiện độ chính xác của nhận dạng xu hướng.
  4. Động thái dừng: Động thái điều chỉnh điểm dừng tùy theo biến động của thị trường, chẳng hạn như sử dụng chỉ số ATR để tính toán giá dừng động hoặc giới thiệu chiến lược theo dõi dừng để kiểm soát rủi ro tốt hơn.
  5. Quản lý vị trí: Tối ưu hóa chiến lược quản lý vị trí, điều chỉnh kích thước vị trí theo biến động thị trường và tình hình tài chính tài khoản, kiểm soát lỗ hổng rủi ro giao dịch đơn lẻ, nâng cao hiệu quả sử dụng tiền.

Tóm tắt

Chiến lược này là một chiến lược theo dõi xu hướng dựa trên phá vỡ và lọc tần số, xác định hướng xu hướng thông qua chỉ số EMA, sử dụng phá vỡ giá làm tín hiệu đầu vào, đồng thời giới thiệu bộ lọc tần số để kiểm soát tần số giao dịch và thiết lập rủi ro kiểm soát điểm dừng lỗ. Ưu điểm của chiến lược là theo dõi xu hướng, xác nhận phá vỡ, kiểm soát tần số, bảo vệ dừng lỗ và cân bằng động, nhưng cũng có rủi ro tiềm ẩn như nhạy cảm tham số, phá vỡ thất bại, nhận dạng xu hướng thất bại, giao dịch thường xuyên và rủi ro dừng lỗ.

Mã nguồn chiến lược
/*backtest
start: 2023-05-22 00:00:00
end: 2024-05-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Trend Following with Breakout and Frequency Filter (Long Only)", overlay=true)

// 输入参数
emaLength = input.int(50, title="EMA长度")
lookbackPeriodMin = input.int(80, title="最短回溯期")
lookbackPeriodMax = input.int(120, title="最长回溯期")
stopLossPct = input.float(2, title="止损百分比") / 100  // 止损百分比
minHoldBars = input.int(10, title="最小持仓K线数量")  // 最小持仓K线数量

// 计算EMA
ema = ta.ema(close, emaLength)

// 计算最高价和最低价
highestHigh = ta.highest(high, lookbackPeriodMax)
lowestLow = ta.lowest(low, lookbackPeriodMax)

// 定义趋势方向
isBullish = close > ema

// 定义突破信号
breakoutCondition = (ta.crossover(close, highestHigh[lookbackPeriodMin]) or ta.crossover(close, highestHigh[lookbackPeriodMax])) and isBullish

// 计算止损点
stopLossLevelLong = close * (1 - stopLossPct)

// 绘制EMA
plot(ema, title="EMA", color=color.blue)

// 记录上次开仓时间
var float lastEntryTime = na

// 策略执行并标注信号
if (breakoutCondition and (na(lastEntryTime) or (time - lastEntryTime) > minHoldBars * timeframe.multiplier))
    strategy.entry("做多", strategy.long)
    label.new(bar_index, high, text="买入", style=label.style_label_up, color=color.green, textcolor=color.white)
    strategy.exit("止损", from_entry="做多", stop=stopLossLevelLong)
    lastEntryTime := time

// 定义趋势结束信号
exitCondition = close < ema

if (exitCondition and (strategy.position_size > 0) and (time - lastEntryTime) > minHoldBars * timeframe.multiplier)
    strategy.close("做多")
    label.new(bar_index, low, text="卖出", style=label.style_label_down, color=color.red, textcolor=color.white)