Chiến lược giao dịch học máy sáng tạo


Ngày tạo: 2024-01-29 11:20:42 sửa đổi lần cuối: 2024-01-29 11:20:42
sao chép: 0 Số nhấp chuột: 723
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch học máy sáng tạo

Tổng quan

Chiến lược này sử dụng phương pháp học máy để thực hiện một chiến lược giao dịch tự động ngay lập tức. Nó tích hợp nhiều chỉ số và mô hình để tự động tạo ra tín hiệu giao dịch và mua và bán dựa trên tín hiệu.

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

Chiến lược này được xây dựng dựa trên những điểm sau:

  1. Sử dụng đường trung bình của vỏ tàu để đánh giá xu hướng thị trường
  2. Sử dụng EMA để đánh giá xu hướng ngắn hạn và trung hạn
  3. Sử dụng kênh thực thể K-line để xác định vị trí SUPPORT/RESISTANCE quan trọng
  4. Sử dụng giao dịch SECURITY đa chu kỳ để đưa ra quyết định

Cụ thể, chiến lược sẽ vẽ đường trung bình của thân, EMA chu kỳ 13 và EMA chu kỳ 21. Xác định hướng xu hướng ngắn hạn và trung hạn thông qua trạng thái trống của EMA. Sau đó kết hợp với đường trung bình của thân để xác định xu hướng chu kỳ dài hơn. Điều này cung cấp hướng dẫn lớn cho tín hiệu giao dịch tiếp theo.

Trước khi điều chỉnh vị trí, chiến lược sẽ tham khảo các mức hỗ trợ và kháng cự tương ứng với giá cao nhất và thấp nhất trong kênh thực tế. Điều này có thể tránh tạo ra tín hiệu giao dịch ở khu vực giá quan trọng.

Cuối cùng, chiến lược sẽ gọi giá mở và giá đóng 60 chu kỳ, tạo ra tín hiệu mua khi giá đóng vượt qua giá mở và tín hiệu bán khi vượt qua. Như vậy, toàn bộ logic giao dịch được hoàn thành.

Phân tích lợi thế chiến lược

Ưu điểm lớn nhất của chiến lược này là kết hợp các chỉ số học máy và phân tích kỹ thuật để tạo ra một chương trình giao dịch tự động rõ ràng về logic, có thể điều chỉnh các tham số và dễ sử dụng.

  1. Kết hợp nhiều chỉ số để tăng độ chính xác tín hiệu

Chiến lược này không đơn thuần dựa vào một hoặc hai chỉ số, mà là tính đến nhiều yếu tố như xu hướng, kháng cự hỗ trợ, phá vỡ giá, làm tăng đáng kể độ tin cậy và độ chính xác của tín hiệu.

  1. Cài đặt tham số linh hoạt

Độ dài đường trung bình của vỏ, số lần EMA và số lần giao dịch mở và đóng cửa có thể được điều chỉnh thông qua các tham số, giúp chiến lược có thể thích nghi với các môi trường thị trường khác nhau.

  1. Tín hiệu giao dịch tự động

Các tín hiệu giao dịch dựa trên các chỉ số và giá cả chéo có thể tự động kích hoạt mua và bán mà không cần đánh giá bằng tay, làm giảm độ khó của hoạt động.

  1. Hiển thị trực quan

Các biểu đồ trong chiến lược có thể hiển thị rõ ràng cấu trúc thị trường, tình trạng xu hướng và giá cả quan trọng, hiển thị trực quan các phán đoán chiến lược.

Phân tích rủi ro

Mặc dù chiến lược này đã được tối ưu hóa nhiều mặt, nhưng vẫn có một số rủi ro tiềm ẩn:

  1. Không thể theo dõi được

Trong trường hợp giá cả dao động mạnh, các chỉ số có thể bị mất hiệu lực hoặc bị trì hoãn, dẫn đến việc chiến lược không thể theo dõi sự thay đổi giá cả kịp thời. Các tham số cần được tối ưu hóa để thích ứng với tình huống này.

  1. Tỷ lệ lỗi tín hiệu tồn tại

Dựa trên các tín hiệu giao dịch của chỉ số và mô hình, có thể có một số báo cáo sai hoặc báo cáo bị bỏ lỡ. Điều này cần phải cải thiện chất lượng tín hiệu bằng cách kết hợp nhiều tín hiệu phụ trợ hơn.

  1. Rủi ro MIX đa không gian

Chiến lược này đồng thời làm nhiều lỗ hổng, nếu đánh giá sai, sẽ có nguy cơ mất mát hai chiều. Điều này đòi hỏi phải cắt giảm lỗ hổng nghiêm ngặt hoặc giảm vị trí để kiểm soát.

  1. Rủi ro tối ưu hóa

Thiết lập tham số quá phức tạp, có nguy cơ tối ưu hóa quá mức. Điều này đòi hỏi phải đơn giản hóa hệ thống, kiểm soát số lượng các tổ hợp tham số.

Hướng tối ưu hóa chiến lược

Chiến lược này có thể được tối ưu hóa bằng cách:

  1. Thêm nhiều tín hiệu

Ngoài các chỉ số đã có, các chỉ số phụ trợ khác có thể được giới thiệu, chẳng hạn như kênh BOLL, chỉ số KD, v.v., làm phong phú cơ sở phán đoán của hệ thống.

  1. Ứng dụng mô hình học sâu

