Chiến lược giao dịch dựa trên phái sinh

Tác giả:ChaoZhang, Ngày: 2024-01-12 11:06:28
Tags:

img

Tổng quan

Chiến lược này đầu tư tỷ lệ phần trăm vốn bằng nhau dựa trên việc sử dụng các phái sinh thời gian thứ 1, thứ 2, thứ 3 và thứ 4 của Hull Moving Average (HMA). Các điểm vào được xác định bởi xu hướng trong các phái sinh thứ 2, thứ 3 và thứ 4, trong khi các điểm ra được tạo ra tại một điểm vào mới hoặc tỷ lệ stoploss.

Chiến lược logic

Chiến lược đầu tiên tính toán HMA. Hull Moving Average là một đường trung bình động được tính theo công thức sau:

hullma = wma(2*wma(src,sm/2)-wma(src,sm),round(sqrt(sm))) 

nơi src là giá và sm là một thông số đầu vào kiểm soát độ dài của trung bình.

Sau đó, chiến lược tính toán tốc độ (định nghĩa dẫn xuất thứ 1), gia tốc (định nghĩa dẫn xuất thứ 2), cú rung (định nghĩa dẫn xuất thứ 3) và kết nối (định nghĩa dẫn xuất thứ 4).

speed = (hullma-hullma[len])/len

Các phái sinh khác được tính theo cách tương tự.

Chiến lược xác định các bước vào và ra bằng cách nhìn vào các dấu hiệu của gia tốc, giật và kết nối. Nếu cả ba chỉ số đều dương tính, nó sẽ đi dài. Nếu cả ba đều âm tính, nó sẽ đi ngắn.

Ngoài ra, chiến lược cũng sẽ theo dõi các lỗ dừng để khóa lợi nhuận. các vị trí dài sẽ có lỗ dừng được đặt dựa trên tỷ lệ phần trăm đầu vào có thể điều chỉnh, và các vị trí ngắn tương tự.

Phân tích lợi thế

Một lợi thế chính của chiến lược này là nó sử dụng nhiều phái sinh như tín hiệu nhập và xuất, có thể lọc ra một số tín hiệu sai.

Một lợi thế khác là chiến lược này rất linh hoạt. Nó có nhiều tham số có thể điều chỉnh bao gồm chiều dài HMA, chiều dài của các phái sinh khác nhau, tỷ lệ stoploss vv có thể được tối ưu hóa cho các thị trường khác nhau.

Việc sử dụng trailing stop có thể điều chỉnh cũng là một lợi thế. Điều này có thể giúp chiến lược thu được nhiều lợi nhuận hơn trong các thị trường xu hướng, trong khi thoát ra kịp thời trong các thị trường hỗn loạn, hạn chế rút tiền tối đa.

Phân tích rủi ro

Rủi ro chính của chiến lược này là tỷ lệ trúng giảm do các sự kiện đột ngột. Nếu không có bộ lọc có liên quan, các sự kiện tin tức lớn có thể khiến nhiều phái sinh đưa ra tín hiệu sai cùng một lúc, dẫn đến tổn thất lớn hơn. Một số bộ lọc tin tức có thể được thực hiện hoặc chiến lược có thể được tạm dừng trong một thời gian sau các sự kiện bùng nổ để giảm thiểu rủi ro này.

Một rủi ro khác là các tham số có thể dễ dàng quá phù hợp. Chiều dài HMA, chiều dài dẫn xuất vv có thể ảnh hưởng đến kết quả. Điều này đòi hỏi phải kiểm tra lại nghiêm ngặt để đánh giá độ mạnh mẽ của các tham số này trên các thị trường khác nhau. Ngoài ra, tỷ lệ stoploss không nên quá lớn, nếu không thua lỗ có thể tuyết.

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

Chiến lược này có thể được tối ưu hóa theo nhiều cách:

  1. Thêm các bộ lọc dựa trên các sự kiện bùng nổ để tạm dừng giao dịch trong một thời gian sau các sự kiện tin tức lớn, tránh bỏ lỡ các điểm vào dẫn đến tổn thất lớn

  2. Thực hiện thử nghiệm độ bền của các thông số trên các thị trường.Backtest trên các sản phẩm khác nhau, thời gian để đánh giá sự ổn định của các thông số

  3. Cố gắng cải thiện logic đầu vào: giới thiệu các mô hình học máy để xác định xu hướng thay vì những phán đoán tích cực / tiêu cực đơn giản

  4. Cải thiện phương pháp dừng lỗ. Sử dụng biến động hoặc máy học dừng thay vì đơn giản là tỷ lệ phần trăm dừng lại

  5. Thêm lợi nhuận lấy ra. logic hiện tại dựa chủ yếu trên dừng lại, có thể thêm tăng thêm theo dõi hoặc mục tiêu lợi nhuận ra

Kết luận

Đây là một xu hướng theo nhiều khung thời gian theo chiến lược sử dụng nhiều dẫn xuất của Hull Moving Average như là tín hiệu nhập và xuất với các điểm dừng để khóa lợi nhuận. Những lợi thế chính bao gồm lọc ra các tín hiệu sai bằng cách sử dụng nhiều dẫn xuất, các tham số có thể điều chỉnh linh hoạt vv. Những rủi ro cần lưu ý bao gồm tác động từ các sự kiện bùng nổ và quá phù hợp các tham số tiềm năng. Chiến lược có thể được tối ưu hóa bằng cách thêm các bộ lọc, cải thiện độ mạnh mẽ của tham số, nâng cao logic nhập / xuất vv để làm cho nó trở thành một hệ thống giao dịch tự động đáng tin cậy hơn.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title="Derivative Based Strategy", shorttitle="DER", currency="USD", calc_on_order_fills=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, initial_capital=1000)
len = input(1, minval=1, title="Derivatives Length")
sm = input(4, minval=1, title="HMA Length")
longTrailPerc=input(title="Trail Long Loss %", type=float,minval=0.0,step=0.1,defval=25)*0.01
shortTrailPerc=input(title="Trail Short Loss %",type=float,minval=0.0,step=0.1,defval=25)*0.01
longStopPrice=0.0
shortStopPrice=0.0
src = input(ohlc4, title="Source")
hullma = wma(2*wma(src,sm/2)-wma(src,sm),round(sqrt(sm)))
speed = (hullma-hullma[len])/len
accel = (speed-speed[len])/len
jerk = (accel-accel[len])/len
jounce = (jerk-jerk[len])/len
plot(speed, color=green)
plot(accel, color=purple)
plot(jerk, color=red)
plot(jounce, color=blue)
// hline(0, linestyle=solid, color=black)
if accel>0 and jerk>0 and jounce>0// and strategy.opentrades==0
    strategy.entry("openlong", strategy.long)
if accel<0 and jerk<0 and jounce<0// and strategy.opentrades==0
    strategy.entry("openshort",strategy.short)
speed_profit = (strategy.openprofit-strategy.openprofit[1])/len
accel_profit = (speed_profit-speed_profit[1])/len
jerk_profit = (accel_profit-accel_profit[1])/len
longStopPrice:=if(strategy.position_size>0)
    stopValue=ohlc4*(1-longTrailPerc)
    max(stopValue,longStopPrice[1])
else
    0
shortStopPrice:=if(strategy.position_size<0)
    stopValue=ohlc4*(1+shortTrailPerc)
    min(stopValue,shortStopPrice[1])
else
    999999
if(strategy.position_size>0)
    strategy.exit(id="closelong",stop=longStopPrice)
if(strategy.position_size<0)
    strategy.exit(id="closeshort",stop=shortStopPrice)


Thêm nữa