Tài nguyên đang được tải lên... tải...

Chiến lược xu hướng thích nghi kết hợp nhiều chỉ số

Tác giả:ChaoZhang, Ngày: 2023-12-19 11:01:05
Tags:

img

Tổng quan

Chiến lược này đánh giá chính xác xu hướng bằng cách kết hợp chỉ số trung bình động Hull kép, chỉ số trung bình động khối lượng, chỉ số MACD và chỉ số chỉ số sức mạnh thực. Nó có thể tự động thích nghi với những thay đổi trong điều kiện thị trường và có khả năng thích nghi mạnh mẽ.

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

Chỉ số cốt lõi của chiến lược này là trung bình di chuyển Hull kép, được kiểm soát bởi hai thông số keh và teh. Hai thông số này xác định chu kỳ của đường nhanh và đường chậm tương ứng.

Chỉ số đánh giá phụ là trung bình động được cân nhắc khối lượng meh1. Khi giá cao hơn meh1, đó là xu hướng tăng; khi giá thấp hơn meh1, đó là xu hướng giảm.

Một chỉ số đánh giá phụ khác là MACD. Nó được lấy bằng cách trừ trung bình di chuyển nhanh từ trung bình di chuyển chậm để có được MACD, và sau đó sử dụng trung bình di chuyển của MACD để có được đường tín hiệu. Khi MACD cao hơn đường tín hiệu, đó là xu hướng tăng.

Chỉ số đánh giá phụ cuối cùng là TSI, được tính bằng cách làm bằng đôi tỷ lệ thay đổi giá. Độ lớn giá trị tuyệt đối của nó đại diện cho động lực thay đổi giá. Trong các điều kiện mua và bán, đường tín hiệu của TSI được đánh giá là kiểm soát thời gian nhập và xuất.

Bằng cách kết hợp các tín hiệu của các chỉ số này, xu hướng có thể được đánh giá chính xác và các tham số có thể được tự động điều chỉnh để đồng bộ với thị trường.

Ưu điểm

  1. Sử dụng đường trung bình động Hull hai lần như chỉ số đánh giá chính, kết hợp với nhiều chỉ số khác, có thể cải thiện độ chính xác đánh giá và giảm tín hiệu sai.

  2. Áp dụng chỉ số TSI để xác định thời gian nhập và xuất thị trường có thể kiểm soát rủi ro.

  3. Nhiều thông số điều chỉnh cho khả năng thích nghi mạnh mẽ có thể tự động thích nghi với những thay đổi của thị trường.

  4. Ý tưởng kết hợp chỉ số và tự điều chỉnh tham số làm cho chiến lược ổn định với lợi nhuận liên tục mạnh mẽ.

Phân tích rủi ro

  1. Mặc dù chỉ số TSI được sử dụng để xác định thời gian, các chỉ số được sử dụng trong thuật toán vẫn là các loại xu hướng.

  2. Cài đặt tham số không chính xác có thể gây thất bại chiến lược.

  3. Sự kết hợp của nhiều chỉ số làm tăng khối lượng tính toán, làm tăng khả năng sai sót trong số lượng dữ liệu lớn và các khoảng thời gian.

  4. Cần phải theo dõi hiệu ứng tính toán của các chỉ số để ngăn chặn sự can thiệp từ dữ liệu bất thường.

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

  1. Các chỉ số phụ trợ khác như BOLL có thể được thử nghiệm để làm cho tín hiệu chính xác và đáng tin cậy hơn.

  2. Tối ưu hóa logic vào và ra, đặt dừng lỗ và lấy lợi nhuận điều kiện để kiểm soát lợi nhuận và lỗ duy nhất.

  3. Đào tạo và tối ưu hóa các tham số cho các giống khác nhau để làm cho chúng phù hợp hơn với các giống khác nhau.

  4. Tăng module tự điều chỉnh tham số để tự động điều chỉnh các tham số chiến lược dựa trên các hiệu ứng giao dịch gần đây.

