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


Ngày tạo: 2023-12-19 12:07:14 sửa đổi lần cuối: 2023-12-19 12:07:14
sao chép: 0 Số nhấp chuột: 1121
1
tập trung vào
1621
Người theo dõi

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

Tổng quan

Đây là một chiến lược giao dịch dựa trên chỉ số xu hướng sóng của LazyBear. Chiến lược này sử dụng xu hướng sóng của biến động giá để đánh giá tình trạng quá mua và quá bán của thị trường, thực hiện longing và shorting.

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

Chiến lược này chủ yếu dựa trên chỉ số xu hướng sóng của LazyBear. Đầu tiên tính giá trung bình của giá ((AP), sau đó tính trung bình di chuyển chỉ số của AP ((ESA) và trung bình di chuyển chỉ số của biến động giá tuyệt đối ((D)). Dựa trên đó tính chỉ số dao động ((CI), sau đó tính trung bình di chuyển chỉ số của CI, để có được đường xu hướng sóng ((WT)).

Phân tích lợi thế

Đây là một chiến lược theo dõi xu hướng rất đơn giản nhưng rất thực tế.

  1. Dựa trên chỉ số xu hướng sóng, có thể xác định rõ xu hướng giá cả và tâm trạng thị trường
  2. Các giao dịch đơn giản, dễ dàng để thực hiện bằng cách sử dụng giao dịch vàng và giao dịch chết của WT để đánh giá điểm mua và bán
  3. Các tham số tùy chỉnh để điều chỉnh độ nhạy của dây WT cho các chu kỳ khác nhau
  4. Có thể thêm các tín hiệu lọc điều kiện hơn, chẳng hạn như giới hạn cửa sổ thời gian giao dịch

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro:

  1. Là một chiến lược theo dõi xu hướng, có thể tạo ra rất nhiều tín hiệu sai trong thị trường.
  2. WT tự nó bị tụt hậu, có thể bỏ lỡ điểm biến giá nhanh
  3. Các tham số mặc định có thể không phù hợp với tất cả các giống và chu kỳ cần được tối ưu hóa
  4. Không có cơ chế dừng lỗ, thời gian nắm giữ đơn phương có thể quá dài

Các giải pháp chính là:

  1. Tối ưu hóa tham số, điều chỉnh độ nhạy của WT
  2. Thêm các chỉ số khác để xác minh và tránh các tín hiệu sai
  3. Cài đặt dừng và dừng
  4. Hạn chế số lần giao dịch hoặc vị trí mỗi ngày

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

Chiến lược này có thể được tối ưu hóa hơn nữa:

  1. Tối ưu hóa các tham số của WT để nó nhạy cảm hơn hoặc ổn định hơn
  2. Sử dụng các tham số khác nhau dựa trên các chu kỳ khác nhau
  3. Thêm chỉ số giá cả, chỉ số dao động, v.v. như tín hiệu xác nhận
  4. Thêm logic dừng và dừng
  5. Các phương thức nắm giữ phong phú, chẳng hạn như tăng kho kim tự tháp, giao dịch lưới.
  6. Phương pháp kết hợp với học máy để khai thác các đặc điểm và quy tắc giao dịch tốt hơn

Tóm tắt

Chiến lược này là một chiến lược theo dõi xu hướng sóng rất đơn giản và thực tế. Nó phát ra tín hiệu giao dịch bằng cách tính toán xu hướng biến động của giá, xác định tình trạng quá mua quá bán của thị trường, sử dụng giao điểm vàng và giao điểm chết của đường dây WT. Chiến lược hoạt động đơn giản và dễ thực hiện.

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

//
// @author LazyBear
//
// If you use this code in its original/modified form, do drop me a note. 
//
//@version=4
     
// === INPUT BACKTEST RANGE ===
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2021, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

// === INPUT SHOW PLOT ===
showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

// === FUNCTION EXAMPLE ===
start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => true       // create function "within window of time"

n1 = input(10, "Channel Length")
n2 = input(21, "Average Length")
obLevel1 = input(60, "Over Bought Level 1")
obLevel2 = input(53, "Over Bought Level 2")
osLevel1 = input(-60, "Over Sold Level 1")
osLevel2 = input(-53, "Over Sold Level 2")
 
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(obLevel1, color=color.red)
plot(osLevel1, color=color.green)
plot(obLevel2, color=color.red, style=3)
plot(osLevel2, color=color.green, style=3)

plot(wt1, color=color.white)
plot(wt2, color=color.fuchsia)
plot(wt1-wt2, color=color.new(color.blue, 80), style=plot.style_area)

//Strategy
strategy(title="T!M - Wave Trend Strategy", overlay = false, precision = 8, max_bars_back = 200, pyramiding = 0, initial_capital = 1000, currency = currency.NONE, default_qty_type = strategy.cash, default_qty_value = 1000, commission_type = "percent", commission_value = 0.1, calc_on_every_tick=false, process_orders_on_close=true)
    
longCondition  = crossover(wt1, wt2)
shortCondition = crossunder(wt1, wt2)

strategy.entry(id="Long Entry", comment="buy", long=true, when=longCondition and window())
strategy.close("Long Entry", comment="sell", when=shortCondition and window())      

//strategy.entry(id="Short Entry", long=false, when=shortCondition)