Sử dụng các chỉ số đơn giản như một đặc điểm, đào tạo các mô hình học sâu như LSTM để cải thiện chất lượng tín hiệu.

  1. Kết hợp dữ liệu cơ bản

Thêm các yếu tố cơ bản như dữ liệu kinh tế vĩ mô, thông tin chính sách, tối ưu hóa quyết định chu kỳ lớn.

  1. Quản lý rủi ro và vị trí

Nhập chiến lược dừng lỗ, điều chỉnh kích thước vị trí theo chiến lược thu nhập biến động động, kiểm soát rủi ro chặt chẽ.

Tóm tắt

Chiến lược này tích hợp nhiều chỉ số như xu hướng, hỗ trợ kháng cự, đột phá, thực hiện chương trình giao dịch định lượng ngay lập tức bằng phương pháp học máy. Nó có những lợi thế như đa dạng danh mục chỉ số, điều chỉnh tham số, tự động hóa tín hiệu, nhưng cũng phải đối mặt với một số vấn đề như theo dõi sai lệch, lỗi tín hiệu và MIX nhiều không gian. Trong tương lai, sẽ có thêm các chỉ số phụ trợ được đưa vào với mô hình, kết hợp các yếu tố cơ bản, điều chỉnh vị trí động và các hướng có thể được tối ưu hóa sâu sắc hơn, để đạt được hiệu quả giao dịch định lượng ổn định, chính xác và thông minh hơn.

Mã nguồn chiến lược
/*backtest
start: 2023-01-22 00:00:00
end: 2024-01-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title='Ali Jitu Abus', shorttitle='Ali_Jitu_Abis_Strategy', overlay=true, pyramiding=0, initial_capital=1000, currency=currency.USD)

//Candle body resistance Channel-----------------------------//
len = 34
src = input(close, title="Candle body resistance channel")
out = sma(src, len)
last8h = highest(close, 13)
lastl8 = lowest(close, 13)
bearish = cross(close,out) == 1 and falling(close, 1)
bullish = cross(close,out) == 1 and rising(close, 1)
channel2=input(false, title="Bar Channel On/Off")
ul2=plot(channel2?last8h:last8h==nz(last8h[1])?last8h:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level top", offset=0)
ll2=plot(channel2?lastl8:lastl8==nz(lastl8[1])?lastl8:na, color=black, linewidth=1, style=linebr, title="Candle body resistance level bottom", offset=0)
//fill(ul2, ll2, color=black, transp=95, title="Candle body resistance Channel")

//-----------------Support and Resistance 
RST = input(title='Support / Resistance length:',  defval=10) 
RSTT = valuewhen(high >= highest(high, RST), high, 0)
RSTB = valuewhen(low <= lowest(low, RST), low, 0)
RT2 = plot(RSTT, color=RSTT != RSTT[1] ? na : red, linewidth=1, offset=+0)
RB2 = plot(RSTB, color=RSTB != RSTB[1] ? na : green, linewidth=1, offset=0)

//--------------------Trend colour ema------------------------------------------------// 
src0 = close, len0 = input(13, minval=1, title="EMA 1")
ema0 = ema(src0, len0)
direction = rising(ema0, 2) ? +1 : falling(ema0, 2) ? -1 : 0
plot_color = direction > 0  ? lime: direction < 0 ? red : na
plot(ema0, title="EMA", style=line, linewidth=1, color = plot_color)

//-------------------- ema 2------------------------------------------------//
src02 = close, len02 = input(21, minval=1, title="EMA 2")
ema02 = ema(src02, len02)
direction2 = rising(ema02, 2) ? +1 : falling(ema02, 2) ? -1 : 0
plot_color2 = direction2 > 0  ? lime: direction2 < 0 ? red : na
plot(ema02, title="EMA Signal 2", style=line, linewidth=1, color = plot_color2)

//=============Hull MA//
show_hma = input(false, title="Display Hull MA Set:")
hma_src = input(close, title="Hull MA's Source:")
hma_base_length = input(8, minval=1, title="Hull MA's Base Length:")
hma_length_scalar = input(5, minval=0, title="Hull MA's Length Scalar:")
hullma(src, length)=>wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length)))
plot(not show_hma ? na : hullma(hma_src, hma_base_length+hma_length_scalar*6), color=black, linewidth=2, title="Hull MA")

//============ signal Generator ==================================//
Period=input('60')
ch1 = request.security(syminfo.tickerid, Period, open)
ch2 = request.security(syminfo.tickerid, Period, close)
longCondition = crossover(request.security(syminfo.tickerid, Period, close),request.security(syminfo.tickerid, Period, open))
if (longCondition)
    strategy.entry("BUY", strategy.long)
shortCondition = crossunder(request.security(syminfo.tickerid, Period, close),request.security(syminfo.tickerid, Period, open))
if (shortCondition)
    strategy.entry("SELL", strategy.short)

plot(request.security(syminfo.tickerid, Period, close), color=red, title="Period request.security Close")
plot(request.security(syminfo.tickerid, Period, open), color=green, title="Period request.security Open")

///////////////////////////////////////////////////////////////////////////////////////////