Chiến lược chéo xoắn ốc với xác nhận trung bình động

Tác giả:ChaoZhang, Ngày: 2024-02-02 14:50:08
Tags:

img

Tổng quan

Chiến lược này kết hợp các đường chỉ số xoáy và đường trung bình chuyển động để xác định hướng và sức mạnh của xu hướng giá để tạo ra các tín hiệu dài và ngắn tiềm năng. Khi đường xoáy dương (VI +) vượt qua trên đường xoáy âm (VI-), mỗi đường chéo được làm nổi bật trên biểu đồ. Nếu giá đóng trên đường trung bình chuyển động, một tín hiệu dài được tạo ra. Khi VI- vượt qua trên đường trung bình chuyển động, nếu giá đóng dưới đường trung bình chuyển động, một tín hiệu ngắn được tạo ra.

Chiến lược logic

  1. Chỉ số xoáy: Bao gồm hai đường - xoáy tích cực (VI +) và xoáy âm (VI-). Nó được sử dụng để xác định hướng và sức mạnh của xu hướng giá.

  2. Moving Average (MA): Sử dụng phương pháp Moving Average được chọn (SMA, EMA, SMMA, WMA hoặc VWMA) để làm mịn dữ liệu giá.

  3. Xác định tín hiệu dài và ngắn: Khi VI + vượt qua trên VI-, mỗi giao lộ được làm nổi bật. Nếu kết thúc nằm trên Đường Smoothing, một tín hiệu dài được tạo ra. Khi VI- vượt qua trên VI+, nếu kết thúc nằm dưới Đường Smoothing, một tín hiệu ngắn được tạo ra.

Ưu điểm

  1. Kết hợp nhận dạng xu hướng và làm mịn để nắm bắt xu hướng trong thị trường xu hướng, tránh các tín hiệu sai trong thị trường hỗn loạn.

  2. Chỉ báo xoáy xác định hiệu quả hướng và sức mạnh xu hướng.

  3. Đơn giản và rõ ràng chiến lược logic, dễ hiểu và thực hiện.

  4. Các thông số tùy chỉnh, thích nghi với môi trường thị trường khác nhau.

Rủi ro

  1. Có thể tạo ra tín hiệu sai và whipsaws trong các thị trường giới hạn phạm vi hoặc không có xu hướng.

  2. Cài đặt tham số không phù hợp có thể ảnh hưởng đến hiệu suất chiến lược. Ví dụ, Moving Average quá ngắn có khả năng làm mịn kém và chậm hơn trong việc nhận ra những thay đổi xu hướng.

  3. Không thể bảo vệ chống lại biến động giá cực đoan từ các sự kiện không lường trước được.

Những cải tiến

  1. Bao gồm các chỉ số khác như khối lượng để xác định độ tin cậy của xu hướng.

  2. Tối ưu hóa các tham số để cân bằng theo xu hướng và lọc tiếng ồn của Moving Averages.

  3. Thêm stop loss vào control losses.

  4. Sử dụng máy học để tối ưu hóa tham số tự động.

  5. Kết hợp các mô-đun quản lý rủi ro để điều chỉnh kích thước vị trí.

Kết luận

Chiến lược này kết hợp hiệu quả chỉ số xoáy và trung bình động để nắm bắt xu hướng. Nó xác định hướng xu hướng trong khi có một số khả năng lọc tiếng ồn để giảm tín hiệu sai. Logic đơn giản và linh hoạt để sử dụng, hoạt động tốt trong thị trường xu hướng.


/*backtest
start: 2023-02-01 00:00:00
end: 2024-02-01 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/
// © DraftVenture

//@version=5
strategy("Vortex + Moving Average Strategy", overlay=true)

//Vortex settings
period_ = input.int(14, title="Vortex Length", minval=2)
VMP = math.sum( math.abs( high - low[1]), period_ )
VMM = math.sum( math.abs( low - high[1]), period_ )
STR = math.sum( ta.atr(1), period_ )
VIP = VMP / STR
VIM = VMM / STR
plot(VIP, title="VI +", color=color.white)
plot(VIM, title="VI -", color=color.white)

len = input.int(9, minval=1, title="MA Length")
src = input(close, title="Source")
offset = input.int(title="Offset", defval=0, minval=-500, maxval=500)
out = ta.sma(src, len)
plot(out, color=color.blue, title="MA", offset=offset)

ma(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

typeMA = input.string(title = "Method", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing")
smoothingLength = input.int(title = "Length", defval = 5, minval = 1, maxval = 100, group="Smoothing")

smoothingLine = ma(out, smoothingLength, typeMA)
plot(smoothingLine, title="Smoothing Line", color=#f37f20, offset=offset, display=display.none)

// Determine long and short conditions
longCondition = ta.crossover(VIP, VIM) and close > smoothingLine
shortCondition = ta.crossunder(VIP, VIM) and close < smoothingLine
crossCondition = ta.crossunder(VIP, VIM) or ta.crossunder(VIM, VIP)

// Strategy entry and exit logic
if longCondition
    strategy.entry("Long", strategy.long)

if shortCondition
    strategy.entry("Short", strategy.short)

bgcolor(crossCondition ? color.new(color.white, 80) : na)

// Strategy by KP

Thêm nữa