Lý thuyết sóng Elliott 4-9 Sóng xung phát hiện tự động Chiến lược giao dịch

Tác giả:ChaoZhang, Ngày: 2024-04-26 17:32:59
Tags:MACDEMAMASMASARADXRSIKDJBollATR

img

Tổng quan

Chiến lược này dựa trên lý thuyết sóng Elliott và cố gắng tự động phát hiện sóng xung. Nó xác định một sóng xung lên bằng cách tìm kiếm sự kết hợp của 4 ngọn nến liên tiếp đóng cửa, trong đó hiện tại đóng cửa cao hơn đóng cửa 9 ngày trước; một sóng xung xuống được xác định bằng cách sử dụng logic ngược lại. Một khi một sóng xung được phát hiện, nó tạo ra tín hiệu mua hoặc bán và đảo ngược vị trí, với stop loss được đặt ở mức thấp hoặc cao của nến tín hiệu.

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

  1. Định nghĩa số thời gian đóng cửa liên tiếp tăng/giảm là kết thúc (bất định 3) và số ngày để so sánh đóng cửa hiện tại với đóng cửa N ngày trước như ngày trước (bất định 9).
  2. Sử dụng các biến long_cc và short_cc để ghi lại liệu các nến kết thúc gần đây nhất có liên tục đóng lên / xuống không. Giá trị là 1 nếu liên tục, nếu không là 0.
  3. So sánh giá đóng cửa hiện tại với giá đóng cửa ngày trước đó. Nếu giá hiện tại cao hơn/ thấp hơn, long_daysago/short_daysago là đúng.
  4. Kết hợp long_cc, short_cc với long_daysago, short_daysago để có được tín hiệu dài và ngắn cuối cùng.
  5. Chụp hình tam giác màu xanh lá cây và màu đỏ tương ứng với tín hiệu dài và ngắn.
  6. Nếu một tín hiệu dài xuất hiện và không có vị trí dài hiện tại, hãy đi dài và đặt giá dừng lỗ xuống mức thấp nhất của nến tín hiệu.
  7. Nếu một tín hiệu ngắn xuất hiện và không có vị trí ngắn hiện tại, đi ngắn và đặt giá dừng lỗ lên mức cao nhất của nến tín hiệu.

Phân tích lợi thế

  1. Tự động xác định sóng xung trong Lý thuyết sóng Elliott, giảm ảnh hưởng của phân tích chủ quan.
  2. Sóng xung thường đi kèm với xu hướng mạnh mẽ, mà chiến lược này có thể nắm bắt.
  3. Việc đặt dừng lỗ phù hợp với hướng xu hướng, cải thiện tỷ lệ rủi ro-lợi nhuận.
  4. Có thể phát hiện các cơ hội nhập cảnh tiềm năng trước khi bắt đầu xu hướng.
  5. Các thông số có thể điều chỉnh, làm cho nó có thể áp dụng rộng rãi.

Phân tích rủi ro

  1. Có thể có những sai lệch trong việc giải thích lý thuyết sóng, dẫn đến những phán đoán sai lầm.
  2. Thời gian của xu hướng khó dự đoán, và dừng lỗ có thể được đặt quá gần, dẫn đến việc dừng lại.
  3. Có thể không hiệu quả trong thị trường bên cạnh, tạo ra các giao dịch thường xuyên.
  4. Không xem xét kích thước vị trí và quản lý tiền.

Hướng dẫn tối ưu hóa

  1. Tối ưu hóa cấu hình các tham số consclos và daysago thông qua backtesting để cải thiện độ chính xác tín hiệu.
  2. Thiết lập các chỉ số xác nhận xu hướng như MACD để giảm tiếng ồn.
  3. Xem xét thêm các điểm dừng để bảo vệ lợi nhuận tốt hơn.
  4. Khi xu hướng chưa rõ ràng, hãy bắt đầu với một vị trí nhỏ và thêm vào khi xu hướng trở nên rõ ràng.
  5. Kiểm soát kích thước vị trí và rủi ro, chẳng hạn như giới hạn tỷ lệ phần trăm tiền cho mỗi giao dịch và thiết lập mức rút tối đa.

Tóm lại

Chiến lược này dựa trên lý thuyết sóng Elliott cổ điển và có thể nắm bắt các chuyển động xu hướng mạnh với một số khả năng áp dụng và lợi nhuận. Tuy nhiên, tính chủ quan của lý thuyết sóng và định nghĩa sóng xung có thể ảnh hưởng đến hiệu suất của chiến lược. Trong ứng dụng thực tế, nên chú ý đến tối ưu hóa tham số, quản lý vị trí, giảm tần suất giao dịch, v.v. Bằng cách giới thiệu các chỉ số xác nhận xu hướng, dừng lại, xây dựng vị trí dần dần và các phương tiện khác, hiệu suất và sự ổn định của chiến lược này có thể được cải thiện hơn nữa.


/*backtest
start: 2023-04-20 00:00:00
end: 2024-04-25 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/
// © Smollet

//@version=5
strategy("LW: 4-9 indicator", overlay = true)

consclos = input.int(3, "Consecutive close")
daysago = input.int(9, "Days ago")


var int long_cc = 0
var int short_cc = 0

long_cc := 1
short_cc := 1

for i = 1 to consclos
    long_cc := close[i-1] > close[i] ? long_cc*1 : long_cc*0
    short_cc := close[i-1] < close[i] ? short_cc*1 : short_cc*0

long_daysago = close > close[daysago]
short_daysago = close < close[daysago]



long = long_cc ==1 and long_daysago
short = short_cc ==1 and short_daysago


plotshape(long, style=shape.triangleup, location=location.belowbar, color=color.green)
plotshape(short, style=shape.triangledown, location=location.abovebar, color=color.red)



//Strategy code
if long and strategy.position_size <= 0
    strategy.entry("Long", strategy.long)
    strategy.exit("Long SL", "Long", stop = low)

if short and strategy.position_size >= 0
    strategy.entry("Short", strategy.short)
    strategy.exit("Short SL", "Short", stop = high)


Có liên quan

Thêm nữa