Xu hướng thúc đẩy theo chiến lược

Tác giả:ChaoZhang, Ngày: 2023-10-30 11:36:26
Tags:

img

Tổng quan

Chiến lược này sử dụng chỉ số VIDYA (Chỉ số động trung bình biến đổi) để xác định hướng xu hướng trên thị trường tiền điện tử và giao dịch dựa trên xu hướng.

Chiến lược logic

Chiến lược này đầu tiên tính toán chỉ số VIDYA. Chỉ số VIDYA dựa trên đà tăng giá và có thể phản ứng nhanh hơn với những thay đổi xu hướng. Cụ thể, nó kết hợp Chande Momentum Oscillator (CMO) và Simple Moving Average (SMA). CMO đo sự khác biệt giữa đà tăng và giảm để đánh giá sức mạnh xu hướng. SMA làm mịn dữ liệu giá. VIDYA điều chỉnh năng động trọng lượng SMA dựa trên giá trị CMO, cho CMO trọng lượng nhiều hơn trong những thay đổi xu hướng và trọng lượng nhiều hơn cho SMA một khi xu hướng được thiết lập.

Sau khi tính toán VIDYA, chiến lược đánh giá hướng xu hướng dựa trên đường cong của VIDYA.

Phân tích lợi thế

  • VIDYA phản ứng nhanh chóng và có thể nắm bắt sự thay đổi xu hướng sớm so với các chỉ số truyền thống như SMA.

  • Kết hợp sức mạnh và hướng xu hướng, nó có thể phân biệt hiệu quả xu hướng mạnh và yếu và tránh xu hướng sai trên các thị trường khác nhau.

  • Chỉ dựa vào VIDYA làm cho chiến lược đơn giản. Không có tín hiệu mâu thuẫn hoặc gây hiểu lầm từ nhiều chỉ số.

  • Các thiết lập VIDYA dài hơn cho phép theo dõi xu hướng dài hạn và nắm bắt hướng xu hướng chính.

  • Kết quả backtest tốt với lợi nhuận mong đợi tích cực.

Phân tích rủi ro

  • VIDYA có thể chậm trễ trong phản ứng với các sự kiện thị trường đột ngột và bỏ lỡ các cơ hội giao dịch ngắn hạn.

  • Các thiết lập VIDYA dài làm cho nó ít nhạy cảm hơn với những thay đổi xu hướng ngắn hạn và có thể dẫn đến việc rút tiền lớn hơn.

  • Theo xu hướng thuần túy hoạt động kém trong thị trường hỗn loạn.

  • Dữ liệu backtest hạn chế không thể xác minh đầy đủ độ bền. Các thông số cần tối ưu hóa và thử nghiệm lặp đi lặp lại trong giao dịch trực tiếp.

  • Sự biến động cao trên thị trường tiền điện tử. Kích thước vị trí và dừng lỗ nên được kiểm soát cẩn thận để quản lý rủi ro nghiêm ngặt.

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

  • Kiểm tra thêm các chỉ số khối lượng hoặc biến động để cải thiện độ nhạy với những thay đổi xu hướng.

  • Hãy thử kết hợp VIDYA với các chỉ số xu hướng khác để có hiệu ứng tổng thể.

  • Tối ưu hóa chiến lược dừng lỗ để thoát sớm khi xu hướng đảo ngược.

  • Tối ưu hóa kích thước vị trí dựa trên điều kiện thị trường.

  • Kiểm tra độ bền trên các loại tiền điện tử và khung thời gian khác nhau.

Kết luận

Nhìn chung, đây là một chiến lược theo xu hướng định lượng. Nó sử dụng chỉ số VIDYA để xác định hướng xu hướng, nắm bắt xu hướng tiền điện tử một cách đơn giản và hiệu quả. Nhưng nó cũng có một số hạn chế đòi hỏi phải tối ưu hóa thêm trong việc dừng lỗ, kích thước vị trí vv để làm cho chiến lược mạnh mẽ hơn và thực tế khả thi. Nói chung, nó cung cấp một khuôn khổ cơ bản và cách tiếp cận để xây dựng các chiến lược xu hướng tiền điện tử, nhưng vẫn cần đánh giá thận trọng cho các ứng dụng trong thế giới thực.


/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 00:00:00
period: 1h
basePeriod: 15m
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/
// @version=5
// Author = TradeAutomation


strategy(title="VIDYA Trend Strategy", shorttitle="VIDYA Trend Strategy", process_orders_on_close=true, overlay=true, pyramiding=25,  commission_type=strategy.commission.percent, commission_value=.075, slippage = 1, initial_capital = 1000000, default_qty_type=strategy.percent_of_equity, default_qty_value=4)


// Backtest Date Range Inputs // 
StartTime = input(defval=timestamp('01 Jan 2000 08:00'), group="Date Range", title='Start Time')
EndTime = input(defval=timestamp('01 Jan 2099 00:00'), group="Date Range", title='End Time')
InDateRange = true

// Strategy Inputs //
len = input.int(title="VIDYA Length", defval=50, step=5,group="Trend Settings")
src = input.source(title="VIDYA Price Source",defval=ohlc4, group="Trend Settings")

// VIDYA Calculations //
valpha=2/(len+1)
vud1=src>src[1] ? src-src[1] : 0
vdd1=src<src[1] ? src[1]-src : 0
vUD=math.sum(vud1,9)
vDD=math.sum(vdd1,9)
vCMO=nz((vUD-vDD)/(vUD+vDD))
var VIDYA = 0.0
VIDYA := na(VIDYA[1]) ? ta.sma(src, len) : nz(valpha*math.abs(vCMO)*src)+(1-valpha*math.abs(vCMO))*nz(VIDYA[1])
plot(VIDYA, title="VIDYA",color=(VIDYA > VIDYA[1]) ? color.green : (VIDYA<VIDYA[1]) ? color.red : (VIDYA==VIDYA[1]) ? color.gray : color.black, linewidth=2)

// Entry & Exit Signals //
if (InDateRange)
    strategy.entry("Long", strategy.long, when = VIDYA>VIDYA[1])
    strategy.close("Long", when = VIDYA<VIDYA[1])
if (not InDateRange)
    strategy.close_all()
    

Thêm nữa