
Chiến lược này dựa trên việc sử dụng các biến thời gian 1, 2, 3 và 4 của Hull Moving Average ((HMA) để đầu tư. Nó sẽ đưa ra một số khoản đầu tư. Điểm nhập cảnh được xác định bởi xu hướng của các biến số 2, 3 và 4, trong khi điểm thoát được tạo ra ở một điểm nhập cảnh mới hoặc theo dõi tỷ lệ phần trăm dừng lỗ.
Chiến lược này đầu tiên tính toán HMA. Đường trung bình di chuyển Hull là một đường trung bình di chuyển có trọng lượng, được tính toán bằng công thức sau:
hullma = wma(2*wma(src,sm/2)-wma(src,sm),round(sqrt(sm)))
Trong đó src là giá và sm là một tham số đầu vào để điều khiển chiều dài của đường trung bình.
Sau đó, chiến lược này tính toán tốc độ (định hướng bậc 1), tăng tốc (định hướng bậc 2), dao động (định hướng bậc 3) và dao động (định hướng bậc 4). Chúng được tính bằng cách tính toán chênh lệch giữa HMA và giá trị trễ của nó và chia cho chiều dài len. Ví dụ, công thức tính toán tốc độ là:
speed = (hullma-hullma[len])/len
Các hệ số còn lại được tính theo cách tương tự.
Chiến lược quyết định vào và ra sân bằng cách xem tích cực và tiêu cực của tăng tốc, rung động và dao động. Nếu ba chỉ số đều là tích cực, nó sẽ mở nhiều thẻ. Nếu ba chỉ số đều là tiêu cực, nó sẽ mở thẻ trống.
Ngoài ra, chiến lược này cũng sẽ trailing stop loss để khóa lợi nhuận. Các vị trí đa đầu sẽ được thiết lập theo một phần trăm đầu vào có thể điều chỉnh để dừng lỗ, tương tự như các vị trí trống đầu.
Một trong những lợi thế chính của chiến lược này là nó sử dụng nhiều dẫn chứng như tín hiệu vào và ra, điều này có thể lọc ra một số tín hiệu giả. Chỉ dựa vào tốc độ ((định số 1)) để quyết định vào thường quá yếu, nhưng kết hợp với các dẫn chứng 2, 3 và 4 có thể tạo ra một hệ thống mạnh mẽ hơn.
Một ưu điểm 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 độ dài HMA, độ dài của các biến số khác nhau, tỷ lệ dừng lỗ, v.v., có thể được tối ưu hóa cho các thị trường khác nhau.
Việc sử dụng các điểm dừng theo dõi 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 có được lợi nhuận nhiều hơn trong các tình huống xu hướng, trong khi rút ra kịp thời trong các tình huống chấn động, hạn chế sự rút lui tối đa.
Rủi ro chính của chiến lược này là giảm tỷ lệ trúng do sự kiện đột ngột. Nếu không có quy tắc lọc liên quan, nhiều dẫn có thể xuất hiện đồng thời với tín hiệu sai sau khi sự kiện tin tức lớn xảy ra, dẫn đến tổn thất lớn. Bạn có thể thiết lập một số bộ lọc tin tức hoặc tạm dừng chiến lược sau sự kiện đột ngột một thời gian để giảm nguy cơ này.
Một rủi ro khác là các tham số dễ bị quá phù hợp. Các tham số như chiều dài HMA, chiều dài của từng dẫn có thể ảnh hưởng đến kết quả. Điều này đòi hỏi phải sử dụng phương pháp đo đạc nghiêm ngặt để đánh giá sự ổn định của các tham số này trong các thị trường khác nhau.
Chiến lược này có thể được tối ưu hóa bằng cách:
Thêm bộ lọc dựa trên sự kiện đột ngột, tạm dừng giao dịch sau một sự kiện tin tức quan trọng để tránh lỗ quá lớn khi bỏ lỡ điểm vào
Kiểm tra lại các tham số trên nhiều thị trường để đảm bảo tính ổn định của chúng. Có thể kiểm tra lại dữ liệu của các giống khác nhau, các khoảng thời gian khác nhau, đánh giá tính ổn định của các thiết lập tham số
Cố gắng thay đổi logic nhập trường. Có thể giới thiệu các thuật toán học máy tự động nhận ra xu hướng thay vì chỉ đơn giản là phán đoán tích cực và tiêu cực
Cải thiện cách dừng lỗ. Có thể sử dụng dừng tỷ lệ dao động hoặc dừng học máy thay vì dừng theo dõi phần trăm đơn giản
Tăng điểm dừng exit. Logic hiện tại chủ yếu dựa trên dừng lỗ, có thể thêm điểm dừng theo dõi lên hoặc mục tiêu rút lợi nhuận
Chiến lược này là một chiến lược theo dõi xu hướng theo nhiều quy mô thời gian. Nó sử dụng nhiều biến của đường trung bình di chuyển của Hull làm tín hiệu đặt hàng và đặt hàng, sử dụng theo dõi dừng để khóa lợi nhuận. Ưu điểm chính là sử dụng nhiều biến để lọc các tín hiệu giả, linh hoạt trong các tham số chiến lược, v.v..
/*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)