Chiến lược thị trường thích ứng của Donqi'an Wave


Ngày tạo: 2023-10-26 15:58:52 sửa đổi lần cuối: 2023-10-26 15:58:52
sao chép: 0 Số nhấp chuột: 808
1
tập trung vào
1617
Người theo dõi

Chiến lược thị trường thích ứng của Donqi’an Wave

Tổng quan

Chiến lược này dựa trên các chỉ số kênh Donchian để thực hiện theo dõi thị trường và giao dịch theo xu hướng. Khi giá vượt qua kênh Donchian, theo dõi xu hướng; Khi giá trở lại bên trong kênh, dừng lỗ.

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

  1. Tính toán giá cao nhất và giá thấp nhất trong một chu kỳ nhất định, tạo thành đường Dongxian. Đường trung tâm của đường là giá cao nhất và giá thấp nhất trong khoảng thời gian.

  2. Khi giá vượt qua kênh trên, hãy mở nhiều vị trí đầu; khi giá vượt qua kênh dưới, hãy mở vị trí đầu trống.

  3. Sau khi mở vị trí, đường dừng theo dõi đường trung bình của kênh; đường dừng theo dõi tỷ lệ giá phá vỡ kênh.

  4. Khi giá quay trở lại trong kênh, hãy dừng lỗ.

Phân tích lợi thế

  1. Chiến lược này sử dụng đường Đông Dương để xác định xu hướng và nhanh chóng nắm bắt các bước đột phá.

  2. Việc sử dụng đường trung tâm theo dõi dừng lỗ, có thể bảo vệ lợi nhuận.

  3. Cài đặt các thiết lập của người dùng để mở rộng khoảng trống lợi nhuận.

  4. Có khả năng thích ứng với các tình huống khác nhau, chẳng hạn như cân bằng, phá vỡ, điều chỉnh trở lại, điều chỉnh vị trí linh hoạt.

  5. Chiến lược giao dịch có logic đơn giản, rõ ràng và dễ hiểu.

Phân tích rủi ro

  1. Chiến lược này chỉ dựa trên giao dịch phá vỡ kênh và không có khả năng đối phó hiệu quả với thị trường thu hẹp.

  2. Có nguy cơ phá vỡ tín hiệu giả, cần xác minh kết hợp với các chỉ số khác.

  3. Việc thiết lập dừng lỗ không phù hợp có thể dẫn đến dừng lỗ sớm hoặc lợi nhuận không đầy đủ.

  4. Không đúng cách thiết lập chu kỳ kênh sẽ ảnh hưởng đến độ chính xác của tín hiệu giao dịch.

  5. Các vị thế lớn có thể làm tăng ảnh hưởng của biến động thị trường đến tài khoản.

  6. Có nguy cơ gián đoạn giao dịch của robot, cần đảm bảo hệ thống ổn định và đáng tin cậy.

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

  1. Kết hợp với chỉ số khối lượng giao dịch, tránh theo dõi các đột phá giả mạo.

  2. Tăng khả năng đánh giá các chỉ số xu hướng và tăng độ chính xác của tín hiệu mở đầu.

  3. Tối ưu hóa các thuật toán dừng dừng lỗ, thực hiện điều chỉnh động.

  4. Điều chỉnh chiến lược quản lý vị trí theo thời gian thực theo môi trường thị trường.

  5. Nghiên cứu các dữ liệu trước và sau giờ chơi để tìm ra thời điểm tốt nhất để tham gia.

  6. Kiểm tra các tham số khác nhau trong chu kỳ, tìm kiếm sự kết hợp tham số tốt nhất.

  7. Thêm mô-đun kiểm tra mô hình để tránh quá phù hợp.

Tóm tắt

Chiến lược này nói chung là một chiến lược tự thích ứng với xu hướng đơn giản và thực tế. Nó có các đặc điểm như phá vỡ xu hướng nhanh chóng và bảo vệ lợi nhuận. Ngoài ra, cũng có một số nhược điểm đối với việc không hiệu quả trong điều chỉnh, phá vỡ giả tạo ra lỗ.

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

//Noro
//2020

//@version=4
strategy(title = "Noro's Donchian Strategy", shorttitle = "Donchian str", overlay = true, default_qty_type = strategy.percent_of_equity, initial_capital = 100, default_qty_value = 100, commission_value = 0.1)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
tp = input(defval = 10, minval = 1, title = "Take profit")
lotsize = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
pclen = input(50, minval = 1, title = "Price Channel Length")
showll = input(true, defval = true, title = "Show lines")
showbg = input(false, defval = false, title = "Show Background")
showof = input(true, defval = true, title = "Show Offset")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Price Channel
h = highest(high, pclen)
l = lowest(low, pclen)
center = (h + l) / 2
tpl = h * (100 + tp) / 100
tps = l * (100 - tp) / 100

//Lines
tpcol = showll ? color.lime : na
pccol = showll ? color.blue : na
slcol = showll ? color.red : na
offset = showof ? 1 : 0
plot(tpl, offset = offset, color = tpcol, title = "TP Long")
plot(h, offset = offset, color = pccol, title = "Channel High")
plot(center, offset = offset, color = slcol, title = "Cannel Center")
plot(l, offset = offset, color = pccol, title = "Channel Low")
plot(tps, offset = offset, color = tpcol, title = "TP Short")

//Background
size = strategy.position_size
bgcol = showbg == false ? na : size > 0 ? color.lime : size < 0 ? color.red : na
bgcolor(bgcol, transp = 70)

//Trading
truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
lot = 0.0
lot := size != size[1] ? strategy.equity / close * lotsize / 100 : lot[1]
mo = 0
mo := strategy.position_size != 0 ? 0 : high >= center and low <= center ? 1 : mo[1]
if h > 0
    strategy.entry("Long", strategy.long, lot, stop = h, when = strategy.position_size <= 0 and needlong and truetime and mo)
    strategy.exit("TP Long", "Long", limit = tpl, stop = center)
    strategy.entry("Short", strategy.short, lot, stop = l, when = strategy.position_size >= 0 and needshort and truetime and mo)
    strategy.exit("TP Short", "Short", limit = tps, stop = center)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("Long")
    strategy.cancel("Short")