Chiến lược đảo ngược va chạm nhiều chỉ số

Tác giả:ChaoZhang, Ngày: 2024-01-04 18:02:12
Tags:

img

Tổng quan

Chiến lược này được thiết kế như một chiến lược đảo ngược hiệu quả bằng cách kết hợp các tín hiệu hai chỉ số. Nó tích hợp một tín hiệu đảo ngược dựa trên các chỉ số chứng khoán và một hệ thống theo dõi số ngày tăng liên tiếp. Chiến lược sẽ chỉ đặt lệnh khi cả hai tín hiệu kích hoạt mua hoặc bán đồng thời. Cơ chế va chạm đa chỉ số này có thể lọc hiệu quả một số tín hiệu không hợp lệ và cải thiện tỷ lệ thắng.

Nguyên tắc

Chiến lược bao gồm hai phần. Phần đầu tiên là hệ thống đảo ngược 123, quan sát sự thay đổi giá đóng trong hai ngày qua, cũng như giá trị của chỉ số stochastic chậm 3 giai đoạn. Cụ thể, khi kết thúc ngày hôm qua thấp hơn 2 ngày trước và kết thúc ngày hôm nay cao hơn ngày hôm qua, và stochastic chậm 9 giai đoạn dưới 50, đi dài; ngược lại, khi kết thúc ngày hôm nay thấp hơn ngày hôm qua và stochastic nhanh hơn 50, đi ngắn.

Chỉ số thứ hai theo dõi số ngày liên tiếp tăng gần đây trong n ngày. Nếu n ngày cuối cùng đều tăng, nó sẽ ra 1, nếu không thì 0.

Cuối cùng, chiến lược sẽ chỉ thực hiện giao dịch khi tín hiệu đảo ngược 123 và số ngày tăng liên tiếp đều hiển thị trạng thái mua hoặc bán đồng thời. Cách tiếp cận cân nhắc va chạm nhiều chỉ số này có thể lọc một số tín hiệu không hợp lệ và cải thiện sự ổn định tổng thể của chiến lược.

Phân tích lợi thế

Ưu điểm lớn nhất của chiến lược kết hợp nhiều chỉ số này là nó có thể cải thiện độ tin cậy của tín hiệu bằng cách lọc ra một số tín hiệu không hợp lệ.

  1. Bản thân 123 đảo ngược có một số khả năng sàng lọc để tránh nhiễu nhiễu. Kết hợp với bộ đếm ngày liên tiếp, nó có thể xác định thêm xu hướng và tránh sự đảo ngược.

  2. Các thông số ngẫu nhiên của so sánh đường nhanh và chậm 9 ngày và 3 ngày có thể làm trơn tru các thay đổi thông số và tránh biến động ngắn hạn và tăng cường ổn định.

  3. Các thông số tùy chỉnh bao gồm cổ phiếu, số ngày tăng thông số cho phép thích nghi với các thị trường khác nhau.

  4. Có thể giao dịch cả hai hướng cung cấp nhiều cơ hội bán ngắn hơn.

Phân tích rủi ro

Ngoài ra còn có một số rủi ro cho chiến lược này:

  1. Sự kết hợp nhiều chỉ số, trong khi tăng độ chính xác tín hiệu, cũng có thể bỏ lỡ một số cơ hội và hạn chế lợi nhuận.

  2. Các tín hiệu đảo ngược có rủi ro cố hữu bị mắc kẹt, đòi hỏi phải dừng lỗ để kiểm soát rủi ro.

  3. Cài đặt tham số không chính xác có thể ảnh hưởng đến hiệu suất đòi hỏi phải điều chỉnh giữa các thị trường.

  4. Giữ các vị trí dài hạn mà không dừng lỗ kịp thời hoặc theo đuổi sự đảo ngược cổ phiếu cũng mang lại rủi ro.

Theo đó, các biện pháp sau đây có thể được thực hiện để giảm thiểu rủi ro:

  1. Nới lỏng các điều kiện tham số phù hợp để giữ lại nhiều cơ hội giao dịch hơn.

  2. Đặt điểm dừng lỗ để giới hạn mỗi lỗ giao dịch.

  3. Tối ưu hóa các tham số và thiết lập các quy tắc tham số cho các thị trường khác nhau.

  4. Tránh giữ một cổ phiếu duy nhất trong thời gian dài và duy trì thanh khoản.

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

Vẫn còn tiềm năng lớn để tối ưu hóa chiến lược đảo ngược đa chỉ số này, chủ yếu từ các khía cạnh sau:

  1. Kiểm tra nhiều kết hợp chỉ số hơn để tìm phù hợp hơn.

  2. Sử dụng các thuật toán máy học để tự động tối ưu hóa các thông số.

  3. Thêm các điều kiện dừng lỗ và lấy lợi nhuận để tăng độ bền.

  4. Kiểm tra các khung thời gian khác nhau trong phần chỉ số xu hướng.

  5. Đánh giá tính áp dụng trên các chỉ số chứng khoán, ngoại hối, hàng hóa, tiền điện tử.

  6. Thiết kế các chiến lược tổng hợp điều chỉnh năng động phân bổ trên nhiều thị trường đồng thời.

Tóm lại

Chiến lược này kết hợp nhiều chỉ số một cách khéo léo để thiết kế một chiến lược giao dịch đảo ngược hiệu quả nhưng ổn định. So với chỉ số duy nhất, cơ chế va chạm nhiều chỉ số lọc hiệu quả các tín hiệu sai. Trong khi đó, chiến lược này cũng cập nhật các phương pháp đảo ngược truyền thống bằng cách thêm các chỉ số xu hướng mới để xác nhận tín hiệu. Với tối ưu hóa tham số, dừng lỗ, thích nghi trên các thị trường và hơn thế nữa, đây trở thành một bộ công cụ giao dịch định lượng mạnh mẽ.


/*backtest
start: 2022-12-28 00:00:00
end: 2024-01-03 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 26/03/2021
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// Evaluates for n number of consecutive higher closes. Returns a value 
// of 1 when the condition is true or 0 when false.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos


NBU(nLength) =>
    pos = 0.0
    nCounter = 0
    nCounter :=  iff(close[1] >= open[1], nz(nCounter[1],0)+1,
                  iff(close[1] < open[1], 0, nCounter))
    C1 = iff(nCounter >= nLength, 1, 0)
    posprice = 0.0
    posprice := iff(C1== 1, close, nz(posprice[1], 0)) 
    pos := iff(posprice > 0, 1, 0)
    pos

strategy(title="Combo Backtest 123 Reversal & N Bars Up", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- N Bars Up ----")
nLength = input(4, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posNBU = NBU(nLength)
pos = iff(posReversal123 == 1 and posNBU == 1 , 1,
	   iff(posReversal123 == -1 and posNBU == -1, -1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1 ) 
    strategy.entry("Long", strategy.long)
if (possig == -1 )
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

Thêm nữa