Tóm lại

Chiến lược này tích hợp các lợi thế của nhiều chỉ số và sử dụng sự kết hợp của các chỉ số để đánh giá hướng xu hướng. Trong khi kiểm soát rủi ro, nó cải thiện độ chính xác của các phán quyết. Thông qua tối ưu hóa tham số và tối ưu hóa logic, chiến lược có thể thích nghi tốt hơn với những thay đổi của thị trường, trong khi giảm tổn thất liên tục và đạt được lợi nhuận lớn hơn. Chiến lược này ổn định và có thể được sử dụng cho cổ phiếu, tiền điện tử và các loại khác trong dài hạn.


/*backtest
start: 2023-11-18 00:00:00
end: 2023-12-18 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//                                                    Quad-HullMA-cross & VWMA & MacD & TSI combination  <<<<< by SeaSide420 >>>>>>
strategy("MultiCross420", overlay=true, calc_on_order_fills= true, calc_on_every_tick=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=0)
keh=input(title="Double HullMA 1",defval=7, minval=1)
teh=input(title="Double HullMA 2",defval=14, minval=1)
meh=input(title="VWMA",defval=1, minval=1)
meh1=vwma(close,round(meh))
n2ma=2*wma(close,round(keh/2))
nma=wma(close,keh)
diff=n2ma-nma,sqn=round(sqrt(keh))
n2ma1=2*wma(close[2],round(keh/2))
nma1=wma(close[2],keh)
diff1=n2ma1-nma1,sqn1=round(sqrt(keh))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
b=n1>n2?lime:red
c=n1>n2?green:red
n2ma3=2*wma(close,round(teh/2))
nma2=wma(close,teh)
diff2=n2ma3-nma2,sqn2=round(sqrt(teh))
n2ma4=2*wma(close[2],round(teh/2))
nma3=wma(close[2],teh)
diff3=n2ma4-nma3,sqn3=round(sqrt(teh))
n3=wma(diff2,sqn2)
n4=wma(diff3,sqn3)
fastLength = input(title="MacD fastLength", defval=7)
slowlength = input(title="MacD slowlength", defval=14)
MACDLength = input(title="MacD Length", defval=3)
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD
a1=plot(n1,color=c),a2=plot(n2,color=c)
plot(cross(n1, n2) ? n1 : na, style = cross, color=b, linewidth = 3)
a3=plot(n3,color=c),a4=plot(n4,color=c)
plot(cross(n3, n4) ? n1 : na, style = cross, color=b, linewidth = 3)
//a5=plot(meh1,color=c)
long = input(title="TSI Long Length",  defval=5)
short = input(title="TSI Short Length",  defval=3)
signal = input(title="TSI Signal Length",  defval=2)
linebuy = input(title="TSI Upper Line",  defval=4)
linesell = input(title="TSI Lower Line",  defval=-4)
price = close
double_smooth(src, long, short) =>
    fist_smooth = ema(src, long)
    ema(fist_smooth, short)
pc = change(price)
double_smoothed_pc = double_smooth(pc, long, short)
double_smoothed_abs_pc = double_smooth(abs(pc), long, short)
tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)
closelong = n1<n2 and n3<n4 and n1>meh1
if (closelong)
    strategy.close("Long")
closeshort = n1>n2 and n3>n4 and n1<meh1
if (closeshort)
    strategy.close("Short") 
longCondition = strategy.opentrades<1 and n1>n2 and MACD>aMACD and n1<meh1 and n3>n4 and ema(tsi_value, signal)>linesell
if (longCondition)
    strategy.entry("Long",strategy.long)
shortCondition = strategy.opentrades<1  and n1<n2 and MACD<aMACD and n1>meh1 and n3<n4 and ema(tsi_value, signal)<linebuy
if (shortCondition)
    strategy.entry("Short",strategy.short)

Thêm nữa