Chiến lược giao dịch định lượng dựa trên xu hướng sóng


Ngày tạo: 2023-11-28 16:17:31 sửa đổi lần cuối: 2023-11-28 16:17:31
sao chép: 1 Số nhấp chuột: 715
1
tập trung vào
1619
Người theo dõi

Chiến lược giao dịch định lượng dựa trên xu hướng sóng

Tổng quan

Chiến lược này được thiết kế dựa trên chỉ số xu hướng sóng. Chỉ số xu hướng sóng kết hợp với kênh giá và đường trung bình, có thể xác định hiệu quả xu hướng thị trường, phát tín hiệu mua và bán. Chiến lược này thực hiện mua hoặc bán bằng cách thiết lập đường mua quá mức của xu hướng sóng, khi đường chỉ số phá vỡ đường quan trọng.

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

  1. Tính trung bình di chuyển tam giác của giá ap, và trung bình di chuyển chỉ số của giá ap esa.
  2. Tính trung bình di chuyển chỉ số của sự khác biệt tuyệt đối giữa ap và esa d.
  3. Các chỉ số dao động được lấy từ:
  4. Tính trung bình chu kỳ n2 của ci, có chỉ số xu hướng sóng wt1。
  5. Đặt đường mua và đường bán quá mức.
  6. Khi trên wt1 đi qua đường bán quá mức, làm nhiều hơn; khi dưới wt1 đi qua đường mua quá mức, làm trống.

Phân tích lợi thế

  1. Chỉ số xu hướng sóng vượt qua đường mua bán quá mức, có thể nắm bắt hiệu quả các điểm biến của xu hướng thị trường, đưa ra quyết định mua và bán chính xác.
  2. Kết hợp với kênh giá và lý thuyết đường trung bình, chỉ số sẽ không tạo ra tín hiệu thường xuyên.
  3. Sử dụng chu kỳ thời gian tùy ý, phù hợp với nhiều loại giao dịch.
  4. Các tham số chỉ số có thể điều chỉnh, trải nghiệm người dùng tốt.

Rủi ro và giải pháp

  1. Trong thị trường có nhiều biến động, chỉ số có thể tạo ra tín hiệu sai, rủi ro lớn hơn. Có thể rút ngắn thời gian giữ vị trí thích hợp, hoặc kết hợp với các chỉ số khác để lọc tín hiệu.
  2. Không tính đến cơ chế quản lý vị trí và dừng lỗ, có nguy cơ mất mát. Bạn có thể đặt kích thước vị trí và di chuyển dừng để kiểm soát rủi ro.

Hướng tối ưu hóa

  1. Có thể xem xét sử dụng với các chỉ số khác như KDJ, MACD, v.v. để tạo ra danh mục đầu tư giao dịch, tăng sự ổn định của chiến lược.
  2. Có thể thiết kế các cơ chế dừng lỗ tự động, chẳng hạn như dừng theo dõi, dừng dây chuyền chuyển đổi, để kiểm soát tổn thất đơn lẻ.
  3. Có thể kết hợp với các thuật toán học sâu để cải thiện tỷ lệ chiến lược chiến thắng bằng cách tự động tối ưu hóa các tham số bằng cách đào tạo dữ liệu phản hồi.

Tóm tắt

Chiến lược này dựa trên các chỉ số xu hướng sóng để xác định xu hướng mua quá mức và bán quá mức, là một chiến lược theo dõi xu hướng hiệu quả. So với các chỉ số ngắn hạn, các chỉ số xu hướng sóng có thể làm giảm tín hiệu sai và tăng sự ổn định. Kết hợp với quản lý vị trí và dừng lỗ, chiến lược này có thể thu được lợi nhuận ổn định.

Mã nguồn chiến lược
/*backtest
start: 2023-11-20 00:00:00
end: 2023-11-27 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@author SoftKill21
//@version=4

strategy(title="WaveTrend strat", shorttitle="WaveTrend strategy")
n1 = input(10, "Channel Length")
n2 = input(21, "Average Length")
Overbought = input(70, "Over Bought")
Oversold = input(-30, "Over Sold ")

// BACKTESTING RANGE
 
// From Date Inputs
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2001, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2020, title = "To Year", minval = 1970)
 
// Calculate start/end date and time condition
DST = 1 //day light saving for usa
//--- Europe
London = iff(DST==0,"0000-0900","0100-1000")
//--- America
NewYork = iff(DST==0,"0400-1500","0500-1600")
//--- Pacific
Sydney = iff(DST==0,"1300-2200","1400-2300")
//--- Asia
Tokyo = iff(DST==0,"1500-2400","1600-0100")

//-- Time In Range
timeinrange(res, sess) => time(res, sess) != 0

london = timeinrange(timeframe.period, London)
newyork = timeinrange(timeframe.period, NewYork)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true //and (london or newyork)

ap = hlc3 
esa = ema(ap, n1)
d = ema(abs(ap - esa), n1)
ci = (ap - esa) / (0.015 * d)
tci = ema(ci, n2)
 
wt1 = tci
wt2 = sma(wt1,4)

plot(0, color=color.gray)
plot(Overbought, color=color.red)
plot(Oversold, color=color.green)

plot(wt1, color=color.green)
longButton = input(title="Long", type=input.bool, defval=true)
shortButton = input(title="Short", type=input.bool, defval=true)

if(longButton==true)
    strategy.entry("long",1,when=crossover(wt1,Oversold) and time_cond)
    strategy.close("long",when=crossunder(wt1, Overbought))
    
if(shortButton==true)
    strategy.entry("short",0,when=crossunder(wt1, Overbought) and time_cond)
    strategy.close("short",when=crossover(wt1,Oversold))

//strategy.close_all(when= not (london or newyork),comment="time")
if(dayofweek == dayofweek.friday)
    strategy.close_all(when= timeinrange(timeframe.period, "1300-1400"), comment="friday")