
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.
Chiến lược này được xây dựng dựa trên những điểm sau:
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.
Ư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.
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.
Độ 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.
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.
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.
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:
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.
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.
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.
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ố.
Chiến lược này có thể được tối ưu hóa bằng cách:
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.
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.
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.
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ẽ.
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.
/*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")
///////////////////////////////////////////////////////////////////////////////////////////